@apex-inc/mcp-server 0.3.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -119
- package/dist/api-client.d.ts +33 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +87 -4
- package/dist/api-client.js.map +1 -1
- package/dist/index.js +13 -6
- package/dist/index.js.map +1 -1
- package/dist/resources.d.ts +26 -0
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +96 -0
- package/dist/resources.js.map +1 -1
- package/dist/tools.d.ts +873 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +909 -5
- package/dist/tools.js.map +1 -1
- package/package.json +10 -8
- package/skills/apex-communications/SKILL.md +127 -0
- package/skills/apex-experimentation/SKILL.md +9 -0
- package/skills/apex-growth-intelligence/SKILL.md +116 -0
- package/skills/apex-growth-tracking/SKILL.md +59 -3
- package/skills/apex-integration-cookbook/SKILL.md +240 -0
- package/skills/apex-journeys/SKILL.md +169 -0
- package/skills/apex-partner-network/SKILL.md +191 -0
package/README.md
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
# @apex-inc/mcp-server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
MCP server for Apex — currently in **private beta**.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Access
|
|
6
|
+
|
|
7
|
+
Apex is invite-only during the private-beta period. If you received an invite, your onboarding email contains the `APEX_URL` and `APEX_API_KEY` values you'll need below. Full documentation for tools, resources, and prompts is available in-app once your account is active.
|
|
8
|
+
|
|
9
|
+
Not in the beta yet? Request access at [apex.inc](https://apex.inc) (coming soon).
|
|
6
10
|
|
|
7
11
|
## Install
|
|
8
12
|
|
|
@@ -12,7 +16,7 @@ npm install @apex-inc/mcp-server
|
|
|
12
16
|
|
|
13
17
|
## Configure
|
|
14
18
|
|
|
15
|
-
Add to `.cursor/mcp.json
|
|
19
|
+
Add to `.cursor/mcp.json` (or your MCP client's equivalent):
|
|
16
20
|
|
|
17
21
|
```json
|
|
18
22
|
{
|
|
@@ -22,8 +26,7 @@ Add to `.cursor/mcp.json`:
|
|
|
22
26
|
"args": ["@apex-inc/mcp-server"],
|
|
23
27
|
"env": {
|
|
24
28
|
"APEX_URL": "https://your-apex-instance.com",
|
|
25
|
-
"
|
|
26
|
-
"APEX_API_KEY": "apex_key_your_key_here",
|
|
29
|
+
"APEX_API_KEY": "your-api-key",
|
|
27
30
|
"APEX_PROJECT_KEY": "your-project-key"
|
|
28
31
|
}
|
|
29
32
|
}
|
|
@@ -31,120 +34,11 @@ Add to `.cursor/mcp.json`:
|
|
|
31
34
|
}
|
|
32
35
|
```
|
|
33
36
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
|
37
|
-
|
|
38
|
-
| `
|
|
39
|
-
| `APEX_API_KEY` | Recommended | API key for authenticated access |
|
|
40
|
-
| `APEX_PROJECT_KEY` | No | Project key for multi-project setups (default: `default`) |
|
|
41
|
-
|
|
42
|
-
## MCP Tools (19)
|
|
43
|
-
|
|
44
|
-
### Growth Intelligence
|
|
45
|
-
|
|
46
|
-
Query the persistent knowledge system — beliefs, predictions, calibration, and recommendations.
|
|
47
|
-
|
|
48
|
-
| Tool | Description |
|
|
49
|
-
|------|-------------|
|
|
50
|
-
| `suggest_experiment` | Context-aware experiment recommendations based on beliefs, past results, and confidence gaps |
|
|
51
|
-
| `predict_impact` | Decision guardrail — predict impact using historical experiment data before committing |
|
|
52
|
-
| `evaluate_feature` | Pre-build intelligence — evaluate a feature idea against the belief graph |
|
|
53
|
-
| `create_belief` | Record a belief (confirms statement and confidence with user first) |
|
|
54
|
-
| `log_prediction` | Log a prediction — feeds the calibration loop tracking team accuracy |
|
|
55
|
-
| `record_outcome` | Record outcome with Bayesian belief update |
|
|
56
|
-
|
|
57
|
-
### Experiment Engine
|
|
58
|
-
|
|
59
|
-
Design, run, and measure controlled experiments.
|
|
60
|
-
|
|
61
|
-
| Tool | Description |
|
|
62
|
-
|------|-------------|
|
|
63
|
-
| `plan_experiment` | Analyze a goal against beliefs and experiments, returns structured options |
|
|
64
|
-
| `start_reasoning` | Record a belief → hypothesis chain |
|
|
65
|
-
| `create_experiment` | Create an A/B test — supports `preview=true` for dry run |
|
|
66
|
-
| `activate_experiment` | Launch an experiment (changes draft → running) |
|
|
67
|
-
| `pause_experiment` | Pause a running experiment (all visitors see control) |
|
|
68
|
-
| `list_experiments` | List experiments with status and results. Pass `status: "archived"` or `"all"` |
|
|
69
|
-
| `get_results` | Detailed results for a specific experiment |
|
|
70
|
-
| `promote_winner` | Mark the winning variant and complete the experiment |
|
|
71
|
-
| `archive_experiment` | Archive an experiment (preserves all data and belief connections) |
|
|
72
|
-
|
|
73
|
-
### Deployment & Tracking
|
|
74
|
-
|
|
75
|
-
| Tool | Description |
|
|
76
|
-
|------|-------------|
|
|
77
|
-
| `track_deployment` | Record that experiment code has been committed and pushed |
|
|
78
|
-
| `check_deployment` | Verify the experiment assignment endpoint is reachable |
|
|
79
|
-
| `track_event` | Track a custom event (identical to SDK `track()` and snippet `apex.track()`) |
|
|
80
|
-
| `identify_user` | Identify a user by email for identity stitching |
|
|
81
|
-
|
|
82
|
-
## Shipped skills (Cursor / AI assistants)
|
|
83
|
-
|
|
84
|
-
Markdown skills ship in **`skills/`** inside this package (e.g. `skills/apex-experimentation/SKILL.md`). Copy each skill folder into **`.cursor/skills/<skill-name>/`** so your assistant learns when to suggest experiments and how to instrument tracking.
|
|
85
|
-
|
|
86
|
-
Your Apex app also serves the same files at **`/shipped-skills/<skill-id>/SKILL.md`** (see **Install → JSON** response from `/api/mcp-install` for URLs and install steps).
|
|
87
|
-
|
|
88
|
-
Set **`APEX_URL`** to your Apex base URL (the MCP client uses this; **`APEX_API_URL`** is accepted for compatibility).
|
|
89
|
-
|
|
90
|
-
## MCP Resources (6)
|
|
91
|
-
|
|
92
|
-
| URI | Name | Description |
|
|
93
|
-
|-----|------|-------------|
|
|
94
|
-
| `apex://beliefs` | Assumptions | All tracked assumptions with certainty scores and test status |
|
|
95
|
-
| `apex://experiments/active` | Running Experiments | Currently running experiments with results and assumption linkages |
|
|
96
|
-
| `apex://ledger` | Learning Log | History of everything learned from experiments — decisions, reasoning, belief updates |
|
|
97
|
-
| `apex://intelligence-score` | Learning Rate | How much of what you assume has been tested, and how fast you're learning |
|
|
98
|
-
| `apex://intelligence` | Growth Intelligence | Full intelligence metrics: score breakdown, revenue data, learning velocity |
|
|
99
|
-
| `apex://calibration` | Prediction Calibration | Prediction accuracy and calibration data — how well predictions match reality |
|
|
100
|
-
|
|
101
|
-
## MCP Prompts (2)
|
|
102
|
-
|
|
103
|
-
| Prompt | Description |
|
|
104
|
-
|--------|-------------|
|
|
105
|
-
| `new-experiment` | Interactive experiment setup — guides through belief selection, prediction, variant design, and deployment |
|
|
106
|
-
| `experiment-review` | Review results, update beliefs, promote winners, and plan next steps |
|
|
107
|
-
|
|
108
|
-
## Example Workflows
|
|
109
|
-
|
|
110
|
-
### Interactive experiment creation
|
|
111
|
-
|
|
112
|
-
```
|
|
113
|
-
You: "I want to test a new headline on the landing page"
|
|
114
|
-
|
|
115
|
-
Step 1 — AI calls plan_experiment({ goal: "test headline on landing page" })
|
|
116
|
-
→ Returns: suggested beliefs, metrics, confidence levels, traffic splits
|
|
117
|
-
→ AI presents these as structured choices
|
|
118
|
-
|
|
119
|
-
Step 2 — You choose belief, confidence, and metric
|
|
120
|
-
→ AI calls start_reasoning with your choices
|
|
121
|
-
→ AI asks: "Want to log a prediction?"
|
|
122
|
-
|
|
123
|
-
Step 3 — You pick metric and expected impact
|
|
124
|
-
→ AI calls log_prediction with your inputs
|
|
125
|
-
|
|
126
|
-
Step 4 — AI proposes variant headlines for you to choose
|
|
127
|
-
→ You pick one or write your own
|
|
128
|
-
|
|
129
|
-
Step 5 — AI calls create_experiment({ ..., preview: true })
|
|
130
|
-
→ Shows the full plan — you confirm → create_experiment({ ..., preview: false })
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### Decision guardrail before a change
|
|
134
|
-
|
|
135
|
-
```
|
|
136
|
-
Developer: "Let's increase signup form fields from 3 to 5"
|
|
137
|
-
→ AI calls predict_impact({ description: "increase signup form fields from 3 to 5" })
|
|
138
|
-
→ Returns: "Similar experiments decreased activation by 18%. Recommendation: RECONSIDER"
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### Pre-build feature evaluation
|
|
142
|
-
|
|
143
|
-
```
|
|
144
|
-
Developer: "Should we build a freemium tier?"
|
|
145
|
-
→ AI calls evaluate_feature({ feature: "freemium pricing tier", targetMetric: "activation" })
|
|
146
|
-
→ Returns: belief graph analysis, historical evidence, confidence gaps, and suggestion
|
|
147
|
-
```
|
|
37
|
+
| Variable | Required | Notes |
|
|
38
|
+
|----------|----------|-------|
|
|
39
|
+
| `APEX_URL` | Yes | Your Apex instance URL (provided in your invite) |
|
|
40
|
+
| `APEX_API_KEY` | Yes | API key generated in your Apex dashboard |
|
|
41
|
+
| `APEX_PROJECT_KEY` | No | Defaults to your first project |
|
|
148
42
|
|
|
149
43
|
## License
|
|
150
44
|
|
package/dist/api-client.d.ts
CHANGED
|
@@ -1,8 +1,41 @@
|
|
|
1
|
+
interface OrgInfo {
|
|
2
|
+
orgId: string;
|
|
3
|
+
orgName: string;
|
|
4
|
+
orgIcon?: string;
|
|
5
|
+
role: string;
|
|
6
|
+
projects: Array<{
|
|
7
|
+
projectKey: string;
|
|
8
|
+
name: string;
|
|
9
|
+
url: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
interface UserContext {
|
|
13
|
+
userId: string;
|
|
14
|
+
userEmail: string;
|
|
15
|
+
orgs: OrgInfo[];
|
|
16
|
+
}
|
|
1
17
|
export declare function setActiveProject(projectKey: string): void;
|
|
2
18
|
export declare function getActiveProject(): string | undefined;
|
|
19
|
+
export declare function setActiveOrg(orgId: string): void;
|
|
20
|
+
export declare function getActiveOrg(): string | undefined;
|
|
21
|
+
export declare function getUserContext(): UserContext | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Discover orgs and projects on startup.
|
|
24
|
+
* Only works with user keys (apex_uk_). Falls back gracefully for org keys.
|
|
25
|
+
*/
|
|
26
|
+
export declare function discoverContext(): Promise<string | undefined>;
|
|
3
27
|
export declare function sendStartupPing(): Promise<void>;
|
|
4
28
|
export declare function apiGet<T>(path: string): Promise<T>;
|
|
5
29
|
export declare function apiPost<T>(path: string, body: unknown): Promise<T>;
|
|
30
|
+
/**
|
|
31
|
+
* MMP-085 — POST with an `idempotency-key` header.
|
|
32
|
+
*
|
|
33
|
+
* Used by Server Sensor tooling so retried agent calls don't
|
|
34
|
+
* double-count. Pass a stable key per logical operation (e.g.
|
|
35
|
+
* `${runId}:${eventType}`).
|
|
36
|
+
*/
|
|
37
|
+
export declare function postWithIdempotency<T>(path: string, idempotencyKey: string, body: unknown): Promise<T>;
|
|
6
38
|
export declare function apiDelete(path: string): Promise<void>;
|
|
7
39
|
export declare function apiPatch<T>(path: string, body: unknown): Promise<T>;
|
|
40
|
+
export {};
|
|
8
41
|
//# sourceMappingURL=api-client.d.ts.map
|
package/dist/api-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAIA,UAAU,OAAO;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAID,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,QAElD;AAED,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAErD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,QAMzC;AAED,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,SAAS,CAExD;AAUD;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAwBnE;AA2BD,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAUrD;AAED,wBAAsB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CASxD;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAWxE;AAED;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,CAAC,CAAC,CAeZ;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS3D;AAED,wBAAsB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAWzE"}
|
package/dist/api-client.js
CHANGED
|
@@ -1,14 +1,26 @@
|
|
|
1
|
-
// Resolve the Apex API URL. Supports APEX_URL and APEX_API_URL env vars,
|
|
2
|
-
// with fallback to localhost. When the user migrates to a custom domain
|
|
3
|
-
// (e.g. apex.inc), they only need to update this env var in their MCP config.
|
|
4
1
|
const BASE_URL = process.env.APEX_URL || process.env.APEX_API_URL || "http://localhost:3001";
|
|
5
2
|
let activeProjectKey = process.env.APEX_PROJECT_KEY;
|
|
3
|
+
let activeOrgId;
|
|
4
|
+
let userContext;
|
|
6
5
|
export function setActiveProject(projectKey) {
|
|
7
6
|
activeProjectKey = projectKey;
|
|
8
7
|
}
|
|
9
8
|
export function getActiveProject() {
|
|
10
9
|
return activeProjectKey;
|
|
11
10
|
}
|
|
11
|
+
export function setActiveOrg(orgId) {
|
|
12
|
+
activeOrgId = orgId;
|
|
13
|
+
const org = userContext?.orgs.find((o) => o.orgId === orgId);
|
|
14
|
+
if (org?.projects.length) {
|
|
15
|
+
activeProjectKey = org.projects[0].projectKey;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function getActiveOrg() {
|
|
19
|
+
return activeOrgId;
|
|
20
|
+
}
|
|
21
|
+
export function getUserContext() {
|
|
22
|
+
return userContext;
|
|
23
|
+
}
|
|
12
24
|
function authHeaders() {
|
|
13
25
|
const key = process.env.APEX_API_KEY;
|
|
14
26
|
const headers = { "x-apex-source": "mcp-server" };
|
|
@@ -18,6 +30,54 @@ function authHeaders() {
|
|
|
18
30
|
headers["x-apex-project"] = activeProjectKey;
|
|
19
31
|
return headers;
|
|
20
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Discover orgs and projects on startup.
|
|
35
|
+
* Only works with user keys (apex_uk_). Falls back gracefully for org keys.
|
|
36
|
+
*/
|
|
37
|
+
export async function discoverContext() {
|
|
38
|
+
const key = process.env.APEX_API_KEY;
|
|
39
|
+
if (!key?.startsWith("apex_uk_"))
|
|
40
|
+
return undefined;
|
|
41
|
+
try {
|
|
42
|
+
const res = await fetch(`${BASE_URL}/api/user/orgs`, {
|
|
43
|
+
headers: { ...authHeaders() },
|
|
44
|
+
});
|
|
45
|
+
if (!res.ok)
|
|
46
|
+
return undefined;
|
|
47
|
+
userContext = (await res.json());
|
|
48
|
+
if (userContext.orgs.length > 0) {
|
|
49
|
+
const firstOrg = userContext.orgs[0];
|
|
50
|
+
activeOrgId = firstOrg.orgId;
|
|
51
|
+
if (!activeProjectKey && firstOrg.projects.length > 0) {
|
|
52
|
+
activeProjectKey = firstOrg.projects[0].projectKey;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return buildStartupMessage();
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function buildStartupMessage() {
|
|
62
|
+
if (!userContext)
|
|
63
|
+
return "Connected to Apex.";
|
|
64
|
+
const { userEmail, orgs } = userContext;
|
|
65
|
+
const activeOrg = orgs.find((o) => o.orgId === activeOrgId);
|
|
66
|
+
if (!activeOrg)
|
|
67
|
+
return `Connected as ${userEmail}. No organizations found.`;
|
|
68
|
+
const projectCount = activeOrg.projects.length;
|
|
69
|
+
const orgCount = orgs.length;
|
|
70
|
+
let msg = `Connected as ${userEmail} — active org: ${activeOrg.orgName} (${projectCount} project${projectCount !== 1 ? "s" : ""})`;
|
|
71
|
+
if (activeProjectKey) {
|
|
72
|
+
const proj = activeOrg.projects.find((p) => p.projectKey === activeProjectKey);
|
|
73
|
+
if (proj)
|
|
74
|
+
msg += `, active project: ${proj.name}`;
|
|
75
|
+
}
|
|
76
|
+
if (orgCount > 1) {
|
|
77
|
+
msg += `. You have access to ${orgCount} orgs — use switch_org to change.`;
|
|
78
|
+
}
|
|
79
|
+
return msg;
|
|
80
|
+
}
|
|
21
81
|
export async function sendStartupPing() {
|
|
22
82
|
try {
|
|
23
83
|
await fetch(`${BASE_URL}/api/mcp-ping`, {
|
|
@@ -27,7 +87,7 @@ export async function sendStartupPing() {
|
|
|
27
87
|
});
|
|
28
88
|
}
|
|
29
89
|
catch {
|
|
30
|
-
// fire-and-forget
|
|
90
|
+
// fire-and-forget
|
|
31
91
|
}
|
|
32
92
|
}
|
|
33
93
|
export async function apiGet(path) {
|
|
@@ -52,6 +112,29 @@ export async function apiPost(path, body) {
|
|
|
52
112
|
}
|
|
53
113
|
return res.json();
|
|
54
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* MMP-085 — POST with an `idempotency-key` header.
|
|
117
|
+
*
|
|
118
|
+
* Used by Server Sensor tooling so retried agent calls don't
|
|
119
|
+
* double-count. Pass a stable key per logical operation (e.g.
|
|
120
|
+
* `${runId}:${eventType}`).
|
|
121
|
+
*/
|
|
122
|
+
export async function postWithIdempotency(path, idempotencyKey, body) {
|
|
123
|
+
const res = await fetch(`${BASE_URL}${path}`, {
|
|
124
|
+
method: "POST",
|
|
125
|
+
headers: {
|
|
126
|
+
"Content-Type": "application/json",
|
|
127
|
+
"idempotency-key": idempotencyKey,
|
|
128
|
+
...authHeaders(),
|
|
129
|
+
},
|
|
130
|
+
body: JSON.stringify(body),
|
|
131
|
+
});
|
|
132
|
+
if (!res.ok) {
|
|
133
|
+
const text = await res.text().catch(() => "");
|
|
134
|
+
throw new Error(`POST ${path} failed (${res.status}): ${text}`);
|
|
135
|
+
}
|
|
136
|
+
return res.json();
|
|
137
|
+
}
|
|
55
138
|
export async function apiDelete(path) {
|
|
56
139
|
const res = await fetch(`${BASE_URL}${path}`, {
|
|
57
140
|
method: "DELETE",
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,13 +5,16 @@ import { z } from "zod";
|
|
|
5
5
|
import { toolDefinitions } from "./tools.js";
|
|
6
6
|
import { resourceDefinitions } from "./resources.js";
|
|
7
7
|
import { promptDefinitions } from "./prompts.js";
|
|
8
|
-
import { sendStartupPing } from "./api-client.js";
|
|
9
|
-
const server = new McpServer({ name: "apex", version: "0.
|
|
8
|
+
import { sendStartupPing, discoverContext } from "./api-client.js";
|
|
9
|
+
const server = new McpServer({ name: "apex", version: "0.6.1" }, {
|
|
10
10
|
instructions: [
|
|
11
|
-
"You are connected to the Apex growth platform.",
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
11
|
+
"You are connected to the Apex growth platform, which manages A/B tests and growth experiments.",
|
|
12
|
+
"Only use these tools when the user's request is explicitly about Apex, experiments, A/B tests,",
|
|
13
|
+
"variants, or graduating experiment changes. Do NOT call any Apex tool — especially list_experiments —",
|
|
14
|
+
"for unrelated coding, debugging, or product work that does not mention experiments or Apex.",
|
|
15
|
+
"When the user does ask about their experiments (e.g. 'what experiments are running?',",
|
|
16
|
+
"'check Apex', 'any experiments ready to graduate?'), use list_experiments to check their status.",
|
|
17
|
+
"If any experiments show PENDING GRADUATION in that context, mention them and offer to",
|
|
15
18
|
"make the winning changes permanent using graduate_experiment.",
|
|
16
19
|
"Graduation is optional — the Apex snippet keeps serving the winner — but graduating",
|
|
17
20
|
"removes the runtime dependency and makes the changes part of the source code.",
|
|
@@ -45,6 +48,10 @@ server.prompt("experiment-review", "Review experiment results, see what you lear
|
|
|
45
48
|
async function main() {
|
|
46
49
|
const transport = new StdioServerTransport();
|
|
47
50
|
await server.connect(transport);
|
|
51
|
+
const startupMsg = await discoverContext();
|
|
52
|
+
if (startupMsg) {
|
|
53
|
+
console.error(`[apex] ${startupMsg}`);
|
|
54
|
+
}
|
|
48
55
|
sendStartupPing();
|
|
49
56
|
}
|
|
50
57
|
main().catch((err) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAClC;IACE,YAAY,EAAE;QACZ,gGAAgG;QAChG,gGAAgG;QAChG,uGAAuG;QACvG,6FAA6F;QAC7F,uFAAuF;QACvF,kGAAkG;QAClG,uFAAuF;QACvF,+DAA+D;QAC/D,qFAAqF;QACrF,+EAA+E;KAChF,CAAC,IAAI,CAAC,GAAG,CAAC;CACZ,CACF,CAAC;AAEF,yBAAyB;AAEzB,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;IAC1D,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAA6B,EAAE,EAAE;QAC3F,IAAI,CAAC;YACH,OAAO,MAAM,GAAG,CAAC,OAAO,CAAC,IAAa,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;gBAC/D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,6BAA6B;AAE7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC;IACrD,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,EAAE;QACtG,OAAO,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,2BAA2B;AAE3B,MAAM,CAAC,MAAM,CACX,gBAAgB,EAChB,+FAA+F,EAC/F,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,EACxE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAA8B,CAAC,CACtF,CAAC;AAEF,MAAM,CAAC,MAAM,CACX,mBAAmB,EACnB,6EAA6E,EAC7E,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,EACpE,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,IAA8B,CAAC,CACzF,CAAC;AAEF,gBAAgB;AAEhB,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,eAAe,EAAE,CAAC;IAC3C,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,eAAe,EAAE,CAAC;AACpB,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/resources.d.ts
CHANGED
|
@@ -77,5 +77,31 @@ export declare const resourceDefinitions: {
|
|
|
77
77
|
}[];
|
|
78
78
|
}>;
|
|
79
79
|
};
|
|
80
|
+
communications: {
|
|
81
|
+
uri: string;
|
|
82
|
+
name: string;
|
|
83
|
+
description: string;
|
|
84
|
+
mimeType: string;
|
|
85
|
+
handler: () => Promise<{
|
|
86
|
+
contents: {
|
|
87
|
+
uri: string;
|
|
88
|
+
text: string;
|
|
89
|
+
mimeType: string;
|
|
90
|
+
}[];
|
|
91
|
+
}>;
|
|
92
|
+
};
|
|
93
|
+
communicationEvents: {
|
|
94
|
+
uri: string;
|
|
95
|
+
name: string;
|
|
96
|
+
description: string;
|
|
97
|
+
mimeType: string;
|
|
98
|
+
handler: () => Promise<{
|
|
99
|
+
contents: {
|
|
100
|
+
uri: string;
|
|
101
|
+
text: string;
|
|
102
|
+
mimeType: string;
|
|
103
|
+
}[];
|
|
104
|
+
}>;
|
|
105
|
+
};
|
|
80
106
|
};
|
|
81
107
|
//# sourceMappingURL=resources.d.ts.map
|
package/dist/resources.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AA8EA,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AA8EA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+T/B,CAAC"}
|
package/dist/resources.js
CHANGED
|
@@ -182,5 +182,101 @@ export const resourceDefinitions = {
|
|
|
182
182
|
};
|
|
183
183
|
},
|
|
184
184
|
},
|
|
185
|
+
// ─── Communications ─────────────────────────────────────────────────────────
|
|
186
|
+
communications: {
|
|
187
|
+
uri: "apex://communications",
|
|
188
|
+
name: "Communications",
|
|
189
|
+
description: "Tenant communications — lifecycle emails and push notifications with status, channels, and trigger events.",
|
|
190
|
+
mimeType: "application/json",
|
|
191
|
+
handler: async () => {
|
|
192
|
+
try {
|
|
193
|
+
const comms = await apiGet("/api/communications");
|
|
194
|
+
const list = Array.isArray(comms) ? comms : [];
|
|
195
|
+
const summary = {
|
|
196
|
+
total: list.length,
|
|
197
|
+
byStatus: list.reduce((acc, c) => {
|
|
198
|
+
const s = c.status || "unknown";
|
|
199
|
+
acc[s] = (acc[s] || 0) + 1;
|
|
200
|
+
return acc;
|
|
201
|
+
}, {}),
|
|
202
|
+
communications: list.map((c) => ({
|
|
203
|
+
id: c.id,
|
|
204
|
+
title: c.title,
|
|
205
|
+
status: c.status,
|
|
206
|
+
channels: c.channels,
|
|
207
|
+
triggerEventId: c.triggerEventId,
|
|
208
|
+
journeyStage: c.journeyStage,
|
|
209
|
+
})),
|
|
210
|
+
};
|
|
211
|
+
return {
|
|
212
|
+
contents: [{
|
|
213
|
+
uri: "apex://communications",
|
|
214
|
+
text: JSON.stringify(summary, null, 2),
|
|
215
|
+
mimeType: "application/json",
|
|
216
|
+
}],
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
return {
|
|
221
|
+
contents: [{
|
|
222
|
+
uri: "apex://communications",
|
|
223
|
+
text: JSON.stringify({ total: 0, communications: [], note: "No communications configured yet." }),
|
|
224
|
+
mimeType: "application/json",
|
|
225
|
+
}],
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
communicationEvents: {
|
|
231
|
+
uri: "apex://communications/events",
|
|
232
|
+
name: "Communication Events",
|
|
233
|
+
description: "Event taxonomy for the project's vertical plus integration tracking status — which events have been seen and which are missing.",
|
|
234
|
+
mimeType: "application/json",
|
|
235
|
+
handler: async () => {
|
|
236
|
+
try {
|
|
237
|
+
const [taxonomy, status] = await Promise.all([
|
|
238
|
+
apiGet("/api/communications/events").catch(() => []),
|
|
239
|
+
apiGet("/api/communications/events/status").catch(() => []),
|
|
240
|
+
]);
|
|
241
|
+
const taxList = Array.isArray(taxonomy) ? taxonomy : [];
|
|
242
|
+
const statusList = Array.isArray(status) ? status : [];
|
|
243
|
+
const statusMap = new Map(statusList.map((s) => [s.eventId, s]));
|
|
244
|
+
const events = taxList.map((t) => {
|
|
245
|
+
const tracking = statusMap.get(t.id);
|
|
246
|
+
return {
|
|
247
|
+
id: t.id,
|
|
248
|
+
name: t.name,
|
|
249
|
+
description: t.description,
|
|
250
|
+
sdkExample: t.sdkExample,
|
|
251
|
+
integrated: !!tracking,
|
|
252
|
+
totalCount: tracking ? tracking.totalCount : 0,
|
|
253
|
+
lastSeen: tracking ? tracking.lastSeen : null,
|
|
254
|
+
};
|
|
255
|
+
});
|
|
256
|
+
const integrated = events.filter((e) => e.integrated).length;
|
|
257
|
+
return {
|
|
258
|
+
contents: [{
|
|
259
|
+
uri: "apex://communications/events",
|
|
260
|
+
text: JSON.stringify({
|
|
261
|
+
totalEvents: events.length,
|
|
262
|
+
integrated,
|
|
263
|
+
missing: events.length - integrated,
|
|
264
|
+
events,
|
|
265
|
+
}, null, 2),
|
|
266
|
+
mimeType: "application/json",
|
|
267
|
+
}],
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
return {
|
|
272
|
+
contents: [{
|
|
273
|
+
uri: "apex://communications/events",
|
|
274
|
+
text: JSON.stringify({ totalEvents: 0, events: [], note: "No event taxonomy configured." }),
|
|
275
|
+
mimeType: "application/json",
|
|
276
|
+
}],
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
},
|
|
280
|
+
},
|
|
185
281
|
};
|
|
186
282
|
//# sourceMappingURL=resources.js.map
|
package/dist/resources.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
|