amplitude-cli 0.3.0 → 0.3.2
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 +25 -26
- package/dist/commands/auth.js +1 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/call.d.ts +10 -0
- package/dist/commands/call.js +48 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/charts.js +12 -15
- package/dist/commands/charts.js.map +1 -1
- package/dist/commands/cohorts.js +1 -1
- package/dist/commands/cohorts.js.map +1 -1
- package/dist/commands/query.d.ts +3 -0
- package/dist/commands/query.js +73 -82
- package/dist/commands/query.js.map +1 -1
- package/dist/commands/tools.d.ts +6 -0
- package/dist/commands/tools.js +67 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/users.js +4 -4
- package/dist/commands/users.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp-client.d.ts +17 -2
- package/dist/mcp-client.js +64 -13
- package/dist/mcp-client.js.map +1 -1
- package/dist/utils/errors.js +8 -3
- package/dist/utils/errors.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# amplitude-cli (`amp`)
|
|
2
2
|
|
|
3
|
-
CLI for querying Amplitude analytics data via Amplitude's MCP server. OAuth only — single auth method, no API keys needed. Designed for AI agents
|
|
3
|
+
CLI for querying Amplitude analytics data via Amplitude's MCP server. OAuth only — single auth method, no API keys needed. Designed for AI agents and humans alike.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -14,31 +14,12 @@ All commands use OAuth (via Amplitude's MCP server). Two ways to authenticate:
|
|
|
14
14
|
|
|
15
15
|
### Option 1: Environment variable (recommended for agents)
|
|
16
16
|
|
|
17
|
-
Set `AMPLITUDE_ACCESS_TOKEN` — typically injected via Nango
|
|
17
|
+
Set `AMPLITUDE_ACCESS_TOKEN` — typically injected via Nango:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
export AMPLITUDE_ACCESS_TOKEN="your-oauth-token"
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
#### OpenClaw integration
|
|
24
|
-
|
|
25
|
-
In `~/.openclaw/openclaw.json`:
|
|
26
|
-
|
|
27
|
-
```json
|
|
28
|
-
{
|
|
29
|
-
"skills": {
|
|
30
|
-
"entries": {
|
|
31
|
-
"amplitude": {
|
|
32
|
-
"enabled": true,
|
|
33
|
-
"env": {
|
|
34
|
-
"AMPLITUDE_ACCESS_TOKEN": "your-nango-token"
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
```
|
|
41
|
-
|
|
42
23
|
### Option 2: Interactive login (for humans)
|
|
43
24
|
|
|
44
25
|
```bash
|
|
@@ -48,12 +29,23 @@ amp auth login --region eu
|
|
|
48
29
|
|
|
49
30
|
Tokens are saved to `~/.amplituderc` and auto-refreshed.
|
|
50
31
|
|
|
32
|
+
## Global Options
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
amp --project-id <id> <command> # target a specific Amplitude project
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Or set `AMPLITUDE_PROJECT_ID` in the environment. If not set, the CLI auto-discovers from your token context.
|
|
39
|
+
|
|
51
40
|
## Usage
|
|
52
41
|
|
|
53
42
|
```bash
|
|
54
43
|
# Auth
|
|
55
44
|
amp auth status # check connection
|
|
56
|
-
|
|
45
|
+
|
|
46
|
+
# Tool discovery
|
|
47
|
+
amp tools list # list all available MCP tools
|
|
48
|
+
amp tools describe query_dataset # show input schema for a tool
|
|
57
49
|
|
|
58
50
|
# Events
|
|
59
51
|
amp events list # list all event types
|
|
@@ -73,11 +65,14 @@ amp query retention --start-event signup --return-event _active --from 2026-01-0
|
|
|
73
65
|
# Revenue
|
|
74
66
|
amp query revenue --from 2026-01-01 --to 2026-03-01 -m arpu
|
|
75
67
|
|
|
68
|
+
# Sessions
|
|
69
|
+
amp query sessions --from 2026-01-01 --to 2026-03-01
|
|
70
|
+
|
|
76
71
|
# Charts
|
|
77
|
-
amp charts search "DAU"
|
|
78
|
-
amp charts get abc123
|
|
79
|
-
amp charts query abc123
|
|
80
|
-
amp charts create --definition '{}' --
|
|
72
|
+
amp charts search "DAU"
|
|
73
|
+
amp charts get abc123
|
|
74
|
+
amp charts query abc123
|
|
75
|
+
amp charts create --definition '{}' --name "My Chart"
|
|
81
76
|
|
|
82
77
|
# Dashboards
|
|
83
78
|
amp dashboards search "KPIs"
|
|
@@ -97,6 +92,10 @@ amp experiments search "onboarding"
|
|
|
97
92
|
amp experiments get abc123
|
|
98
93
|
amp experiments results abc123
|
|
99
94
|
|
|
95
|
+
# Direct MCP tool calls (escape hatch)
|
|
96
|
+
amp call get_session_replays '{"filters": {}}'
|
|
97
|
+
amp call get_from_url '{"url": "https://app.amplitude.com/..."}'
|
|
98
|
+
|
|
100
99
|
# Output formats
|
|
101
100
|
amp query segment -e "signup" --from 2026-01-01 --to 2026-03-01 -f csv > signups.csv
|
|
102
101
|
amp query segment -e "purchase" --from 2026-01-01 --to 2026-03-01 -f compact | jq '.data'
|
package/dist/commands/auth.js
CHANGED
|
@@ -21,7 +21,7 @@ export function registerAuthCommands(program) {
|
|
|
21
21
|
console.error(`Scopes: ${oauthConfig.tokens.scope || "mcp:read mcp:write offline_access"}`);
|
|
22
22
|
// Verify by getting context
|
|
23
23
|
try {
|
|
24
|
-
const mcp = new AmplitudeMcpClient(oauthConfig.region);
|
|
24
|
+
const mcp = new AmplitudeMcpClient({ region: oauthConfig.region });
|
|
25
25
|
const ctx = await mcp.getContext();
|
|
26
26
|
const text = ctx.content?.[0]?.text;
|
|
27
27
|
if (text) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAiB,MAAM,mBAAmB,CAAC;AACjF,OAAO,EAAE,MAAM,EAAqB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IAE7E,uEAAuE;IAEvE,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,+CAA+C,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,IAAI,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,aAAa,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CACX,WAAW,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,mCAAmC,EAAE,CAC7E,CAAC;YAEF,4BAA4B;YAC5B,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,kBAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic MCP tool invocation — escape hatch for tools the CLI
|
|
3
|
+
* doesn't have dedicated convenience commands for.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* amp call <tool-name> '<json-args>'
|
|
7
|
+
* echo '<json>' | amp call <tool-name>
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from "commander";
|
|
10
|
+
export declare function registerCallCommand(program: Command): void;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic MCP tool invocation — escape hatch for tools the CLI
|
|
3
|
+
* doesn't have dedicated convenience commands for.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* amp call <tool-name> '<json-args>'
|
|
7
|
+
* echo '<json>' | amp call <tool-name>
|
|
8
|
+
*/
|
|
9
|
+
import { AmplitudeMcpClient } from "../mcp-client.js";
|
|
10
|
+
import { output } from "../utils/format.js";
|
|
11
|
+
import { extractMcpText } from "../utils/mcp-helpers.js";
|
|
12
|
+
import { handleError } from "../utils/errors.js";
|
|
13
|
+
export function registerCallCommand(program) {
|
|
14
|
+
program
|
|
15
|
+
.command("call <tool-name> [args-json]")
|
|
16
|
+
.description("Call any MCP tool directly (escape hatch for unwrapped tools)")
|
|
17
|
+
.option("-f, --format <format>", "Output format: json, compact, csv", "json")
|
|
18
|
+
.action(async (toolName, argsJson, opts) => {
|
|
19
|
+
try {
|
|
20
|
+
let args = {};
|
|
21
|
+
if (argsJson) {
|
|
22
|
+
args = JSON.parse(argsJson);
|
|
23
|
+
}
|
|
24
|
+
else if (!process.stdin.isTTY) {
|
|
25
|
+
const chunks = [];
|
|
26
|
+
for await (const chunk of process.stdin) {
|
|
27
|
+
chunks.push(chunk);
|
|
28
|
+
}
|
|
29
|
+
const raw = Buffer.concat(chunks).toString("utf-8").trim();
|
|
30
|
+
if (raw) {
|
|
31
|
+
args = JSON.parse(raw);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const mcp = new AmplitudeMcpClient();
|
|
35
|
+
const result = await mcp.callTool(toolName, args);
|
|
36
|
+
output(extractMcpText(result), opts.format);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
if (err instanceof SyntaxError) {
|
|
40
|
+
console.error("Error: Invalid JSON arguments.");
|
|
41
|
+
console.error("Usage: amp call <tool-name> '{\"key\": \"value\"}'");
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
handleError(err);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call.js","sourceRoot":"","sources":["../../src/commands/call.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAqB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,8BAA8B,CAAC;SACvC,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,QAAgB,EAAE,QAA4B,EAAE,IAAI,EAAE,EAAE;QACrE,IAAI,CAAC;YACH,IAAI,IAAI,GAA4B,EAAE,CAAC;YAEvC,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;gBAC/B,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3D,IAAI,GAAG,EAAE,CAAC;oBACR,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAClD,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAsB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;gBAC/B,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAChD,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/commands/charts.js
CHANGED
|
@@ -57,9 +57,8 @@ export function registerChartCommands(program) {
|
|
|
57
57
|
.command("create")
|
|
58
58
|
.description("Create a chart from a JSON definition (reads from stdin or --definition)")
|
|
59
59
|
.option("--definition <json>", "Chart definition as JSON string")
|
|
60
|
-
.option("--name <name>", "Chart name
|
|
60
|
+
.option("--name <name>", "Chart name")
|
|
61
61
|
.option("--description <desc>", "Chart description")
|
|
62
|
-
.option("--save", "Save the chart after creation", false)
|
|
63
62
|
.option("-f, --format <format>", "Output format: json, compact, csv", "json")
|
|
64
63
|
.action(async (opts) => {
|
|
65
64
|
try {
|
|
@@ -75,26 +74,24 @@ export function registerChartCommands(program) {
|
|
|
75
74
|
definition = JSON.parse(Buffer.concat(chunks).toString("utf-8"));
|
|
76
75
|
}
|
|
77
76
|
const mcp = new AmplitudeMcpClient();
|
|
78
|
-
console.error("
|
|
79
|
-
const result = await mcp.
|
|
77
|
+
console.error("Creating chart...");
|
|
78
|
+
const result = await mcp.createChart(definition);
|
|
80
79
|
const resultText = extractMcpText(result);
|
|
81
|
-
if (opts.
|
|
80
|
+
if (opts.name) {
|
|
82
81
|
const editId = extractEditId(resultText);
|
|
83
|
-
if (editId) {
|
|
84
|
-
console.error(
|
|
85
|
-
|
|
86
|
-
output(extractMcpText(saveResult), opts.format);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
console.error("Warning: Could not extract editId. Chart not saved.");
|
|
82
|
+
if (!editId) {
|
|
83
|
+
console.error("Error: Chart was created but no editId was returned. Cannot save with name.");
|
|
84
|
+
console.error("The chart data is printed below.");
|
|
90
85
|
output(resultText, opts.format);
|
|
86
|
+
process.exit(1);
|
|
91
87
|
}
|
|
88
|
+
console.error(`Saving chart as "${opts.name}"...`);
|
|
89
|
+
const saveResult = await mcp.saveChart(editId, opts.name, opts.description);
|
|
90
|
+
output(extractMcpText(saveResult), opts.format);
|
|
92
91
|
}
|
|
93
92
|
else {
|
|
94
93
|
output(resultText, opts.format);
|
|
95
|
-
|
|
96
|
-
console.error("\nChart previewed but not saved. Use --save --name 'Name' to save.");
|
|
97
|
-
}
|
|
94
|
+
console.error("\nChart created but not named. Use --name 'Name' to save permanently.");
|
|
98
95
|
}
|
|
99
96
|
}
|
|
100
97
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.js","sourceRoot":"","sources":["../../src/commands/charts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAqB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,qBAAqB,CAAC,OAAgB;IACpD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oCAAoC,CAAC,CAAC;IAErD,MAAM;SACH,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,yCAAyC,CAAC;SACtD,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAsB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAsB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAsB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0EAA0E,CAAC;SACvF,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;SAChE,MAAM,CAAC,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"charts.js","sourceRoot":"","sources":["../../src/commands/charts.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/cohorts.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cohorts.js","sourceRoot":"","sources":["../../src/commands/cohorts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAqB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAE7C,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,EAAE,CAAC;SAC5D,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC;SAC1C,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAsB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,aAAa,EAAE;gBAC/C,
|
|
1
|
+
{"version":3,"file":"cohorts.js","sourceRoot":"","sources":["../../src/commands/cohorts.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/query.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Query commands — event segmentation, funnels, retention, revenue, sessions.
|
|
3
3
|
* All queries go through the Amplitude MCP server via query_dataset.
|
|
4
|
+
*
|
|
5
|
+
* Payload format matches the MCP server's query_dataset tool schema:
|
|
6
|
+
* { projectId, definition: { type, params: { ... } } }
|
|
4
7
|
*/
|
|
5
8
|
import { Command } from "commander";
|
|
6
9
|
export declare function registerQueryCommands(program: Command): void;
|
package/dist/commands/query.js
CHANGED
|
@@ -1,37 +1,69 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Query commands — event segmentation, funnels, retention, revenue, sessions.
|
|
3
3
|
* All queries go through the Amplitude MCP server via query_dataset.
|
|
4
|
+
*
|
|
5
|
+
* Payload format matches the MCP server's query_dataset tool schema:
|
|
6
|
+
* { projectId, definition: { type, params: { ... } } }
|
|
4
7
|
*/
|
|
5
8
|
import { AmplitudeMcpClient } from "../mcp-client.js";
|
|
6
9
|
import { output } from "../utils/format.js";
|
|
7
10
|
import { extractMcpText } from "../utils/mcp-helpers.js";
|
|
8
11
|
import { handleError } from "../utils/errors.js";
|
|
9
|
-
/**
|
|
10
|
-
* Build a query_dataset definition for event segmentation.
|
|
11
|
-
*/
|
|
12
12
|
function buildSegmentDefinition(opts) {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
const eventDef = {
|
|
14
|
+
event_type: opts.event,
|
|
15
|
+
filters: opts.filters ? JSON.parse(opts.filters) : [],
|
|
16
|
+
group_by: opts.groupBy ? parseGroupBy(opts.groupBy) : [],
|
|
17
|
+
};
|
|
18
|
+
return {
|
|
19
|
+
type: "eventsSegmentation",
|
|
20
|
+
params: {
|
|
21
|
+
range: "custom",
|
|
16
22
|
start: opts.from,
|
|
17
23
|
end: opts.to,
|
|
24
|
+
events: [eventDef],
|
|
25
|
+
metric: opts.metric || "uniques",
|
|
26
|
+
interval: parseInterval(opts.interval),
|
|
27
|
+
countGroup: "User",
|
|
28
|
+
groupBy: opts.groupBy ? parseGroupBy(opts.groupBy) : [],
|
|
29
|
+
segments: [{ conditions: [] }],
|
|
30
|
+
},
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function buildFunnelDefinition(opts) {
|
|
34
|
+
return {
|
|
35
|
+
type: "funnel",
|
|
36
|
+
params: {
|
|
37
|
+
range: "custom",
|
|
38
|
+
start: opts.from,
|
|
39
|
+
end: opts.to,
|
|
40
|
+
events: opts.events.map((e) => ({
|
|
41
|
+
event_type: e,
|
|
42
|
+
filters: [],
|
|
43
|
+
group_by: [],
|
|
44
|
+
})),
|
|
45
|
+
countGroup: "User",
|
|
46
|
+
groupBy: opts.groupBy ? parseGroupBy(opts.groupBy) : [],
|
|
47
|
+
segments: [{ conditions: [] }],
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function buildRetentionDefinition(opts) {
|
|
52
|
+
return {
|
|
53
|
+
type: "retention",
|
|
54
|
+
params: {
|
|
55
|
+
range: "custom",
|
|
56
|
+
start: opts.from,
|
|
57
|
+
end: opts.to,
|
|
58
|
+
startEvent: { event_type: opts.startEvent, filters: [] },
|
|
59
|
+
returnEvent: { event_type: opts.returnEvent, filters: [] },
|
|
60
|
+
countGroup: "User",
|
|
61
|
+
segments: [{ conditions: [] }],
|
|
18
62
|
},
|
|
19
|
-
series: [
|
|
20
|
-
{
|
|
21
|
-
event: opts.event,
|
|
22
|
-
metric: opts.metric || "uniques",
|
|
23
|
-
...(opts.groupBy ? { group_by: parseGroupBy(opts.groupBy) } : {}),
|
|
24
|
-
...(opts.filters ? { filters: JSON.parse(opts.filters) } : {}),
|
|
25
|
-
},
|
|
26
|
-
],
|
|
27
63
|
};
|
|
28
|
-
if (opts.interval) {
|
|
29
|
-
definition.interval = intervalToString(opts.interval);
|
|
30
|
-
}
|
|
31
|
-
return definition;
|
|
32
64
|
}
|
|
33
65
|
/**
|
|
34
|
-
* Parse group-by string: "user:platform" → { type: "user", name: "platform" }
|
|
66
|
+
* Parse group-by string: "user:platform" → [{ type: "user", name: "platform" }]
|
|
35
67
|
*/
|
|
36
68
|
function parseGroupBy(groupBy) {
|
|
37
69
|
const parts = groupBy.split(":");
|
|
@@ -41,16 +73,13 @@ function parseGroupBy(groupBy) {
|
|
|
41
73
|
return [{ type: "user", name: parts[0] }];
|
|
42
74
|
}
|
|
43
75
|
/**
|
|
44
|
-
*
|
|
76
|
+
* Parse interval flag to numeric value for MCP.
|
|
45
77
|
*/
|
|
46
|
-
function
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
case "-300000": return "realtime";
|
|
52
|
-
default: return "daily";
|
|
53
|
-
}
|
|
78
|
+
function parseInterval(interval) {
|
|
79
|
+
if (!interval)
|
|
80
|
+
return 1;
|
|
81
|
+
const n = parseInt(interval, 10);
|
|
82
|
+
return isNaN(n) ? 1 : n;
|
|
54
83
|
}
|
|
55
84
|
export function registerQueryCommands(program) {
|
|
56
85
|
const query = program
|
|
@@ -91,19 +120,7 @@ export function registerQueryCommands(program) {
|
|
|
91
120
|
.action(async (opts) => {
|
|
92
121
|
try {
|
|
93
122
|
const mcp = new AmplitudeMcpClient();
|
|
94
|
-
const definition =
|
|
95
|
-
chart_type: "FUNNEL",
|
|
96
|
-
time_range: {
|
|
97
|
-
start: opts.from,
|
|
98
|
-
end: opts.to,
|
|
99
|
-
},
|
|
100
|
-
series: opts.events.map((e) => ({
|
|
101
|
-
event: e,
|
|
102
|
-
})),
|
|
103
|
-
};
|
|
104
|
-
if (opts.groupBy) {
|
|
105
|
-
definition.group_by = parseGroupBy(opts.groupBy);
|
|
106
|
-
}
|
|
123
|
+
const definition = buildFunnelDefinition(opts);
|
|
107
124
|
const result = await mcp.queryDataset(definition);
|
|
108
125
|
output(extractMcpText(result), opts.format);
|
|
109
126
|
}
|
|
@@ -123,17 +140,7 @@ export function registerQueryCommands(program) {
|
|
|
123
140
|
.action(async (opts) => {
|
|
124
141
|
try {
|
|
125
142
|
const mcp = new AmplitudeMcpClient();
|
|
126
|
-
const definition =
|
|
127
|
-
chart_type: "RETENTION",
|
|
128
|
-
time_range: {
|
|
129
|
-
start: opts.from,
|
|
130
|
-
end: opts.to,
|
|
131
|
-
},
|
|
132
|
-
series: [
|
|
133
|
-
{ event: opts.startEvent, role: "start" },
|
|
134
|
-
{ event: opts.returnEvent, role: "return" },
|
|
135
|
-
],
|
|
136
|
-
};
|
|
143
|
+
const definition = buildRetentionDefinition(opts);
|
|
137
144
|
const result = await mcp.queryDataset(definition);
|
|
138
145
|
output(extractMcpText(result), opts.format);
|
|
139
146
|
}
|
|
@@ -169,23 +176,14 @@ export function registerQueryCommands(program) {
|
|
|
169
176
|
.action(async (opts) => {
|
|
170
177
|
try {
|
|
171
178
|
const mcp = new AmplitudeMcpClient();
|
|
172
|
-
const definition = {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
event: "_any_revenue_event",
|
|
181
|
-
metric: opts.metric || "total",
|
|
182
|
-
...(opts.groupBy ? { group_by: parseGroupBy(opts.groupBy) } : {}),
|
|
183
|
-
},
|
|
184
|
-
],
|
|
185
|
-
};
|
|
186
|
-
if (opts.interval) {
|
|
187
|
-
definition.interval = intervalToString(opts.interval);
|
|
188
|
-
}
|
|
179
|
+
const definition = buildSegmentDefinition({
|
|
180
|
+
event: "_any_revenue_event",
|
|
181
|
+
from: opts.from,
|
|
182
|
+
to: opts.to,
|
|
183
|
+
metric: opts.metric || "total",
|
|
184
|
+
interval: opts.interval,
|
|
185
|
+
groupBy: opts.groupBy,
|
|
186
|
+
});
|
|
189
187
|
const result = await mcp.queryDataset(definition);
|
|
190
188
|
output(extractMcpText(result), opts.format);
|
|
191
189
|
}
|
|
@@ -203,19 +201,12 @@ export function registerQueryCommands(program) {
|
|
|
203
201
|
.action(async (opts) => {
|
|
204
202
|
try {
|
|
205
203
|
const mcp = new AmplitudeMcpClient();
|
|
206
|
-
const definition = {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
series: [
|
|
213
|
-
{
|
|
214
|
-
event: "_active",
|
|
215
|
-
metric: "sessions",
|
|
216
|
-
},
|
|
217
|
-
],
|
|
218
|
-
};
|
|
204
|
+
const definition = buildSegmentDefinition({
|
|
205
|
+
event: "_active",
|
|
206
|
+
from: opts.from,
|
|
207
|
+
to: opts.to,
|
|
208
|
+
metric: "sessions",
|
|
209
|
+
});
|
|
219
210
|
const result = await mcp.queryDataset(definition);
|
|
220
211
|
output(extractMcpText(result), opts.format);
|
|
221
212
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/commands/query.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool introspection commands — list and describe MCP tools.
|
|
3
|
+
* Fetches live schemas from the Amplitude MCP server.
|
|
4
|
+
*/
|
|
5
|
+
import { AmplitudeMcpClient } from "../mcp-client.js";
|
|
6
|
+
import { output } from "../utils/format.js";
|
|
7
|
+
import { handleError } from "../utils/errors.js";
|
|
8
|
+
function extractToolsList(raw) {
|
|
9
|
+
if (!raw || typeof raw !== "object")
|
|
10
|
+
return [];
|
|
11
|
+
const obj = raw;
|
|
12
|
+
return obj.tools || obj.result?.tools || [];
|
|
13
|
+
}
|
|
14
|
+
export function registerToolsCommands(program) {
|
|
15
|
+
const tools = program
|
|
16
|
+
.command("tools")
|
|
17
|
+
.description("Discover available MCP tools and their schemas");
|
|
18
|
+
tools
|
|
19
|
+
.command("list")
|
|
20
|
+
.description("List all available MCP tools")
|
|
21
|
+
.option("-f, --format <format>", "Output format: json, compact, csv", "json")
|
|
22
|
+
.action(async (opts) => {
|
|
23
|
+
try {
|
|
24
|
+
const mcp = new AmplitudeMcpClient();
|
|
25
|
+
const result = await mcp.listTools();
|
|
26
|
+
const toolsList = extractToolsList(result);
|
|
27
|
+
if (opts.format === "json" || opts.format === "compact") {
|
|
28
|
+
output(toolsList, opts.format);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
const summary = toolsList.map((t) => ({
|
|
32
|
+
name: t.name,
|
|
33
|
+
description: t.description || "",
|
|
34
|
+
}));
|
|
35
|
+
output(summary, opts.format);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
handleError(err);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
tools
|
|
43
|
+
.command("describe <tool-name>")
|
|
44
|
+
.description("Show the input schema for a specific MCP tool")
|
|
45
|
+
.option("-f, --format <format>", "Output format: json, compact, csv", "json")
|
|
46
|
+
.action(async (toolName, opts) => {
|
|
47
|
+
try {
|
|
48
|
+
const mcp = new AmplitudeMcpClient();
|
|
49
|
+
const result = await mcp.listTools();
|
|
50
|
+
const toolsList = extractToolsList(result);
|
|
51
|
+
const tool = toolsList.find((t) => t.name === toolName);
|
|
52
|
+
if (!tool) {
|
|
53
|
+
const available = toolsList.map((t) => t.name).join(", ");
|
|
54
|
+
console.error(`Tool "${toolName}" not found.`);
|
|
55
|
+
if (available) {
|
|
56
|
+
console.error(`Available tools: ${available}`);
|
|
57
|
+
}
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
output(tool, opts.format);
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
handleError(err);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/users.js
CHANGED
|
@@ -18,7 +18,7 @@ export function registerUserCommands(program) {
|
|
|
18
18
|
try {
|
|
19
19
|
const mcp = new AmplitudeMcpClient();
|
|
20
20
|
const result = await mcp.callTool("get_users", {
|
|
21
|
-
|
|
21
|
+
userId: query,
|
|
22
22
|
});
|
|
23
23
|
output(extractMcpText(result), opts.format);
|
|
24
24
|
}
|
|
@@ -35,9 +35,9 @@ export function registerUserCommands(program) {
|
|
|
35
35
|
try {
|
|
36
36
|
const mcp = new AmplitudeMcpClient();
|
|
37
37
|
const result = await mcp.callTool("get_users", {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
amplitudeId,
|
|
39
|
+
includeEvents: true,
|
|
40
|
+
eventLimit: parseInt(opts.limit),
|
|
41
41
|
});
|
|
42
42
|
output(extractMcpText(result), opts.format);
|
|
43
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/commands/users.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAqB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,iCAAiC,CAAC,CAAC;IAElD,KAAK;SACF,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAC7C,
|
|
1
|
+
{"version":3,"file":"users.js","sourceRoot":"","sources":["../../src/commands/users.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,MAAM,EAAqB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,iCAAiC,CAAC,CAAC;IAElD,KAAK;SACF,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,yDAAyD,CAAC;SACtE,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAC7C,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAsB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,aAAa,EAAE,sBAAsB,EAAE,KAAK,CAAC;SACpD,MAAM,CAAC,uBAAuB,EAAE,mCAAmC,EAAE,MAAM,CAAC;SAC5E,MAAM,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE;QAClC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE;gBAC7C,WAAW;gBACX,aAAa,EAAE,IAAI;gBACnB,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;aACjC,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAsB,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,WAAW,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
* All commands go through Amplitude's MCP server (OAuth).
|
|
7
7
|
*
|
|
8
8
|
* Auth: AMPLITUDE_ACCESS_TOKEN env var (Nango) or `amp auth login` (interactive).
|
|
9
|
-
* Designed for AI agents
|
|
9
|
+
* Designed for AI agents and humans alike.
|
|
10
10
|
*/
|
|
11
11
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
* All commands go through Amplitude's MCP server (OAuth).
|
|
7
7
|
*
|
|
8
8
|
* Auth: AMPLITUDE_ACCESS_TOKEN env var (Nango) or `amp auth login` (interactive).
|
|
9
|
-
* Designed for AI agents
|
|
9
|
+
* Designed for AI agents and humans alike.
|
|
10
10
|
*/
|
|
11
11
|
import { Command } from "commander";
|
|
12
|
+
import { CLI_VERSION } from "./mcp-client.js";
|
|
12
13
|
import { registerAuthCommands } from "./commands/auth.js";
|
|
13
14
|
import { registerEventCommands } from "./commands/events.js";
|
|
14
15
|
import { registerQueryCommands } from "./commands/query.js";
|
|
@@ -17,11 +18,20 @@ import { registerCohortCommands } from "./commands/cohorts.js";
|
|
|
17
18
|
import { registerChartCommands } from "./commands/charts.js";
|
|
18
19
|
import { registerDashboardCommands } from "./commands/dashboards.js";
|
|
19
20
|
import { registerExperimentCommands } from "./commands/experiments.js";
|
|
21
|
+
import { registerCallCommand } from "./commands/call.js";
|
|
22
|
+
import { registerToolsCommands } from "./commands/tools.js";
|
|
20
23
|
const program = new Command();
|
|
21
24
|
program
|
|
22
25
|
.name("amp")
|
|
23
26
|
.description("CLI for Amplitude analytics — query data, create charts, build dashboards, analyze experiments")
|
|
24
|
-
.version(
|
|
27
|
+
.version(CLI_VERSION)
|
|
28
|
+
.option("--project-id <id>", "Amplitude project ID (or set AMPLITUDE_PROJECT_ID)");
|
|
29
|
+
program.hook("preAction", (thisCommand) => {
|
|
30
|
+
const opts = thisCommand.opts();
|
|
31
|
+
if (opts.projectId && !process.env.AMPLITUDE_PROJECT_ID) {
|
|
32
|
+
process.env.AMPLITUDE_PROJECT_ID = opts.projectId;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
25
35
|
registerAuthCommands(program);
|
|
26
36
|
registerEventCommands(program);
|
|
27
37
|
registerQueryCommands(program);
|
|
@@ -30,5 +40,7 @@ registerCohortCommands(program);
|
|
|
30
40
|
registerChartCommands(program);
|
|
31
41
|
registerDashboardCommands(program);
|
|
32
42
|
registerExperimentCommands(program);
|
|
43
|
+
registerCallCommand(program);
|
|
44
|
+
registerToolsCommands(program);
|
|
33
45
|
program.parse();
|
|
34
46
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,KAAK,CAAC;KACX,WAAW,CACV,gGAAgG,CACjG;KACA,OAAO,CAAC,WAAW,CAAC;KACpB,MAAM,CAAC,mBAAmB,EAAE,oDAAoD,CAAC,CAAC;AAErF,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,EAAE;IACxC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC;IACpD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,0BAA0B,CAAC,OAAO,CAAC,CAAC;AACpC,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/mcp-client.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* The MCP server exposes tools via JSON-RPC over HTTP (Streamable HTTP transport).
|
|
7
7
|
*/
|
|
8
|
+
export declare const CLI_VERSION = "0.3.2";
|
|
8
9
|
export interface McpToolResult {
|
|
9
10
|
content: Array<{
|
|
10
11
|
type: string;
|
|
@@ -15,9 +16,19 @@ export interface McpToolResult {
|
|
|
15
16
|
}
|
|
16
17
|
export declare class AmplitudeMcpClient {
|
|
17
18
|
private region;
|
|
19
|
+
private projectId?;
|
|
20
|
+
private cachedProjectId?;
|
|
18
21
|
private sessionId?;
|
|
19
22
|
private initialized;
|
|
20
|
-
constructor(
|
|
23
|
+
constructor(opts?: {
|
|
24
|
+
region?: string;
|
|
25
|
+
projectId?: string;
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Resolve the project ID. Uses explicit value, env var, or auto-discovers
|
|
29
|
+
* from get_context and caches the result.
|
|
30
|
+
*/
|
|
31
|
+
getProjectId(): Promise<string | undefined>;
|
|
21
32
|
/**
|
|
22
33
|
* Initialize MCP session. Must be called before any tool calls.
|
|
23
34
|
* Auto-called by callTool if not yet initialized.
|
|
@@ -56,7 +67,11 @@ export declare class AmplitudeMcpClient {
|
|
|
56
67
|
* Query a dataset (create/preview a chart).
|
|
57
68
|
* Returns data + an editId that can be saved.
|
|
58
69
|
*/
|
|
59
|
-
queryDataset(definition: Record<string, unknown
|
|
70
|
+
queryDataset(definition: Record<string, unknown>, projectId?: string): Promise<McpToolResult>;
|
|
71
|
+
/**
|
|
72
|
+
* Create a chart from a query definition.
|
|
73
|
+
*/
|
|
74
|
+
createChart(definition: Record<string, unknown>, projectId?: string): Promise<McpToolResult>;
|
|
60
75
|
/**
|
|
61
76
|
* Save a chart from query_dataset results.
|
|
62
77
|
*/
|
package/dist/mcp-client.js
CHANGED
|
@@ -6,17 +6,54 @@
|
|
|
6
6
|
* The MCP server exposes tools via JSON-RPC over HTTP (Streamable HTTP transport).
|
|
7
7
|
*/
|
|
8
8
|
import { getAccessToken, getMcpBaseUrl, getOAuthConfig } from "./utils/oauth.js";
|
|
9
|
+
export const CLI_VERSION = "0.3.2";
|
|
9
10
|
export class AmplitudeMcpClient {
|
|
10
11
|
region;
|
|
12
|
+
projectId;
|
|
13
|
+
cachedProjectId;
|
|
11
14
|
sessionId;
|
|
12
15
|
initialized = false;
|
|
13
|
-
constructor(
|
|
16
|
+
constructor(opts) {
|
|
14
17
|
const oauth = getOAuthConfig();
|
|
15
18
|
this.region =
|
|
16
|
-
region ||
|
|
19
|
+
opts?.region ||
|
|
17
20
|
process.env.AMPLITUDE_REGION ||
|
|
18
21
|
oauth?.region ||
|
|
19
22
|
"us";
|
|
23
|
+
this.projectId =
|
|
24
|
+
opts?.projectId ||
|
|
25
|
+
process.env.AMPLITUDE_PROJECT_ID ||
|
|
26
|
+
undefined;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the project ID. Uses explicit value, env var, or auto-discovers
|
|
30
|
+
* from get_context and caches the result.
|
|
31
|
+
*/
|
|
32
|
+
async getProjectId() {
|
|
33
|
+
if (this.projectId)
|
|
34
|
+
return this.projectId;
|
|
35
|
+
if (this.cachedProjectId)
|
|
36
|
+
return this.cachedProjectId;
|
|
37
|
+
try {
|
|
38
|
+
const ctx = await this.getContext();
|
|
39
|
+
const text = ctx.content?.find((c) => c.type === "text")?.text;
|
|
40
|
+
if (text) {
|
|
41
|
+
const parsed = JSON.parse(text);
|
|
42
|
+
const id = parsed?.appId ??
|
|
43
|
+
parsed?.projectId ??
|
|
44
|
+
parsed?.project_id ??
|
|
45
|
+
parsed?.projects?.[0]?.appId ??
|
|
46
|
+
parsed?.projects?.[0]?.id;
|
|
47
|
+
if (id) {
|
|
48
|
+
this.cachedProjectId = String(id);
|
|
49
|
+
return this.cachedProjectId;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Auto-discovery failed; proceed without projectId
|
|
55
|
+
}
|
|
56
|
+
return undefined;
|
|
20
57
|
}
|
|
21
58
|
/**
|
|
22
59
|
* Initialize MCP session. Must be called before any tool calls.
|
|
@@ -34,7 +71,7 @@ export class AmplitudeMcpClient {
|
|
|
34
71
|
params: {
|
|
35
72
|
protocolVersion: "2024-11-05",
|
|
36
73
|
capabilities: {},
|
|
37
|
-
clientInfo: { name: "amplitude-cli", version:
|
|
74
|
+
clientInfo: { name: "amplitude-cli", version: CLI_VERSION },
|
|
38
75
|
},
|
|
39
76
|
};
|
|
40
77
|
const res = await fetch(`${baseUrl}/mcp`, {
|
|
@@ -198,7 +235,7 @@ export class AmplitudeMcpClient {
|
|
|
198
235
|
async search(query, entityTypes, limit) {
|
|
199
236
|
return this.callTool("search", {
|
|
200
237
|
query,
|
|
201
|
-
...(entityTypes && {
|
|
238
|
+
...(entityTypes && { entityTypes }),
|
|
202
239
|
...(limit && { limit }),
|
|
203
240
|
});
|
|
204
241
|
}
|
|
@@ -212,27 +249,41 @@ export class AmplitudeMcpClient {
|
|
|
212
249
|
* Get chart definitions by ID.
|
|
213
250
|
*/
|
|
214
251
|
async getCharts(chartIds) {
|
|
215
|
-
return this.callTool("get_charts", {
|
|
252
|
+
return this.callTool("get_charts", { chartIds });
|
|
216
253
|
}
|
|
217
254
|
/**
|
|
218
255
|
* Get dashboard by ID.
|
|
219
256
|
*/
|
|
220
257
|
async getDashboard(dashboardId) {
|
|
221
|
-
return this.callTool("get_dashboard", {
|
|
258
|
+
return this.callTool("get_dashboard", { dashboardId });
|
|
222
259
|
}
|
|
223
260
|
/**
|
|
224
261
|
* Query a dataset (create/preview a chart).
|
|
225
262
|
* Returns data + an editId that can be saved.
|
|
226
263
|
*/
|
|
227
|
-
async queryDataset(definition) {
|
|
228
|
-
|
|
264
|
+
async queryDataset(definition, projectId) {
|
|
265
|
+
const pid = projectId ?? (await this.getProjectId());
|
|
266
|
+
const args = { definition };
|
|
267
|
+
if (pid)
|
|
268
|
+
args.projectId = pid;
|
|
269
|
+
return this.callTool("query_dataset", args);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Create a chart from a query definition.
|
|
273
|
+
*/
|
|
274
|
+
async createChart(definition, projectId) {
|
|
275
|
+
const pid = projectId ?? (await this.getProjectId());
|
|
276
|
+
const args = { definition };
|
|
277
|
+
if (pid)
|
|
278
|
+
args.projectId = pid;
|
|
279
|
+
return this.callTool("create_chart", args);
|
|
229
280
|
}
|
|
230
281
|
/**
|
|
231
282
|
* Save a chart from query_dataset results.
|
|
232
283
|
*/
|
|
233
284
|
async saveChart(editId, name, description) {
|
|
234
285
|
return this.callTool("save_chart_edits", {
|
|
235
|
-
|
|
286
|
+
editId,
|
|
236
287
|
name,
|
|
237
288
|
...(description && { description }),
|
|
238
289
|
});
|
|
@@ -251,20 +302,20 @@ export class AmplitudeMcpClient {
|
|
|
251
302
|
* Get event properties for an event type.
|
|
252
303
|
*/
|
|
253
304
|
async getEventProperties(eventType) {
|
|
254
|
-
return this.callTool("get_event_properties", {
|
|
305
|
+
return this.callTool("get_event_properties", { eventType });
|
|
255
306
|
}
|
|
256
307
|
/**
|
|
257
308
|
* Query an existing chart's data.
|
|
258
309
|
*/
|
|
259
310
|
async queryChart(chartId) {
|
|
260
|
-
return this.callTool("query_chart", {
|
|
311
|
+
return this.callTool("query_chart", { chartId });
|
|
261
312
|
}
|
|
262
313
|
/**
|
|
263
314
|
* Get experiment details.
|
|
264
315
|
*/
|
|
265
316
|
async getExperiments(experimentIds) {
|
|
266
317
|
return this.callTool("get_experiments", {
|
|
267
|
-
|
|
318
|
+
experimentIds,
|
|
268
319
|
});
|
|
269
320
|
}
|
|
270
321
|
/**
|
|
@@ -272,7 +323,7 @@ export class AmplitudeMcpClient {
|
|
|
272
323
|
*/
|
|
273
324
|
async queryExperiment(experimentId) {
|
|
274
325
|
return this.callTool("query_experiment", {
|
|
275
|
-
|
|
326
|
+
experimentId,
|
|
276
327
|
});
|
|
277
328
|
}
|
|
278
329
|
}
|
package/dist/mcp-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-client.js","sourceRoot":"","sources":["../src/mcp-client.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { McpError } from "../mcp-client.js";
|
|
5
5
|
export function handleError(err) {
|
|
6
6
|
if (err instanceof McpError) {
|
|
7
|
-
console.error(`\nAmplitude MCP Error (${err.code}) calling ${err.tool}`);
|
|
7
|
+
console.error(`\nAmplitude MCP Error (${err.code}) calling "${err.tool}"`);
|
|
8
8
|
if (err.code === 401 || err.code === 403) {
|
|
9
9
|
console.error("OAuth token invalid or expired.\n" +
|
|
10
10
|
"If using Nango: check that AMPLITUDE_ACCESS_TOKEN is set.\n" +
|
|
@@ -14,9 +14,14 @@ export function handleError(err) {
|
|
|
14
14
|
console.error("Rate limited. Try again in a few minutes.");
|
|
15
15
|
}
|
|
16
16
|
else if (err.code === -32601) {
|
|
17
|
-
console.error("Unknown MCP tool. Run 'amp
|
|
17
|
+
console.error("Unknown MCP tool. Run 'amp tools list' to see available tools,\n" +
|
|
18
|
+
"or 'amp tools describe <tool>' to see a tool's schema.");
|
|
18
19
|
}
|
|
19
|
-
|
|
20
|
+
else if (err.code === -32602) {
|
|
21
|
+
console.error("Invalid parameters. Run 'amp tools describe " + err.tool + "' to see the expected schema.");
|
|
22
|
+
}
|
|
23
|
+
const detail = err.detail.slice(0, 1000);
|
|
24
|
+
console.error(`\nDetail: ${detail}`);
|
|
20
25
|
process.exit(1);
|
|
21
26
|
}
|
|
22
27
|
if (err instanceof Error) {
|
package/dist/utils/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;QAE3E,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YACzC,OAAO,CAAC,KAAK,CACX,mCAAmC;gBACnC,6DAA6D;gBAC7D,0DAA0D,CAC3D,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC7D,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CACX,kEAAkE;gBAClE,wDAAwD,CACzD,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CACX,8CAA8C,GAAG,GAAG,CAAC,IAAI,GAAG,+BAA+B,CAC5F,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAClC,OAAO,CAAC,KAAK,CACX,8DAA8D,CAC/D,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|