@apicity/mcp-server 0.2.0-alpha.1 → 0.2.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 +21 -5
- package/dist/src/bin.js +14 -0
- package/dist/src/bin.js.map +1 -1
- package/dist/src/providers.d.ts +1 -1
- package/dist/src/providers.d.ts.map +1 -1
- package/dist/src/providers.js +23 -14
- package/dist/src/providers.js.map +1 -1
- package/dist/src/registry.d.ts +2 -0
- package/dist/src/registry.d.ts.map +1 -1
- package/dist/src/registry.js +1 -1
- package/dist/src/registry.js.map +1 -1
- package/dist/src/server.d.ts +2 -0
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +62 -3
- package/dist/src/server.js.map +1 -1
- package/package.json +27 -26
package/README.md
CHANGED
|
@@ -28,11 +28,12 @@ OPENAI_API_KEY=sk-... ANTHROPIC_API_KEY=sk-... \
|
|
|
28
28
|
|
|
29
29
|
### Flags
|
|
30
30
|
|
|
31
|
-
| Flag
|
|
32
|
-
|
|
|
33
|
-
| `--output-dir <path>`
|
|
34
|
-
| `--providers <csv>`
|
|
35
|
-
| `--
|
|
31
|
+
| Flag | Description |
|
|
32
|
+
| ------------------------------ | -------------------------------------------------------------------------------------------------------------- |
|
|
33
|
+
| `--output-dir <path>` | Where binary results and downloaded media URLs land. |
|
|
34
|
+
| `--providers <csv>` | Allow-list of providers (default: every one with its env var set). |
|
|
35
|
+
| `--paygate-secret-file <path>` | File holding the shared HMAC secret used to verify paid-endpoint OTPs (see [Paid endpoints](#paid-endpoints)). |
|
|
36
|
+
| `--help` | Print usage. |
|
|
36
37
|
|
|
37
38
|
### Credentials
|
|
38
39
|
|
|
@@ -81,6 +82,21 @@ When `--output-dir` is set:
|
|
|
81
82
|
Without `--output-dir`, binary results are summarized as a byte count and URLs
|
|
82
83
|
pass through untouched.
|
|
83
84
|
|
|
85
|
+
## Paid endpoints
|
|
86
|
+
|
|
87
|
+
A few endpoints incur direct marginal cost (e.g. `kie_api_v1_jobs_createTask`
|
|
88
|
+
for video/image generation) and are gated behind a single-use OTP. The server
|
|
89
|
+
is the **code client**: pass `--paygate-secret-file <path>` and it holds the
|
|
90
|
+
shared HMAC secret to **verify** OTPs — it never mints them. Paid tools
|
|
91
|
+
advertise an extra optional `otp` argument.
|
|
92
|
+
|
|
93
|
+
To run a paid call, a human mints an OTP out-of-band from the same secret
|
|
94
|
+
(`apicity-paygate otp mint --secret-file … --dot-path api.v1.jobs.createTask
|
|
95
|
+
--payload-file request.json --ttl 10m`) and the caller passes it as the tool's
|
|
96
|
+
`otp` argument. Because the AI driving the tool never sees the secret, it cannot
|
|
97
|
+
self-approve: with no `otp` (or no secret configured) the paid call fails closed.
|
|
98
|
+
See [@apicity/cost](../provider/cost) for the full spec.
|
|
99
|
+
|
|
84
100
|
## Programmatic use
|
|
85
101
|
|
|
86
102
|
```ts
|
package/dist/src/bin.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
2
3
|
import { startServer } from "./server.js";
|
|
3
4
|
function parseArgs(argv) {
|
|
4
5
|
const out = { help: false };
|
|
@@ -16,6 +17,12 @@ function parseArgs(argv) {
|
|
|
16
17
|
else if (a.startsWith("--providers=")) {
|
|
17
18
|
out.enabledProviders = a.slice(12).split(",").filter(Boolean);
|
|
18
19
|
}
|
|
20
|
+
else if (a === "--paygate-secret-file") {
|
|
21
|
+
out.paygateSecretFile = argv[++i];
|
|
22
|
+
}
|
|
23
|
+
else if (a.startsWith("--paygate-secret-file=")) {
|
|
24
|
+
out.paygateSecretFile = a.slice(22);
|
|
25
|
+
}
|
|
19
26
|
else {
|
|
20
27
|
console.error(`[apicity-mcp] unknown arg: ${a}`);
|
|
21
28
|
}
|
|
@@ -34,6 +41,9 @@ function printHelp() {
|
|
|
34
41
|
" If omitted, binaries are summarized and URLs are returned as-is.",
|
|
35
42
|
" --providers <csv> Comma-separated provider allow-list (e.g. openai,xai,anthropic).",
|
|
36
43
|
" Defaults to every provider with its env var set.",
|
|
44
|
+
" --paygate-secret-file <path> File holding the shared HMAC secret used to verify",
|
|
45
|
+
" OTPs for paid endpoints (e.g. kie createTask). The server only",
|
|
46
|
+
" verifies OTPs; operators mint them out-of-band with apicity-paygate.",
|
|
37
47
|
"",
|
|
38
48
|
"Credentials are read from env vars: OPENAI_API_KEY, XAI_API_KEY, ANTHROPIC_API_KEY,",
|
|
39
49
|
"FIREWORKS_API_KEY, FAL_API_KEY, KIE_API_KEY, KIMI_CODING_API_KEY, DASHSCOPE_API_KEY,",
|
|
@@ -45,9 +55,13 @@ if (args.help) {
|
|
|
45
55
|
printHelp();
|
|
46
56
|
process.exit(0);
|
|
47
57
|
}
|
|
58
|
+
const paygateSecret = args.paygateSecretFile
|
|
59
|
+
? readFileSync(args.paygateSecretFile, "utf8").trim()
|
|
60
|
+
: undefined;
|
|
48
61
|
startServer({
|
|
49
62
|
outputDir: args.outputDir,
|
|
50
63
|
enabledProviders: args.enabledProviders,
|
|
64
|
+
paygateSecret,
|
|
51
65
|
}).catch((err) => {
|
|
52
66
|
console.error("[apicity-mcp] fatal:", err);
|
|
53
67
|
process.exit(1);
|
package/dist/src/bin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../src/bin.ts"],"names":[],"mappings":"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"}
|
package/dist/src/providers.d.ts
CHANGED
|
@@ -6,5 +6,5 @@ export interface ProviderSpec {
|
|
|
6
6
|
}
|
|
7
7
|
export declare const PROVIDERS: Record<string, ProviderSpec>;
|
|
8
8
|
export type InstantiatedProvider = Record<string, unknown>;
|
|
9
|
-
export declare function instantiateProvider(name: string, spec: ProviderSpec): Promise<InstantiatedProvider | null>;
|
|
9
|
+
export declare function instantiateProvider(name: string, spec: ProviderSpec, paygateSecret?: string): Promise<InstantiatedProvider | null>;
|
|
10
10
|
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,QAAQ,GAAG,aAAa,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAOD,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAgFlD,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE3D,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,YAAY,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAwBtC"}
|
package/dist/src/providers.js
CHANGED
|
@@ -4,88 +4,91 @@
|
|
|
4
4
|
//
|
|
5
5
|
// Keeping factory imports dynamic means a missing provider package doesn't
|
|
6
6
|
// crash the server — that provider just gets skipped.
|
|
7
|
+
import { PAID_ENDPOINTS } from "@apicity/cost";
|
|
8
|
+
/** Provider names that have at least one paid endpoint in the registry. */
|
|
9
|
+
const PROVIDERS_WITH_PAID_ENDPOINTS = new Set(PAID_ENDPOINTS.map((e) => e.key.provider));
|
|
7
10
|
export const PROVIDERS = {
|
|
8
11
|
openai: {
|
|
9
12
|
envVar: "OPENAI_API_KEY",
|
|
10
13
|
optionKey: "apiKey",
|
|
11
14
|
importPath: "@apicity/openai",
|
|
12
|
-
factoryName: "
|
|
15
|
+
factoryName: "createOpenAi",
|
|
13
16
|
},
|
|
14
17
|
xai: {
|
|
15
18
|
envVar: "XAI_API_KEY",
|
|
16
19
|
optionKey: "apiKey",
|
|
17
20
|
importPath: "@apicity/xai",
|
|
18
|
-
factoryName: "
|
|
21
|
+
factoryName: "createXai",
|
|
19
22
|
},
|
|
20
23
|
anthropic: {
|
|
21
24
|
envVar: "ANTHROPIC_API_KEY",
|
|
22
25
|
optionKey: "apiKey",
|
|
23
26
|
importPath: "@apicity/anthropic",
|
|
24
|
-
factoryName: "
|
|
27
|
+
factoryName: "createAnthropic",
|
|
25
28
|
},
|
|
26
29
|
fireworks: {
|
|
27
30
|
envVar: "FIREWORKS_API_KEY",
|
|
28
31
|
optionKey: "apiKey",
|
|
29
32
|
importPath: "@apicity/fireworks",
|
|
30
|
-
factoryName: "
|
|
33
|
+
factoryName: "createFireworks",
|
|
31
34
|
},
|
|
32
35
|
fal: {
|
|
33
36
|
envVar: "FAL_API_KEY",
|
|
34
37
|
optionKey: "apiKey",
|
|
35
38
|
importPath: "@apicity/fal",
|
|
36
|
-
factoryName: "
|
|
39
|
+
factoryName: "createFal",
|
|
37
40
|
},
|
|
38
41
|
kie: {
|
|
39
42
|
envVar: "KIE_API_KEY",
|
|
40
43
|
optionKey: "apiKey",
|
|
41
44
|
importPath: "@apicity/kie",
|
|
42
|
-
factoryName: "
|
|
45
|
+
factoryName: "createKie",
|
|
43
46
|
},
|
|
44
47
|
kimicoding: {
|
|
45
48
|
envVar: "KIMI_CODING_API_KEY",
|
|
46
49
|
optionKey: "apiKey",
|
|
47
50
|
importPath: "@apicity/kimicoding",
|
|
48
|
-
factoryName: "
|
|
51
|
+
factoryName: "createKimiCoding",
|
|
49
52
|
},
|
|
50
53
|
alibaba: {
|
|
51
54
|
envVar: "DASHSCOPE_API_KEY",
|
|
52
55
|
optionKey: "apiKey",
|
|
53
56
|
importPath: "@apicity/alibaba",
|
|
54
|
-
factoryName: "
|
|
57
|
+
factoryName: "createAlibaba",
|
|
55
58
|
},
|
|
56
59
|
elevenlabs: {
|
|
57
60
|
envVar: "ELEVENLABS_API_KEY",
|
|
58
61
|
optionKey: "apiKey",
|
|
59
62
|
importPath: "@apicity/elevenlabs",
|
|
60
|
-
factoryName: "
|
|
63
|
+
factoryName: "createElevenLabs",
|
|
61
64
|
},
|
|
62
65
|
x: {
|
|
63
66
|
envVar: "X_ACCESS_TOKEN",
|
|
64
67
|
optionKey: "accessToken",
|
|
65
68
|
importPath: "@apicity/x",
|
|
66
|
-
factoryName: "
|
|
69
|
+
factoryName: "createX",
|
|
67
70
|
},
|
|
68
71
|
meta: {
|
|
69
72
|
envVar: "IG_ACCESS_TOKEN",
|
|
70
73
|
optionKey: "accessToken",
|
|
71
74
|
importPath: "@apicity/meta",
|
|
72
|
-
factoryName: "
|
|
75
|
+
factoryName: "createMeta",
|
|
73
76
|
},
|
|
74
77
|
// free needs no credential — handled specially in registry.ts
|
|
75
78
|
"free-media-upload": {
|
|
76
79
|
envVar: "",
|
|
77
80
|
optionKey: "apiKey",
|
|
78
81
|
importPath: "@apicity/free-media-upload",
|
|
79
|
-
factoryName: "
|
|
82
|
+
factoryName: "createFreeMediaUpload",
|
|
80
83
|
},
|
|
81
84
|
youtube: {
|
|
82
85
|
envVar: "YOUTUBE_ACCESS_TOKEN",
|
|
83
86
|
optionKey: "accessToken",
|
|
84
87
|
importPath: "@apicity/youtube",
|
|
85
|
-
factoryName: "
|
|
88
|
+
factoryName: "createYouTube",
|
|
86
89
|
},
|
|
87
90
|
};
|
|
88
|
-
export async function instantiateProvider(name, spec) {
|
|
91
|
+
export async function instantiateProvider(name, spec, paygateSecret) {
|
|
89
92
|
const mod = (await import(spec.importPath));
|
|
90
93
|
const factory = mod[spec.factoryName];
|
|
91
94
|
if (typeof factory !== "function") {
|
|
@@ -100,6 +103,12 @@ export async function instantiateProvider(name, spec) {
|
|
|
100
103
|
const opts = {};
|
|
101
104
|
if (credential)
|
|
102
105
|
opts[spec.optionKey] = credential;
|
|
106
|
+
// The MCP server is the code client: it holds the shared secret to *verify*
|
|
107
|
+
// OTPs, but never mints them. A human mints an OTP out-of-band and the caller
|
|
108
|
+
// passes it as the tool's `otp` argument, so the AI cannot self-approve.
|
|
109
|
+
if (paygateSecret && PROVIDERS_WITH_PAID_ENDPOINTS.has(name)) {
|
|
110
|
+
opts.paygate = { secret: paygateSecret };
|
|
111
|
+
}
|
|
103
112
|
return factory(opts);
|
|
104
113
|
}
|
|
105
114
|
//# sourceMappingURL=providers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,8EAA8E;AAC9E,oEAAoE;AACpE,EAAE;AACF,2EAA2E;AAC3E,sDAAsD;
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../src/providers.ts"],"names":[],"mappings":"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"}
|
package/dist/src/registry.d.ts
CHANGED
|
@@ -25,6 +25,8 @@ export declare function loadTsv(): Promise<EndpointTsvRow[]>;
|
|
|
25
25
|
export interface BuildRegistryOptions {
|
|
26
26
|
/** If set, only these provider names are loaded. Defaults to all with env vars. */
|
|
27
27
|
enabledProviders?: string[];
|
|
28
|
+
/** Shared HMAC secret used to verify OTPs for paid endpoints. */
|
|
29
|
+
paygateSecret?: string;
|
|
28
30
|
}
|
|
29
31
|
export declare function buildRegistry(opts?: BuildRegistryOptions): Promise<Endpoint[]>;
|
|
30
32
|
export declare function makeToolName(provider: string, method: string, dotPath: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,QAAS,SAAQ,cAAc;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAID,wBAAsB,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAoBzD;AAoBD,MAAM,WAAW,oBAAoB;IACnC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,eAAe,CAAC;CAC3B;AAED,MAAM,WAAW,QAAS,SAAQ,cAAc;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAID,wBAAsB,OAAO,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAoBzD;AAoBD,MAAM,WAAW,oBAAoB;IACnC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,aAAa,CACjC,IAAI,GAAE,oBAAyB,GAC9B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAmCrB;AAyED,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,MAAM,CAGR;AASD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKnD"}
|
package/dist/src/registry.js
CHANGED
|
@@ -48,7 +48,7 @@ export async function buildRegistry(opts = {}) {
|
|
|
48
48
|
if (!wanted.has(name))
|
|
49
49
|
continue;
|
|
50
50
|
try {
|
|
51
|
-
const inst = await instantiateProvider(name, spec);
|
|
51
|
+
const inst = await instantiateProvider(name, spec, opts.paygateSecret);
|
|
52
52
|
if (inst)
|
|
53
53
|
instances.set(name, inst);
|
|
54
54
|
}
|
package/dist/src/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EACL,SAAS,EACT,mBAAmB,GAEpB,MAAM,gBAAgB,CAAC;AA6BxB,MAAM,aAAa,GAAG,YAAY,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,OAAO;IAC3B,yEAAyE;IACzE,4EAA4E;IAC5E,2EAA2E;IAC3E,0CAA0C;IAC1C,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,2BAA2B,CAAC;QAChD,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,2BAA2B,CAAC;KAChE,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,GAAG,GAA2B,EAAE,CAAC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrE,OAAO,GAAgC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,UAAoB;IAC7C,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CACb,8CAA8C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtE,CAAC;AACJ,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
|
package/dist/src/server.d.ts
CHANGED
|
@@ -3,6 +3,8 @@ export interface StartServerOptions {
|
|
|
3
3
|
enabledProviders?: string[];
|
|
4
4
|
name?: string;
|
|
5
5
|
version?: string;
|
|
6
|
+
/** Shared HMAC secret used to verify OTPs for paid endpoints. */
|
|
7
|
+
paygateSecret?: string;
|
|
6
8
|
}
|
|
7
9
|
export declare function startServer(opts?: StartServerOptions): Promise<void>;
|
|
8
10
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/src/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,WAAW,CAC/B,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
|
package/dist/src/server.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
2
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
3
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
4
|
+
import { isPaidEndpoint } from "@apicity/cost";
|
|
4
5
|
import { buildRegistry } from "./registry.js";
|
|
5
6
|
import { zodToJsonSchema } from "./schema.js";
|
|
6
7
|
import { downloadUrlsInResult, guessExtension, isBinary, writeBinary, } from "./output.js";
|
|
7
8
|
export async function startServer(opts = {}) {
|
|
8
9
|
const endpoints = await buildRegistry({
|
|
9
10
|
enabledProviders: opts.enabledProviders,
|
|
11
|
+
paygateSecret: opts.paygateSecret,
|
|
10
12
|
});
|
|
11
13
|
const server = new Server({ name: opts.name ?? "apicity", version: opts.version ?? "0.1.0" }, { capabilities: { tools: {} } });
|
|
12
14
|
const byName = new Map(endpoints.map((e) => [e.toolName, e]));
|
|
@@ -37,6 +39,10 @@ export async function startServer(opts = {}) {
|
|
|
37
39
|
}
|
|
38
40
|
function describe(ep, outputDir) {
|
|
39
41
|
const lines = [`${ep.method} ${ep.fullUrl}`, `Docs: ${ep.docsUrl}`];
|
|
42
|
+
if (isPaidEndpoint(ep.provider, ep.method, ep.dotPath)) {
|
|
43
|
+
lines.push("PAID endpoint: requires an operator-minted `otp` (one-time approval). " +
|
|
44
|
+
"The OTP is bound to this exact request and is single-use.");
|
|
45
|
+
}
|
|
40
46
|
if (outputDir && isMediaEndpoint(ep)) {
|
|
41
47
|
lines.push(`Returned binary or media URLs are saved to: ${outputDir}`);
|
|
42
48
|
}
|
|
@@ -50,14 +56,26 @@ function describe(ep, outputDir) {
|
|
|
50
56
|
function isMediaEndpoint(ep) {
|
|
51
57
|
return /audio|image|video|speech|tts|generation|sound|upload|file/i.test(ep.dotPath);
|
|
52
58
|
}
|
|
59
|
+
const OTP_SCHEMA = {
|
|
60
|
+
type: "string",
|
|
61
|
+
description: "Operator-minted one-time approval token authorizing this paid call. " +
|
|
62
|
+
"Bound to this exact request and single-use; the AI cannot mint it.",
|
|
63
|
+
};
|
|
53
64
|
function buildInputSchema(ep) {
|
|
65
|
+
const paid = isPaidEndpoint(ep.provider, ep.method, ep.dotPath);
|
|
54
66
|
const body = zodToJsonSchema(ep.schema);
|
|
55
67
|
// If the endpoint takes path params (e.g., {taskId}), wrap them at the top
|
|
56
68
|
// level alongside the body fields and mark them required.
|
|
57
69
|
if (ep.pathParams.length === 0) {
|
|
58
|
-
if (body.type === "object")
|
|
59
|
-
return body;
|
|
60
|
-
|
|
70
|
+
if (body.type === "object") {
|
|
71
|
+
return paid ? withOtp(body) : body;
|
|
72
|
+
}
|
|
73
|
+
const obj = {
|
|
74
|
+
type: "object",
|
|
75
|
+
properties: {},
|
|
76
|
+
additionalProperties: true,
|
|
77
|
+
};
|
|
78
|
+
return paid ? withOtp(obj) : obj;
|
|
61
79
|
}
|
|
62
80
|
const properties = {};
|
|
63
81
|
const required = [];
|
|
@@ -75,15 +93,38 @@ function buildInputSchema(ep) {
|
|
|
75
93
|
description: "Request body (free-form)",
|
|
76
94
|
};
|
|
77
95
|
}
|
|
96
|
+
if (paid)
|
|
97
|
+
properties.otp = OTP_SCHEMA;
|
|
78
98
|
return { type: "object", properties, required };
|
|
79
99
|
}
|
|
100
|
+
/** Add an optional top-level `otp` property to an object schema. */
|
|
101
|
+
function withOtp(objSchema) {
|
|
102
|
+
const properties = {
|
|
103
|
+
...(objSchema.properties ?? {}),
|
|
104
|
+
otp: OTP_SCHEMA,
|
|
105
|
+
};
|
|
106
|
+
return { ...objSchema, properties };
|
|
107
|
+
}
|
|
80
108
|
async function invoke(ep, args) {
|
|
109
|
+
const paid = isPaidEndpoint(ep.provider, ep.method, ep.dotPath);
|
|
110
|
+
// For paid endpoints, peel the `otp` approval off the arguments before the
|
|
111
|
+
// rest is treated as the request body. The approval is forwarded as the final
|
|
112
|
+
// argument so the provider's pay gate can verify it (or fail closed).
|
|
113
|
+
let approval;
|
|
114
|
+
if (paid) {
|
|
115
|
+
approval = extractApproval(args);
|
|
116
|
+
args = stripApproval(args);
|
|
117
|
+
}
|
|
81
118
|
let pathArgs = [];
|
|
82
119
|
let body = args;
|
|
83
120
|
if (ep.pathParams.length > 0) {
|
|
84
121
|
pathArgs = ep.pathParams.map((p) => args[p]);
|
|
85
122
|
body = args.body ?? undefined;
|
|
86
123
|
}
|
|
124
|
+
if (paid) {
|
|
125
|
+
const result = await ep.fn(...pathArgs, body ?? {}, approval);
|
|
126
|
+
return await maybeBuffer(result);
|
|
127
|
+
}
|
|
87
128
|
if (body === undefined ||
|
|
88
129
|
(isPlainObject(body) && Object.keys(body).length === 0)) {
|
|
89
130
|
const result = await ep.fn(...pathArgs);
|
|
@@ -92,6 +133,24 @@ async function invoke(ep, args) {
|
|
|
92
133
|
const result = await ep.fn(...pathArgs, body);
|
|
93
134
|
return await maybeBuffer(result);
|
|
94
135
|
}
|
|
136
|
+
/** Read an `otp` approval from tool args (top-level `otp` or `approval.otp`). */
|
|
137
|
+
function extractApproval(args) {
|
|
138
|
+
if (typeof args.otp === "string")
|
|
139
|
+
return { otp: args.otp };
|
|
140
|
+
const approval = args.approval;
|
|
141
|
+
if (isPlainObject(approval) &&
|
|
142
|
+
typeof approval.otp === "string") {
|
|
143
|
+
return { otp: approval.otp };
|
|
144
|
+
}
|
|
145
|
+
return undefined;
|
|
146
|
+
}
|
|
147
|
+
/** Return a copy of args without the approval fields. */
|
|
148
|
+
function stripApproval(args) {
|
|
149
|
+
const { otp: _otp, approval: _approval, ...rest } = args;
|
|
150
|
+
void _otp;
|
|
151
|
+
void _approval;
|
|
152
|
+
return rest;
|
|
153
|
+
}
|
|
95
154
|
function isPlainObject(v) {
|
|
96
155
|
return typeof v === "object" && v !== null && !Array.isArray(v);
|
|
97
156
|
}
|
package/dist/src/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAiB,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAmB,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,QAAQ,EACR,WAAW,GACZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apicity/mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Optional MCP (Model Context Protocol) server that exposes every @apicity provider endpoint as a tool.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -46,21 +46,22 @@
|
|
|
46
46
|
"node": ">=18.0.0"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@modelcontextprotocol/sdk": "^1.29.0"
|
|
49
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
50
|
+
"@apicity/cost": "0.2.1"
|
|
50
51
|
},
|
|
51
52
|
"peerDependencies": {
|
|
52
|
-
"@apicity/alibaba": "0.2.
|
|
53
|
-
"@apicity/
|
|
54
|
-
"@apicity/
|
|
55
|
-
"@apicity/
|
|
56
|
-
"@apicity/
|
|
57
|
-
"@apicity/
|
|
58
|
-
"@apicity/
|
|
59
|
-
"@apicity/
|
|
60
|
-
"@apicity/
|
|
61
|
-
"@apicity/openai": "0.2.
|
|
62
|
-
"@apicity/x": "0.2.
|
|
63
|
-
"@apicity/xai": "0.2.
|
|
53
|
+
"@apicity/alibaba": "0.2.1",
|
|
54
|
+
"@apicity/elevenlabs": "0.2.1",
|
|
55
|
+
"@apicity/free-media-upload": "0.2.1",
|
|
56
|
+
"@apicity/anthropic": "0.2.1",
|
|
57
|
+
"@apicity/fal": "0.2.1",
|
|
58
|
+
"@apicity/fireworks": "0.2.1",
|
|
59
|
+
"@apicity/kimicoding": "0.2.1",
|
|
60
|
+
"@apicity/kie": "0.2.1",
|
|
61
|
+
"@apicity/meta": "0.2.1",
|
|
62
|
+
"@apicity/openai": "0.2.1",
|
|
63
|
+
"@apicity/x": "0.2.1",
|
|
64
|
+
"@apicity/xai": "0.2.1"
|
|
64
65
|
},
|
|
65
66
|
"peerDependenciesMeta": {
|
|
66
67
|
"@apicity/alibaba": {
|
|
@@ -101,18 +102,18 @@
|
|
|
101
102
|
}
|
|
102
103
|
},
|
|
103
104
|
"devDependencies": {
|
|
104
|
-
"@apicity/
|
|
105
|
-
"@apicity/
|
|
106
|
-
"@apicity/
|
|
107
|
-
"@apicity/
|
|
108
|
-
"@apicity/
|
|
109
|
-
"@apicity/
|
|
110
|
-
"@apicity/meta": "0.2.
|
|
111
|
-
"@apicity/
|
|
112
|
-
"@apicity/
|
|
113
|
-
"@apicity/
|
|
114
|
-
"@apicity/x": "0.2.
|
|
115
|
-
"@apicity/xai": "0.2.
|
|
105
|
+
"@apicity/anthropic": "0.2.1",
|
|
106
|
+
"@apicity/alibaba": "0.2.1",
|
|
107
|
+
"@apicity/fireworks": "0.2.1",
|
|
108
|
+
"@apicity/free-media-upload": "0.2.1",
|
|
109
|
+
"@apicity/fal": "0.2.1",
|
|
110
|
+
"@apicity/kie": "0.2.1",
|
|
111
|
+
"@apicity/meta": "0.2.1",
|
|
112
|
+
"@apicity/openai": "0.2.1",
|
|
113
|
+
"@apicity/elevenlabs": "0.2.1",
|
|
114
|
+
"@apicity/kimicoding": "0.2.1",
|
|
115
|
+
"@apicity/x": "0.2.1",
|
|
116
|
+
"@apicity/xai": "0.2.1"
|
|
116
117
|
},
|
|
117
118
|
"homepage": "https://github.com/justintanner/apicity#readme",
|
|
118
119
|
"bugs": {
|