@migma/mcp 1.1.1 → 1.3.0
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/build/client.d.ts.map +1 -1
- package/build/client.js +3 -1
- package/build/client.js.map +1 -1
- package/build/config.d.ts.map +1 -1
- package/build/config.js +22 -4
- package/build/config.js.map +1 -1
- package/build/index.d.ts +1 -0
- package/build/index.d.ts.map +1 -1
- package/build/index.js +19 -11
- package/build/index.js.map +1 -1
- package/build/permissions.d.ts +2 -0
- package/build/permissions.d.ts.map +1 -0
- package/build/permissions.js +17 -0
- package/build/permissions.js.map +1 -0
- package/build/prompts/index.d.ts +14 -0
- package/build/prompts/index.d.ts.map +1 -0
- package/build/prompts/index.js +70 -0
- package/build/prompts/index.js.map +1 -0
- package/build/tools/__tests__/catalog.test.d.ts +2 -0
- package/build/tools/__tests__/catalog.test.d.ts.map +1 -0
- package/build/tools/__tests__/catalog.test.js +38 -0
- package/build/tools/__tests__/catalog.test.js.map +1 -0
- package/build/tools/campaigns.d.ts +1 -1
- package/build/tools/campaigns.d.ts.map +1 -1
- package/build/tools/campaigns.js +244 -164
- package/build/tools/campaigns.js.map +1 -1
- package/build/tools/capabilities.d.ts +16 -0
- package/build/tools/capabilities.d.ts.map +1 -0
- package/build/tools/capabilities.js +108 -0
- package/build/tools/capabilities.js.map +1 -0
- package/build/tools/contacts.d.ts +1 -1
- package/build/tools/contacts.d.ts.map +1 -1
- package/build/tools/contacts.js +357 -125
- package/build/tools/contacts.js.map +1 -1
- package/build/tools/domains.d.ts +1 -1
- package/build/tools/domains.d.ts.map +1 -1
- package/build/tools/domains.js +99 -66
- package/build/tools/domains.js.map +1 -1
- package/build/tools/export.d.ts +1 -1
- package/build/tools/export.d.ts.map +1 -1
- package/build/tools/export.js +97 -78
- package/build/tools/export.js.map +1 -1
- package/build/tools/generate.d.ts +1 -1
- package/build/tools/generate.d.ts.map +1 -1
- package/build/tools/generate.js +171 -109
- package/build/tools/generate.js.map +1 -1
- package/build/tools/metrics.d.ts +4 -0
- package/build/tools/metrics.d.ts.map +1 -0
- package/build/tools/metrics.js +39 -0
- package/build/tools/metrics.js.map +1 -0
- package/build/tools/projects.d.ts +1 -1
- package/build/tools/projects.d.ts.map +1 -1
- package/build/tools/projects.js +89 -77
- package/build/tools/projects.js.map +1 -1
- package/build/tools/segments.d.ts +1 -1
- package/build/tools/segments.d.ts.map +1 -1
- package/build/tools/segments.js +91 -67
- package/build/tools/segments.js.map +1 -1
- package/build/tools/send.d.ts +1 -1
- package/build/tools/send.d.ts.map +1 -1
- package/build/tools/send.js +72 -64
- package/build/tools/send.js.map +1 -1
- package/build/tools/tags.d.ts +1 -1
- package/build/tools/tags.d.ts.map +1 -1
- package/build/tools/tags.js +77 -69
- package/build/tools/tags.js.map +1 -1
- package/build/tools/validate.d.ts +1 -1
- package/build/tools/validate.d.ts.map +1 -1
- package/build/tools/validate.js +54 -44
- package/build/tools/validate.js.map +1 -1
- package/build/tools/webhooks.d.ts +1 -1
- package/build/tools/webhooks.d.ts.map +1 -1
- package/build/tools/webhooks.js +67 -57
- package/build/tools/webhooks.js.map +1 -1
- package/package.json +4 -3
package/build/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAc/C"}
|
package/build/client.js
CHANGED
|
@@ -3,7 +3,9 @@ let instance = null;
|
|
|
3
3
|
export function getClient(config) {
|
|
4
4
|
if (!instance) {
|
|
5
5
|
if (!config.apiKey) {
|
|
6
|
-
throw new Error("
|
|
6
|
+
throw new Error("Local MCP needs a key. Connect https://migma.ai/mcp for browser OAuth, " +
|
|
7
|
+
"run migma login, or fetch https://api.migma.ai/auth.md. " +
|
|
8
|
+
"CI/servers can set MIGMA_API_KEY.");
|
|
7
9
|
}
|
|
8
10
|
instance = new Migma(config.apiKey, {
|
|
9
11
|
baseUrl: config.baseUrl,
|
package/build/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,IAAI,QAAQ,GAAiB,IAAI,CAAC;AAElC,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAG9B,IAAI,QAAQ,GAAiB,IAAI,CAAC;AAElC,MAAM,UAAU,SAAS,CAAC,MAAc;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,yEAAyE;gBACvE,0DAA0D;gBAC1D,mCAAmC,CACtC,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;YAClC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/build/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,YAAY;;;;;;;;;;;;EAIvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAkBlD,wBAAgB,UAAU,IAAI,MAAM,CAenC"}
|
package/build/config.js
CHANGED
|
@@ -1,14 +1,32 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
1
4
|
import { z } from "zod";
|
|
2
5
|
export const configSchema = z.object({
|
|
3
|
-
apiKey: z.string().describe("Migma API key (sk_live_...)"),
|
|
6
|
+
apiKey: z.string().describe("Scoped Migma API key for Local MCP (sk_live_...)"),
|
|
4
7
|
projectId: z.string().optional().describe("Default project ID"),
|
|
5
8
|
baseUrl: z.string().url().optional().describe("Custom API base URL"),
|
|
6
9
|
});
|
|
10
|
+
const CLI_CONFIG_FILE = join(homedir(), ".migma", "config.json");
|
|
11
|
+
function readCliConfigApiKey() {
|
|
12
|
+
if (!existsSync(CLI_CONFIG_FILE))
|
|
13
|
+
return undefined;
|
|
14
|
+
try {
|
|
15
|
+
const parsed = JSON.parse(readFileSync(CLI_CONFIG_FILE, "utf-8"));
|
|
16
|
+
return typeof parsed.apiKey === "string" && parsed.apiKey.trim()
|
|
17
|
+
? parsed.apiKey.trim()
|
|
18
|
+
: undefined;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
7
24
|
export function loadConfig() {
|
|
8
|
-
const apiKey = process.env.MIGMA_API_KEY;
|
|
25
|
+
const apiKey = process.env.MIGMA_API_KEY || readCliConfigApiKey();
|
|
9
26
|
if (!apiKey) {
|
|
10
|
-
console.error("Warning:
|
|
11
|
-
"
|
|
27
|
+
console.error("Warning: Local MCP needs a key. Connect https://migma.ai/mcp for browser OAuth, " +
|
|
28
|
+
"run migma login, or fetch https://api.migma.ai/auth.md. " +
|
|
29
|
+
"CI/servers can set MIGMA_API_KEY.");
|
|
12
30
|
}
|
|
13
31
|
return configSchema.parse({
|
|
14
32
|
apiKey: apiKey || "",
|
package/build/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;IAC/E,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;IAC/D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;CACrE,CAAC,CAAC;AAIH,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEjE,SAAS,mBAAmB;IAC1B,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,SAAS,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAE/D,CAAC;QACF,OAAO,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YAC9D,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;YACtB,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,mBAAmB,EAAE,CAAC;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,kFAAkF;YAChF,0DAA0D;YAC1D,mCAAmC,CACtC,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC,KAAK,CAAC;QACxB,MAAM,EAAE,MAAM,IAAI,EAAE;QACpB,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,SAAS;QACpD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,SAAS;KACjD,CAAC,CAAC;AACL,CAAC"}
|
package/build/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export type CreateMigmaMcpServerOptions = {
|
|
|
6
6
|
config?: Partial<Config>;
|
|
7
7
|
client?: Migma;
|
|
8
8
|
getClient?: () => Migma;
|
|
9
|
+
permissions?: string[];
|
|
9
10
|
version?: string;
|
|
10
11
|
};
|
|
11
12
|
export declare function createMigmaMcpServer(options?: CreateMigmaMcpServerOptions): McpServer;
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAgBnC,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,KAAK,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAqBF,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,2BAAgC,GAAG,SAAS,CA2BzF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAEzD;AAGD,wBAAgB,mBAAmB,cAOlC"}
|
package/build/index.js
CHANGED
|
@@ -16,6 +16,9 @@ import { registerTagTools } from "./tools/tags.js";
|
|
|
16
16
|
import { registerSegmentTools } from "./tools/segments.js";
|
|
17
17
|
import { registerWebhookTools } from "./tools/webhooks.js";
|
|
18
18
|
import { registerCampaignTools } from "./tools/campaigns.js";
|
|
19
|
+
import { registerMetricsTools } from "./tools/metrics.js";
|
|
20
|
+
import { registerCapabilitiesTool } from "./tools/capabilities.js";
|
|
21
|
+
import { registerMigmaPrompts } from "./prompts/index.js";
|
|
19
22
|
function completeConfig(config) {
|
|
20
23
|
return {
|
|
21
24
|
apiKey: config?.apiKey ?? "",
|
|
@@ -35,22 +38,27 @@ function createLazyClient(config, clientFactory) {
|
|
|
35
38
|
export function createMigmaMcpServer(options = {}) {
|
|
36
39
|
const config = completeConfig(options.config);
|
|
37
40
|
const lazyClient = options.client || createLazyClient(config, options.getClient);
|
|
41
|
+
const { permissions } = options;
|
|
38
42
|
const { version } = createRequire(import.meta.url)("../package.json");
|
|
39
43
|
const server = new McpServer({
|
|
40
44
|
name: "migma",
|
|
41
45
|
version: options.version || version,
|
|
42
46
|
});
|
|
43
|
-
registerProjectTools(server, lazyClient, config);
|
|
44
|
-
registerGenerateTools(server, lazyClient, config);
|
|
45
|
-
registerSendTools(server, lazyClient, config);
|
|
46
|
-
registerValidateTools(server, lazyClient);
|
|
47
|
-
registerExportTools(server, lazyClient);
|
|
48
|
-
registerDomainTools(server, lazyClient);
|
|
49
|
-
registerContactTools(server, lazyClient, config);
|
|
50
|
-
registerTagTools(server, lazyClient, config);
|
|
51
|
-
registerSegmentTools(server, lazyClient, config);
|
|
52
|
-
registerWebhookTools(server, lazyClient);
|
|
53
|
-
registerCampaignTools(server, lazyClient, config);
|
|
47
|
+
registerProjectTools(server, lazyClient, config, permissions);
|
|
48
|
+
registerGenerateTools(server, lazyClient, config, permissions);
|
|
49
|
+
registerSendTools(server, lazyClient, config, permissions);
|
|
50
|
+
registerValidateTools(server, lazyClient, permissions);
|
|
51
|
+
registerExportTools(server, lazyClient, permissions);
|
|
52
|
+
registerDomainTools(server, lazyClient, permissions);
|
|
53
|
+
registerContactTools(server, lazyClient, config, permissions);
|
|
54
|
+
registerTagTools(server, lazyClient, config, permissions);
|
|
55
|
+
registerSegmentTools(server, lazyClient, config, permissions);
|
|
56
|
+
registerWebhookTools(server, lazyClient, permissions);
|
|
57
|
+
registerCampaignTools(server, lazyClient, config, permissions);
|
|
58
|
+
registerMetricsTools(server, lazyClient, permissions);
|
|
59
|
+
registerMigmaPrompts(server);
|
|
60
|
+
// Register last so the catalog reflects every tool above it.
|
|
61
|
+
registerCapabilitiesTool(server);
|
|
54
62
|
return server;
|
|
55
63
|
}
|
|
56
64
|
export function createMcpServer(config) {
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AASA,wBAAgB,MAAM,CACpB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,EAC7B,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAMT"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const READ_PERMISSIONS = new Set([
|
|
2
|
+
"email:read",
|
|
3
|
+
"campaign:read",
|
|
4
|
+
"audience:read",
|
|
5
|
+
"domain:read",
|
|
6
|
+
"webhook:read",
|
|
7
|
+
"email:validate",
|
|
8
|
+
]);
|
|
9
|
+
export function canUse(granted, required) {
|
|
10
|
+
if (granted === undefined)
|
|
11
|
+
return true;
|
|
12
|
+
if (required.length > 0 && required.every((permission) => READ_PERMISSIONS.has(permission))) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
return required.every((permission) => granted.includes(permission));
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,YAAY;IACZ,eAAe;IACf,eAAe;IACf,aAAa;IACb,cAAc;IACd,gBAAgB;CACjB,CAAC,CAAC;AAEH,MAAM,UAAU,MAAM,CACpB,OAA6B,EAC7B,QAAkB;IAElB,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export interface Workflow {
|
|
3
|
+
name: string;
|
|
4
|
+
summary: string;
|
|
5
|
+
steps: string[];
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* The guided workflows this server ships. Each is registered as an MCP prompt
|
|
9
|
+
* and also mirrored inside migma_get_capabilities.workflows so an agent can
|
|
10
|
+
* discover them without fetching every prompt.
|
|
11
|
+
*/
|
|
12
|
+
export declare const WORKFLOWS: Workflow[];
|
|
13
|
+
export declare function registerMigmaPrompts(server: McpServer): void;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,EAAE,QAAQ,EAuC/B,CAAC;AAmBF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAcrD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The guided workflows this server ships. Each is registered as an MCP prompt
|
|
3
|
+
* and also mirrored inside migma_get_capabilities.workflows so an agent can
|
|
4
|
+
* discover them without fetching every prompt.
|
|
5
|
+
*/
|
|
6
|
+
export const WORKFLOWS = [
|
|
7
|
+
{
|
|
8
|
+
name: "launch_email_campaign",
|
|
9
|
+
summary: "Generate an email, test it, and send it as a campaign to a tag or segment, then read the results.",
|
|
10
|
+
steps: [
|
|
11
|
+
"migma_get_capabilities — see available tools and the idempotency contract.",
|
|
12
|
+
"migma_generate_email — generate the email (or series) from a prompt.",
|
|
13
|
+
"migma_send_test_email — send a test to yourself and review it.",
|
|
14
|
+
"migma_list_domains + migma_list_segments / migma_list_tags — pick the sender and audience.",
|
|
15
|
+
"migma_create_campaign — create a draft campaign from the generated email.",
|
|
16
|
+
"migma_send_campaign — send it (pass idempotency_key, e.g. campaign-send-<campaignId>, for safe retries).",
|
|
17
|
+
"migma_get_campaign_stats — read delivery and engagement metrics.",
|
|
18
|
+
],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: "build_segment_and_send",
|
|
22
|
+
summary: "Discover available subscriber fields, build a targeted segment, then generate and send to it.",
|
|
23
|
+
steps: [
|
|
24
|
+
"migma_get_field_catalog — discover which subscriber fields exist and how often they're populated.",
|
|
25
|
+
"migma_create_segment — create a segment using those fields as filters.",
|
|
26
|
+
"migma_generate_email — generate the email for that audience.",
|
|
27
|
+
"migma_create_campaign — create a campaign targeting the new segment.",
|
|
28
|
+
"migma_send_campaign — send the campaign (use an idempotency_key for safe retries).",
|
|
29
|
+
"migma_get_campaign_stats — read the campaign results.",
|
|
30
|
+
],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "import_brand_and_generate",
|
|
34
|
+
summary: "Import a brand from its website, then generate and test an on-brand email.",
|
|
35
|
+
steps: [
|
|
36
|
+
"migma_import_brand — import the brand from one or more website URLs.",
|
|
37
|
+
"migma_get_project — confirm the extracted colors, fonts, logos, and tone.",
|
|
38
|
+
"migma_generate_email — generate an on-brand email for the project.",
|
|
39
|
+
"migma_send_test_email — send a test and review the result.",
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
function workflowMessage(workflow) {
|
|
44
|
+
const stepLines = workflow.steps
|
|
45
|
+
.map((step, i) => `${i + 1}. ${step}`)
|
|
46
|
+
.join("\n");
|
|
47
|
+
return {
|
|
48
|
+
messages: [
|
|
49
|
+
{
|
|
50
|
+
role: "user",
|
|
51
|
+
content: {
|
|
52
|
+
type: "text",
|
|
53
|
+
text: `Guide me through the Migma "${workflow.name}" workflow: ${workflow.summary}\n\nCall these tools in order:\n${stepLines}\n\nStart by calling migma_get_capabilities if you haven't already, then walk through each step, confirming results before moving on.`,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function registerMigmaPrompts(server) {
|
|
60
|
+
for (const workflow of WORKFLOWS) {
|
|
61
|
+
server.registerPrompt(workflow.name, {
|
|
62
|
+
title: workflow.name
|
|
63
|
+
.split("_")
|
|
64
|
+
.map((w) => w.charAt(0).toUpperCase() + w.slice(1))
|
|
65
|
+
.join(" "),
|
|
66
|
+
description: workflow.summary,
|
|
67
|
+
}, () => workflowMessage(workflow));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC;QACE,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EACL,mGAAmG;QACrG,KAAK,EAAE;YACL,4EAA4E;YAC5E,sEAAsE;YACtE,gEAAgE;YAChE,4FAA4F;YAC5F,2EAA2E;YAC3E,0GAA0G;YAC1G,kEAAkE;SACnE;KACF;IACD;QACE,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EACL,+FAA+F;QACjG,KAAK,EAAE;YACL,mGAAmG;YACnG,wEAAwE;YACxE,8DAA8D;YAC9D,sEAAsE;YACtE,oFAAoF;YACpF,uDAAuD;SACxD;KACF;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,OAAO,EACL,4EAA4E;QAC9E,KAAK,EAAE;YACL,sEAAsE;YACtE,2EAA2E;YAC3E,oEAAoE;YACpE,4DAA4D;SAC7D;KACF;CACF,CAAC;AAEF,SAAS,eAAe,CAAC,QAAkB;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK;SAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SACrC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;QACL,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,+BAA+B,QAAQ,CAAC,IAAI,eAAe,QAAQ,CAAC,OAAO,mCAAmC,SAAS,uIAAuI;iBACrQ;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,CAAC,cAAc,CACnB,QAAQ,CAAC,IAAI,EACb;YACE,KAAK,EAAE,QAAQ,CAAC,IAAI;iBACjB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC;YACZ,WAAW,EAAE,QAAQ,CAAC,OAAO;SAC9B,EACD,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAChC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/catalog.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { createMigmaMcpServer } from "../../index.js";
|
|
4
|
+
import { TOOL_CATALOG } from "../capabilities.js";
|
|
5
|
+
function registeredTools(permissions) {
|
|
6
|
+
const server = createMigmaMcpServer({
|
|
7
|
+
config: { apiKey: "sk_live_test" },
|
|
8
|
+
permissions,
|
|
9
|
+
});
|
|
10
|
+
return server._registeredTools;
|
|
11
|
+
}
|
|
12
|
+
function registeredToolNames(permissions) {
|
|
13
|
+
return Object.keys(registeredTools(permissions));
|
|
14
|
+
}
|
|
15
|
+
const READ_TOOL_NAMES = TOOL_CATALOG.filter((entry) => !entry.write).map((entry) => entry.name);
|
|
16
|
+
test("TOOL_CATALOG matches the registered tool set exactly", () => {
|
|
17
|
+
const registered = new Set(registeredToolNames());
|
|
18
|
+
const catalog = new Set(TOOL_CATALOG.map((entry) => entry.name));
|
|
19
|
+
const missingFromCatalog = [...registered].filter((name) => !catalog.has(name));
|
|
20
|
+
const extraInCatalog = [...catalog].filter((name) => !registered.has(name));
|
|
21
|
+
assert.deepEqual(missingFromCatalog, [], `Registered tools missing from TOOL_CATALOG: ${missingFromCatalog.join(", ")}`);
|
|
22
|
+
assert.deepEqual(extraInCatalog, [], `TOOL_CATALOG entries that aren't registered: ${extraInCatalog.join(", ")}`);
|
|
23
|
+
assert.equal(catalog.size, TOOL_CATALOG.length, "TOOL_CATALOG has duplicate names");
|
|
24
|
+
});
|
|
25
|
+
test("read tools register even when only email:read is granted", () => {
|
|
26
|
+
const emailReadTools = registeredToolNames(["email:read"]).sort();
|
|
27
|
+
assert.deepEqual(emailReadTools, [...READ_TOOL_NAMES].sort());
|
|
28
|
+
assert.equal(emailReadTools.includes("migma_send_email"), false);
|
|
29
|
+
assert.equal(emailReadTools.includes("migma_create_webhook"), false);
|
|
30
|
+
assert.equal(registeredToolNames().length, TOOL_CATALOG.length);
|
|
31
|
+
});
|
|
32
|
+
test("read tools advertise readOnlyHint", () => {
|
|
33
|
+
const registered = registeredTools(["email:read"]);
|
|
34
|
+
for (const name of READ_TOOL_NAMES) {
|
|
35
|
+
assert.equal(registered[name]?.annotations?.readOnlyHint, true, `${name} should set readOnlyHint`);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
//# sourceMappingURL=catalog.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.test.js","sourceRoot":"","sources":["../../../src/tools/__tests__/catalog.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { Migma } from "migma";
|
|
3
3
|
import type { Config } from "../config.js";
|
|
4
|
-
export declare function registerCampaignTools(server: McpServer, client: Migma, config: Config): void;
|
|
4
|
+
export declare function registerCampaignTools(server: McpServer, client: Migma, config: Config, grantedPermissions?: string[]): void;
|
|
5
5
|
//# sourceMappingURL=campaigns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/tools/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAQ3C,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,KAAK,EACb,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,EAAE,QAwT9B"}
|