@apicity/mcp-server 0.2.10 → 0.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/README.md +31 -15
- package/dist/src/cli.d.ts +7 -0
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +54 -9
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/one-password.d.ts +9 -1
- package/dist/src/one-password.d.ts.map +1 -1
- package/dist/src/one-password.js +135 -4
- package/dist/src/one-password.js.map +1 -1
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +24 -1
- package/dist/src/server.js.map +1 -1
- package/package.json +17 -17
package/README.md
CHANGED
|
@@ -20,32 +20,43 @@ pnpm add @apicity/mcp-server
|
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
22
|
# Stdio server. Logs to stderr; stdout is reserved for MCP framing.
|
|
23
|
-
|
|
24
|
-
npx apicity-
|
|
23
|
+
OP_SERVICE_TOKEN=ops_... \
|
|
24
|
+
npx -y @apicity/mcp-server \
|
|
25
|
+
--op-vault Apicity \
|
|
26
|
+
--op-service-token env:OP_SERVICE_TOKEN
|
|
25
27
|
```
|
|
26
28
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
field, then pass
|
|
29
|
+
The CLI requires both `--op-vault` and `--op-service-token`. Put each provider
|
|
30
|
+
secret in a 1Password item named after the env var (`OPENAI_API_KEY`,
|
|
31
|
+
`ANTHROPIC_API_KEY`, etc.) with the value in the `password` field, then pass
|
|
32
|
+
the vault name and a 1Password service-account token:
|
|
30
33
|
|
|
31
34
|
```bash
|
|
32
|
-
npx -y @apicity/mcp-server
|
|
35
|
+
npx -y @apicity/mcp-server \
|
|
36
|
+
--op-vault Apicity \
|
|
37
|
+
--op-service-token env:OP_SERVICE_TOKEN
|
|
33
38
|
```
|
|
34
39
|
|
|
40
|
+
`--op-service-token` accepts a literal token, `env:VAR`, `$VAR`, or an existing
|
|
41
|
+
env var name. `APICITY_OP_VAULT` and `APICITY_OP_SERVICE_TOKEN` can also be
|
|
42
|
+
used instead of flags.
|
|
43
|
+
|
|
35
44
|
Claude Code setup:
|
|
36
45
|
|
|
37
46
|
```bash
|
|
38
47
|
claude mcp add --scope user apicity -- \
|
|
39
48
|
npx -y @apicity/mcp-server \
|
|
40
|
-
--op-vault Apicity
|
|
49
|
+
--op-vault Apicity \
|
|
50
|
+
--op-service-token env:OP_SERVICE_TOKEN
|
|
41
51
|
```
|
|
42
52
|
|
|
43
53
|
### Flags
|
|
44
54
|
|
|
45
55
|
| Flag | Description |
|
|
46
56
|
| ------------------------------ | -------------------------------------------------------------------------------------------------------------- |
|
|
47
|
-
| `--op-vault <vault>` | Resolve missing provider credentials from `op://<vault>/<ENV_VAR>/password` (or
|
|
48
|
-
| `--
|
|
57
|
+
| `--op-vault <vault>` | Required. Resolve missing provider credentials from `op://<vault>/<ENV_VAR>/password` (or `APICITY_OP_VAULT`). |
|
|
58
|
+
| `--op-service-token <token>` | Required. 1Password service-account token, `env:VAR`, `$VAR`, or env var name (or `APICITY_OP_SERVICE_TOKEN`). |
|
|
59
|
+
| `--output-dir <path>` | Override where binary results and downloaded media URLs land. Defaults to `CLAUDE_PROJECT_DIR`, then cwd. |
|
|
49
60
|
| `--providers <csv>` | Allow-list of providers (default: every one with its env var set). |
|
|
50
61
|
| `--paygate-secret-file <path>` | File holding the shared HMAC secret used to verify paid-endpoint OTPs (see [Paid endpoints](#paid-endpoints)). |
|
|
51
62
|
| `--help` | Print usage. |
|
|
@@ -70,10 +81,11 @@ claude mcp add --scope user apicity -- \
|
|
|
70
81
|
| `telegram` | `TELEGRAM_BOT_KEY` |
|
|
71
82
|
| `free` | _(none — public APIs)_ |
|
|
72
83
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
84
|
+
Before the MCP server starts, the CLI lists the vault once and resolves
|
|
85
|
+
existing provider secrets in one batch using `OP_SERVICE_ACCOUNT_TOKEN` scoped
|
|
86
|
+
to the child `op` process. Provider env vars that are already set are left
|
|
87
|
+
untouched. If `--providers` is set, a missing requested provider secret is a
|
|
88
|
+
startup error; without `--providers`, missing vault items are skipped.
|
|
77
89
|
|
|
78
90
|
## Tool naming
|
|
79
91
|
|
|
@@ -145,9 +157,13 @@ embed the registry into your own MCP server.
|
|
|
145
157
|
"-y",
|
|
146
158
|
"@apicity/mcp-server",
|
|
147
159
|
"--op-vault",
|
|
148
|
-
"Apicity"
|
|
160
|
+
"Apicity",
|
|
161
|
+
"--op-service-token",
|
|
162
|
+
"env:OP_SERVICE_TOKEN"
|
|
149
163
|
],
|
|
150
|
-
"env": {
|
|
164
|
+
"env": {
|
|
165
|
+
"OP_SERVICE_TOKEN": "ops_..."
|
|
166
|
+
}
|
|
151
167
|
}
|
|
152
168
|
}
|
|
153
169
|
}
|
package/dist/src/cli.d.ts
CHANGED
|
@@ -3,11 +3,18 @@ export interface ParsedArgs {
|
|
|
3
3
|
enabledProviders?: string[];
|
|
4
4
|
paygateSecretFile?: string;
|
|
5
5
|
opVault?: string;
|
|
6
|
+
opServiceToken?: string;
|
|
6
7
|
help: boolean;
|
|
7
8
|
}
|
|
9
|
+
export interface ResolvedOnePasswordOptions {
|
|
10
|
+
vault: string;
|
|
11
|
+
serviceAccountToken: string;
|
|
12
|
+
}
|
|
8
13
|
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
9
14
|
export declare function resolveOutputDir(explicitOutputDir?: string, env?: NodeJS.ProcessEnv, cwd?: string): string;
|
|
10
15
|
export declare function resolveOpVault(explicitOpVault?: string, env?: NodeJS.ProcessEnv): string | undefined;
|
|
16
|
+
export declare function resolveOpServiceToken(explicitOpServiceToken?: string, env?: NodeJS.ProcessEnv): string | undefined;
|
|
17
|
+
export declare function resolveRequiredOnePasswordOptions(args: Pick<ParsedArgs, "opVault" | "opServiceToken">, env?: NodeJS.ProcessEnv): ResolvedOnePasswordOptions;
|
|
11
18
|
export declare function printHelp(): void;
|
|
12
19
|
export declare function runCli(argv?: string[]): Promise<void>;
|
|
13
20
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4BpD;AAED,wBAAgB,gBAAgB,CAC9B,iBAAiB,CAAC,EAAE,MAAM,EAC1B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,GAAG,SAAgB,GAClB,MAAM,CAER;AAED,wBAAgB,cAAc,CAC5B,eAAe,CAAC,EAAE,MAAM,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,qBAAqB,CACnC,sBAAsB,CAAC,EAAE,MAAM,EAC/B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,GAAG,SAAS,CAWpB;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,gBAAgB,CAAC,EACpD,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,0BAA0B,CAU5B;AAED,wBAAgB,SAAS,IAAI,IAAI,CAkChC;AAED,wBAAsB,MAAM,CAAC,IAAI,WAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBxE"}
|
package/dist/src/cli.js
CHANGED
|
@@ -29,6 +29,12 @@ export function parseArgs(argv) {
|
|
|
29
29
|
else if (a.startsWith("--op-vault=")) {
|
|
30
30
|
out.opVault = a.slice(11);
|
|
31
31
|
}
|
|
32
|
+
else if (a === "--op-service-token") {
|
|
33
|
+
out.opServiceToken = argv[++i];
|
|
34
|
+
}
|
|
35
|
+
else if (a.startsWith("--op-service-token=")) {
|
|
36
|
+
out.opServiceToken = a.slice(19);
|
|
37
|
+
}
|
|
32
38
|
else {
|
|
33
39
|
console.error(`[apicity-mcp] unknown arg: ${a}`);
|
|
34
40
|
}
|
|
@@ -41,17 +47,47 @@ export function resolveOutputDir(explicitOutputDir, env = process.env, cwd = pro
|
|
|
41
47
|
export function resolveOpVault(explicitOpVault, env = process.env) {
|
|
42
48
|
return explicitOpVault ?? env.APICITY_OP_VAULT;
|
|
43
49
|
}
|
|
50
|
+
export function resolveOpServiceToken(explicitOpServiceToken, env = process.env) {
|
|
51
|
+
const tokenOrRef = explicitOpServiceToken ?? env.APICITY_OP_SERVICE_TOKEN;
|
|
52
|
+
if (!tokenOrRef)
|
|
53
|
+
return undefined;
|
|
54
|
+
if (tokenOrRef.startsWith("env:")) {
|
|
55
|
+
return resolveRequiredEnv(tokenOrRef.slice(4), "--op-service-token", env);
|
|
56
|
+
}
|
|
57
|
+
if (tokenOrRef.startsWith("$")) {
|
|
58
|
+
return resolveRequiredEnv(tokenOrRef.slice(1), "--op-service-token", env);
|
|
59
|
+
}
|
|
60
|
+
return env[tokenOrRef] ?? tokenOrRef;
|
|
61
|
+
}
|
|
62
|
+
export function resolveRequiredOnePasswordOptions(args, env = process.env) {
|
|
63
|
+
const vault = resolveOpVault(args.opVault, env);
|
|
64
|
+
if (!vault) {
|
|
65
|
+
throw new Error("--op-vault is required.");
|
|
66
|
+
}
|
|
67
|
+
const serviceAccountToken = resolveOpServiceToken(args.opServiceToken, env);
|
|
68
|
+
if (!serviceAccountToken) {
|
|
69
|
+
throw new Error("--op-service-token is required.");
|
|
70
|
+
}
|
|
71
|
+
return { vault, serviceAccountToken };
|
|
72
|
+
}
|
|
44
73
|
export function printHelp() {
|
|
45
74
|
console.error([
|
|
46
75
|
"apicity-mcp — MCP server exposing every @apicity provider endpoint as a tool.",
|
|
47
76
|
"",
|
|
48
77
|
"Usage:",
|
|
49
|
-
" apicity-mcp
|
|
78
|
+
" apicity-mcp --op-vault <vault> --op-service-token <token|env:VAR>",
|
|
79
|
+
" [--output-dir <path>] [--providers <csv>]",
|
|
50
80
|
"",
|
|
51
81
|
"Options:",
|
|
52
|
-
" --op-vault <vault> Resolve missing provider credentials from 1Password.",
|
|
82
|
+
" --op-vault <vault> Required. Resolve missing provider credentials from 1Password.",
|
|
53
83
|
" Looks for op://<vault>/<ENV_VAR>/password.",
|
|
54
84
|
" Can also be set with APICITY_OP_VAULT.",
|
|
85
|
+
" --op-service-token <token|env:VAR>",
|
|
86
|
+
" Required. Use a 1Password service-account token for",
|
|
87
|
+
" non-interactive credential reads. Literal tokens, env:VAR,",
|
|
88
|
+
" $VAR, or an existing env var name are accepted.",
|
|
89
|
+
" Can also be set with",
|
|
90
|
+
" APICITY_OP_SERVICE_TOKEN.",
|
|
55
91
|
" --output-dir <path> Directory to write binary results and downloaded media URLs.",
|
|
56
92
|
" Defaults to CLAUDE_PROJECT_DIR, then the current directory.",
|
|
57
93
|
" --providers <csv> Comma-separated provider allow-list (e.g. openai,xai,anthropic).",
|
|
@@ -73,13 +109,12 @@ export async function runCli(argv = process.argv.slice(2)) {
|
|
|
73
109
|
printHelp();
|
|
74
110
|
return;
|
|
75
111
|
}
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
112
|
+
const onePassword = resolveRequiredOnePasswordOptions(args);
|
|
113
|
+
await fillOnePasswordEnv({
|
|
114
|
+
vault: onePassword.vault,
|
|
115
|
+
enabledProviders: args.enabledProviders,
|
|
116
|
+
serviceAccountToken: onePassword.serviceAccountToken,
|
|
117
|
+
});
|
|
83
118
|
const paygateSecret = args.paygateSecretFile
|
|
84
119
|
? readFileSync(args.paygateSecretFile, "utf8").trim()
|
|
85
120
|
: undefined;
|
|
@@ -95,4 +130,14 @@ function parseProviderCsv(value) {
|
|
|
95
130
|
.map((provider) => provider.trim())
|
|
96
131
|
.filter(Boolean);
|
|
97
132
|
}
|
|
133
|
+
function resolveRequiredEnv(name, source, env) {
|
|
134
|
+
if (!name) {
|
|
135
|
+
throw new Error(`${source} env reference is empty.`);
|
|
136
|
+
}
|
|
137
|
+
const value = env[name];
|
|
138
|
+
if (!value) {
|
|
139
|
+
throw new Error(`${source} env reference ${name} is not set.`);
|
|
140
|
+
}
|
|
141
|
+
return value;
|
|
142
|
+
}
|
|
98
143
|
//# sourceMappingURL=cli.js.map
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { startServer, type StartServerOptions } from "./server.js";
|
|
2
|
-
export { parseArgs, resolveOpVault, resolveOutputDir, type ParsedArgs, } from "./cli.js";
|
|
3
|
-
export { fillOnePasswordEnv, getProviderEnvVars, onePasswordRef, readOnePasswordSecret, type OnePasswordEnvOptions, type OpRead, } from "./one-password.js";
|
|
2
|
+
export { parseArgs, resolveOpServiceToken, resolveOpVault, resolveOutputDir, resolveRequiredOnePasswordOptions, type ParsedArgs, type ResolvedOnePasswordOptions, } from "./cli.js";
|
|
3
|
+
export { fillOnePasswordEnv, getProviderEnvVars, injectOnePasswordSecrets, listOnePasswordItemTitles, onePasswordRef, readOnePasswordSecret, type OnePasswordEnvOptions, type OpInject, type OpListItemTitles, type OpRead, } from "./one-password.js";
|
|
4
4
|
export { buildRegistry, loadTsv, makeToolName, toSnakeCase, type Endpoint, type EndpointTsvRow, type BuildRegistryOptions, } from "./registry.js";
|
|
5
5
|
export { PROVIDERS, type ProviderSpec } from "./providers.js";
|
|
6
6
|
export { zodToJsonSchema, type JsonSchema } from "./schema.js";
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,iCAAiC,EACjC,KAAK,UAAU,EACf,KAAK,0BAA0B,GAChC,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,MAAM,GACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,OAAO,EACP,YAAY,EACZ,WAAW,EACX,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,QAAQ,GACT,MAAM,aAAa,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { startServer } from "./server.js";
|
|
2
|
-
export { parseArgs, resolveOpVault, resolveOutputDir, } from "./cli.js";
|
|
3
|
-
export { fillOnePasswordEnv, getProviderEnvVars, onePasswordRef, readOnePasswordSecret, } from "./one-password.js";
|
|
2
|
+
export { parseArgs, resolveOpServiceToken, resolveOpVault, resolveOutputDir, resolveRequiredOnePasswordOptions, } from "./cli.js";
|
|
3
|
+
export { fillOnePasswordEnv, getProviderEnvVars, injectOnePasswordSecrets, listOnePasswordItemTitles, onePasswordRef, readOnePasswordSecret, } from "./one-password.js";
|
|
4
4
|
export { buildRegistry, loadTsv, makeToolName, toSnakeCase, } from "./registry.js";
|
|
5
5
|
export { PROVIDERS } from "./providers.js";
|
|
6
6
|
export { zodToJsonSchema } from "./schema.js";
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,SAAS,EACT,cAAc,EACd,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,iCAAiC,GAGlC,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,qBAAqB,GAKtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,aAAa,EACb,OAAO,EACP,YAAY,EACZ,WAAW,GAIZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAqB,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAmB,MAAM,aAAa,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,QAAQ,GACT,MAAM,aAAa,CAAC"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
export type OpRead = (ref: string) => Promise<string>;
|
|
2
|
+
export type OpListItemTitles = (vault: string) => Promise<string[]>;
|
|
3
|
+
export type OpInject = (template: string) => Promise<string>;
|
|
2
4
|
export interface OnePasswordEnvOptions {
|
|
3
5
|
vault: string;
|
|
6
|
+
serviceAccountToken: string;
|
|
4
7
|
enabledProviders?: string[];
|
|
5
8
|
env?: NodeJS.ProcessEnv;
|
|
6
9
|
readSecret?: OpRead;
|
|
10
|
+
listItemTitles?: OpListItemTitles;
|
|
11
|
+
injectSecrets?: OpInject;
|
|
7
12
|
concurrency?: number;
|
|
13
|
+
timeoutMs?: number;
|
|
8
14
|
}
|
|
9
15
|
export declare function fillOnePasswordEnv(opts: OnePasswordEnvOptions): Promise<void>;
|
|
10
16
|
export declare function getProviderEnvVars(enabledProviders?: string[]): string[];
|
|
11
17
|
export declare function onePasswordRef(vault: string, envVar: string): string;
|
|
12
|
-
export declare function readOnePasswordSecret(ref: string): Promise<string>;
|
|
18
|
+
export declare function readOnePasswordSecret(ref: string, timeoutMs?: number, serviceAccountToken?: string): Promise<string>;
|
|
19
|
+
export declare function listOnePasswordItemTitles(vault: string, timeoutMs?: number, serviceAccountToken?: string): Promise<string[]>;
|
|
20
|
+
export declare function injectOnePasswordSecrets(template: string, timeoutMs?: number, serviceAccountToken?: string): Promise<string>;
|
|
13
21
|
//# sourceMappingURL=one-password.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"one-password.d.ts","sourceRoot":"","sources":["../../src/one-password.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"one-password.d.ts","sourceRoot":"","sources":["../../src/one-password.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AACtD,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACpE,MAAM,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAKD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED,wBAAgB,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAexE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,SAAS,SAAwB,EACjC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,MAAM,CAAC,CAcjB;AAED,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,MAAM,EACb,SAAS,SAAwB,EACjC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,MAAM,EAAE,CAAC,CA8BnB;AAED,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAwB,EACjC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,MAAM,CAAC,CAOjB"}
|
package/dist/src/one-password.js
CHANGED
|
@@ -1,14 +1,21 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
1
|
+
import { execFile, spawn } from "node:child_process";
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
3
|
import { PROVIDERS } from "./providers.js";
|
|
4
4
|
const execFileAsync = promisify(execFile);
|
|
5
5
|
const DEFAULT_OP_READ_CONCURRENCY = 6;
|
|
6
|
+
const DEFAULT_OP_TIMEOUT_MS = 10_000;
|
|
6
7
|
export async function fillOnePasswordEnv(opts) {
|
|
7
8
|
const env = opts.env ?? process.env;
|
|
8
|
-
const readSecret = opts.readSecret ?? readOnePasswordSecret;
|
|
9
9
|
const providerEnvVars = getProviderEnvVars(opts.enabledProviders);
|
|
10
10
|
const required = opts.enabledProviders !== undefined;
|
|
11
11
|
const missingEnvVars = providerEnvVars.filter((envVar) => !hasResolvedEnvValue(env[envVar]));
|
|
12
|
+
if (missingEnvVars.length === 0)
|
|
13
|
+
return;
|
|
14
|
+
if (!opts.readSecret) {
|
|
15
|
+
await fillOnePasswordEnvBatch(opts, env, missingEnvVars, required);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const readSecret = opts.readSecret;
|
|
12
19
|
const concurrency = normalizeConcurrency(opts.concurrency ?? DEFAULT_OP_READ_CONCURRENCY, missingEnvVars.length);
|
|
13
20
|
let next = 0;
|
|
14
21
|
let firstError;
|
|
@@ -48,9 +55,9 @@ export function getProviderEnvVars(enabledProviders) {
|
|
|
48
55
|
export function onePasswordRef(vault, envVar) {
|
|
49
56
|
return `op://${vault}/${envVar}/password`;
|
|
50
57
|
}
|
|
51
|
-
export async function readOnePasswordSecret(ref) {
|
|
58
|
+
export async function readOnePasswordSecret(ref, timeoutMs = DEFAULT_OP_TIMEOUT_MS, serviceAccountToken) {
|
|
52
59
|
try {
|
|
53
|
-
const { stdout } = await execFileAsync("op", ["read", "--no-newline", ref]);
|
|
60
|
+
const { stdout } = await execFileAsync("op", ["read", "--no-newline", ref], { timeout: timeoutMs, env: opEnv(serviceAccountToken) });
|
|
54
61
|
return stdout.trim();
|
|
55
62
|
}
|
|
56
63
|
catch (err) {
|
|
@@ -60,6 +67,130 @@ export async function readOnePasswordSecret(ref) {
|
|
|
60
67
|
throw err;
|
|
61
68
|
}
|
|
62
69
|
}
|
|
70
|
+
export async function listOnePasswordItemTitles(vault, timeoutMs = DEFAULT_OP_TIMEOUT_MS, serviceAccountToken) {
|
|
71
|
+
try {
|
|
72
|
+
const { stdout } = await execFileAsync("op", ["item", "list", "--vault", vault, "--format", "json"], {
|
|
73
|
+
timeout: timeoutMs,
|
|
74
|
+
maxBuffer: 2 * 1024 * 1024,
|
|
75
|
+
env: opEnv(serviceAccountToken),
|
|
76
|
+
});
|
|
77
|
+
const parsed = JSON.parse(stdout);
|
|
78
|
+
if (!Array.isArray(parsed)) {
|
|
79
|
+
throw new Error("Expected `op item list --format json` to return an array.");
|
|
80
|
+
}
|
|
81
|
+
return parsed
|
|
82
|
+
.map((item) => {
|
|
83
|
+
if (typeof item !== "object" || item === null)
|
|
84
|
+
return undefined;
|
|
85
|
+
const title = item.title;
|
|
86
|
+
return typeof title === "string" ? title : undefined;
|
|
87
|
+
})
|
|
88
|
+
.filter((title) => title !== undefined);
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
if (err.code === "ENOENT") {
|
|
92
|
+
throw new Error("1Password CLI `op` was not found in PATH.");
|
|
93
|
+
}
|
|
94
|
+
throw err;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export async function injectOnePasswordSecrets(template, timeoutMs = DEFAULT_OP_TIMEOUT_MS, serviceAccountToken) {
|
|
98
|
+
return await runOpWithInput(["inject", "--in-file", "/dev/stdin"], template, timeoutMs, serviceAccountToken);
|
|
99
|
+
}
|
|
100
|
+
async function fillOnePasswordEnvBatch(opts, env, missingEnvVars, required) {
|
|
101
|
+
const timeoutMs = opts.timeoutMs ?? DEFAULT_OP_TIMEOUT_MS;
|
|
102
|
+
const listItemTitles = opts.listItemTitles ??
|
|
103
|
+
((vault) => listOnePasswordItemTitles(vault, timeoutMs, opts.serviceAccountToken));
|
|
104
|
+
const injectSecrets = opts.injectSecrets ??
|
|
105
|
+
((template) => injectOnePasswordSecrets(template, timeoutMs, opts.serviceAccountToken));
|
|
106
|
+
const itemTitles = new Set(await listItemTitles(opts.vault));
|
|
107
|
+
const availableEnvVars = missingEnvVars.filter((envVar) => itemTitles.has(envVar));
|
|
108
|
+
const missingItems = missingEnvVars.filter((envVar) => !itemTitles.has(envVar));
|
|
109
|
+
if (required && missingItems.length > 0) {
|
|
110
|
+
throw new Error(`Missing 1Password secret for ${missingItems[0]}. Expected ` +
|
|
111
|
+
`${onePasswordRef(opts.vault, missingItems[0])}.`);
|
|
112
|
+
}
|
|
113
|
+
if (availableEnvVars.length === 0)
|
|
114
|
+
return;
|
|
115
|
+
const injected = await injectSecrets(availableEnvVars
|
|
116
|
+
.map((envVar) => `${envVar}={{ ${onePasswordRef(opts.vault, envVar)} }}`)
|
|
117
|
+
.join("\n"));
|
|
118
|
+
const values = parseInjectedEnv(injected);
|
|
119
|
+
for (const envVar of availableEnvVars) {
|
|
120
|
+
const value = values[envVar];
|
|
121
|
+
if (hasResolvedEnvValue(value))
|
|
122
|
+
env[envVar] = value;
|
|
123
|
+
else if (required) {
|
|
124
|
+
throw new Error(`Missing 1Password secret for ${envVar}. Expected ` +
|
|
125
|
+
`${onePasswordRef(opts.vault, envVar)}.`);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
function parseInjectedEnv(injected) {
|
|
130
|
+
const values = {};
|
|
131
|
+
for (const line of injected.split(/\r?\n/)) {
|
|
132
|
+
const eq = line.indexOf("=");
|
|
133
|
+
if (eq <= 0)
|
|
134
|
+
continue;
|
|
135
|
+
values[line.slice(0, eq)] = line.slice(eq + 1);
|
|
136
|
+
}
|
|
137
|
+
return values;
|
|
138
|
+
}
|
|
139
|
+
async function runOpWithInput(args, input, timeoutMs, serviceAccountToken) {
|
|
140
|
+
return await new Promise((resolve, reject) => {
|
|
141
|
+
const child = spawn("op", args, {
|
|
142
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
143
|
+
env: opEnv(serviceAccountToken),
|
|
144
|
+
});
|
|
145
|
+
let stdout = "";
|
|
146
|
+
let stderr = "";
|
|
147
|
+
let timedOut = false;
|
|
148
|
+
const timer = setTimeout(() => {
|
|
149
|
+
timedOut = true;
|
|
150
|
+
child.kill("SIGTERM");
|
|
151
|
+
}, timeoutMs);
|
|
152
|
+
child.stdout.setEncoding("utf8");
|
|
153
|
+
child.stderr.setEncoding("utf8");
|
|
154
|
+
child.stdout.on("data", (chunk) => {
|
|
155
|
+
stdout += chunk;
|
|
156
|
+
});
|
|
157
|
+
child.stderr.on("data", (chunk) => {
|
|
158
|
+
stderr += chunk;
|
|
159
|
+
});
|
|
160
|
+
child.on("error", (err) => {
|
|
161
|
+
clearTimeout(timer);
|
|
162
|
+
if (err.code === "ENOENT") {
|
|
163
|
+
reject(new Error("1Password CLI `op` was not found in PATH."));
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
reject(err);
|
|
167
|
+
});
|
|
168
|
+
child.on("close", (code, signal) => {
|
|
169
|
+
clearTimeout(timer);
|
|
170
|
+
if (timedOut) {
|
|
171
|
+
reject(new Error(`1Password CLI \`op ${args.join(" ")}\` timed out after ` +
|
|
172
|
+
`${timeoutMs}ms.`));
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (code !== 0) {
|
|
176
|
+
reject(new Error(stderr.trim() ||
|
|
177
|
+
`1Password CLI \`op ${args.join(" ")}\` exited with ` +
|
|
178
|
+
`${signal ?? code}.`));
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
resolve(stdout);
|
|
182
|
+
});
|
|
183
|
+
child.stdin.end(input);
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
function opEnv(serviceAccountToken) {
|
|
187
|
+
if (!serviceAccountToken)
|
|
188
|
+
return process.env;
|
|
189
|
+
return {
|
|
190
|
+
...process.env,
|
|
191
|
+
OP_SERVICE_ACCOUNT_TOKEN: serviceAccountToken,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
63
194
|
function normalizeConcurrency(concurrency, jobCount) {
|
|
64
195
|
if (jobCount === 0)
|
|
65
196
|
return 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"one-password.js","sourceRoot":"","sources":["../../src/one-password.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"one-password.js","sourceRoot":"","sources":["../../src/one-password.ts"],"names":[],"mappings":"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"}
|
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":"AAiBA,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,CA6Cf"}
|
package/dist/src/server.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
1
2
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
3
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
3
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
@@ -10,7 +11,10 @@ export async function startServer(opts = {}) {
|
|
|
10
11
|
enabledProviders: opts.enabledProviders,
|
|
11
12
|
paygateSecret: opts.paygateSecret,
|
|
12
13
|
});
|
|
13
|
-
const server = new Server({
|
|
14
|
+
const server = new Server({
|
|
15
|
+
name: opts.name ?? "apicity",
|
|
16
|
+
version: opts.version ?? readPackageVersion(),
|
|
17
|
+
}, { capabilities: { tools: {} } });
|
|
14
18
|
const byName = new Map(endpoints.map((e) => [e.toolName, e]));
|
|
15
19
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
16
20
|
tools: endpoints.map((ep) => ({
|
|
@@ -196,4 +200,23 @@ function safeStringify(value) {
|
|
|
196
200
|
return String(value);
|
|
197
201
|
}
|
|
198
202
|
}
|
|
203
|
+
function readPackageVersion() {
|
|
204
|
+
for (const path of [
|
|
205
|
+
new URL("../package.json", import.meta.url),
|
|
206
|
+
new URL("../../package.json", import.meta.url),
|
|
207
|
+
]) {
|
|
208
|
+
try {
|
|
209
|
+
const pkg = JSON.parse(readFileSync(path, "utf8"));
|
|
210
|
+
if (typeof pkg === "object" && pkg !== null) {
|
|
211
|
+
const version = pkg.version;
|
|
212
|
+
if (typeof version === "string")
|
|
213
|
+
return version;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
/* try source/dist fallback */
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return "0.0.0";
|
|
221
|
+
}
|
|
199
222
|
//# sourceMappingURL=server.js.map
|
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,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,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;AAWrB,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B,EAAE;IAE7B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC;QACpC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,
|
|
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.
|
|
3
|
+
"version": "0.3.0",
|
|
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": {
|
|
@@ -47,22 +47,22 @@
|
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
49
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
50
|
-
"@apicity/alibaba": "0.
|
|
51
|
-
"@apicity/anthropic": "0.
|
|
52
|
-
"@apicity/
|
|
53
|
-
"@apicity/
|
|
54
|
-
"@apicity/
|
|
55
|
-
"@apicity/
|
|
56
|
-
"@apicity/
|
|
57
|
-
"@apicity/
|
|
58
|
-
"@apicity/
|
|
59
|
-
"@apicity/
|
|
60
|
-
"@apicity/
|
|
61
|
-
"@apicity/
|
|
62
|
-
"@apicity/
|
|
63
|
-
"@apicity/
|
|
64
|
-
"@apicity/xai": "0.
|
|
65
|
-
"@apicity/
|
|
50
|
+
"@apicity/alibaba": "0.3.0",
|
|
51
|
+
"@apicity/anthropic": "0.3.0",
|
|
52
|
+
"@apicity/cost": "0.3.0",
|
|
53
|
+
"@apicity/fal": "0.3.0",
|
|
54
|
+
"@apicity/fireworks": "0.3.0",
|
|
55
|
+
"@apicity/free-media-upload": "0.3.0",
|
|
56
|
+
"@apicity/elevenlabs": "0.3.0",
|
|
57
|
+
"@apicity/google": "0.3.0",
|
|
58
|
+
"@apicity/meta": "0.3.0",
|
|
59
|
+
"@apicity/kimicoding": "0.3.0",
|
|
60
|
+
"@apicity/kie": "0.3.0",
|
|
61
|
+
"@apicity/openai": "0.3.0",
|
|
62
|
+
"@apicity/telegram": "0.3.0",
|
|
63
|
+
"@apicity/x": "0.3.0",
|
|
64
|
+
"@apicity/xai": "0.3.0",
|
|
65
|
+
"@apicity/youtube": "0.3.0"
|
|
66
66
|
},
|
|
67
67
|
"homepage": "https://github.com/justintanner/apicity#readme",
|
|
68
68
|
"bugs": {
|