@apicity/mcp-server 0.2.9 → 0.2.10

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.
@@ -4,6 +4,7 @@ export interface OnePasswordEnvOptions {
4
4
  enabledProviders?: string[];
5
5
  env?: NodeJS.ProcessEnv;
6
6
  readSecret?: OpRead;
7
+ concurrency?: number;
7
8
  }
8
9
  export declare function fillOnePasswordEnv(opts: OnePasswordEnvOptions): Promise<void>;
9
10
  export declare function getProviderEnvVars(enabledProviders?: string[]): string[];
@@ -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;AAEtD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAoBf;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,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUxE"}
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;AAEtD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkCf;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,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUxE"}
@@ -2,25 +2,34 @@ import { execFile } 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
+ const DEFAULT_OP_READ_CONCURRENCY = 6;
5
6
  export async function fillOnePasswordEnv(opts) {
6
7
  const env = opts.env ?? process.env;
7
8
  const readSecret = opts.readSecret ?? readOnePasswordSecret;
8
9
  const providerEnvVars = getProviderEnvVars(opts.enabledProviders);
9
10
  const required = opts.enabledProviders !== undefined;
10
- for (const envVar of providerEnvVars) {
11
- if (hasResolvedEnvValue(env[envVar]))
12
- continue;
13
- const ref = onePasswordRef(opts.vault, envVar);
14
- try {
15
- env[envVar] = await readSecret(ref);
16
- }
17
- catch (err) {
18
- if (!required && isMissingOnePasswordItem(err))
19
- continue;
20
- throw new Error(`Missing 1Password secret for ${envVar}. Expected ${ref}. ` +
21
- `${errorMessage(err)}`);
11
+ const missingEnvVars = providerEnvVars.filter((envVar) => !hasResolvedEnvValue(env[envVar]));
12
+ const concurrency = normalizeConcurrency(opts.concurrency ?? DEFAULT_OP_READ_CONCURRENCY, missingEnvVars.length);
13
+ let next = 0;
14
+ let firstError;
15
+ async function worker() {
16
+ while (next < missingEnvVars.length) {
17
+ const envVar = missingEnvVars[next++];
18
+ try {
19
+ env[envVar] = await readSecret(onePasswordRef(opts.vault, envVar));
20
+ }
21
+ catch (err) {
22
+ const wrapped = wrapReadError(err, opts.vault, envVar, required);
23
+ if (wrapped && !firstError)
24
+ firstError = wrapped;
25
+ }
22
26
  }
23
27
  }
28
+ await Promise.all(Array.from({ length: concurrency }, async () => {
29
+ await worker();
30
+ }));
31
+ if (firstError)
32
+ throw firstError;
24
33
  }
25
34
  export function getProviderEnvVars(enabledProviders) {
26
35
  const envVars = [];
@@ -51,6 +60,20 @@ export async function readOnePasswordSecret(ref) {
51
60
  throw err;
52
61
  }
53
62
  }
63
+ function normalizeConcurrency(concurrency, jobCount) {
64
+ if (jobCount === 0)
65
+ return 0;
66
+ if (!Number.isFinite(concurrency) || concurrency < 1)
67
+ return 1;
68
+ return Math.min(Math.floor(concurrency), jobCount);
69
+ }
70
+ function wrapReadError(err, vault, envVar, required) {
71
+ if (!required && isMissingOnePasswordItem(err))
72
+ return undefined;
73
+ const ref = onePasswordRef(vault, envVar);
74
+ return new Error(`Missing 1Password secret for ${envVar}. Expected ${ref}. ` +
75
+ `${errorMessage(err)}`);
76
+ }
54
77
  function hasResolvedEnvValue(value) {
55
78
  return value !== undefined && value !== "" && !value.startsWith("op://");
56
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"one-password.js","sourceRoot":"","sources":["../../src/one-password.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"one-password.js","sourceRoot":"","sources":["../../src/one-password.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.9",
3
+ "version": "0.2.10",
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.2.9",
51
- "@apicity/cost": "0.2.9",
52
- "@apicity/fal": "0.2.9",
53
- "@apicity/elevenlabs": "0.2.9",
54
- "@apicity/fireworks": "0.2.9",
55
- "@apicity/anthropic": "0.2.9",
56
- "@apicity/google": "0.2.9",
57
- "@apicity/meta": "0.2.9",
58
- "@apicity/openai": "0.2.9",
59
- "@apicity/free-media-upload": "0.2.9",
60
- "@apicity/kie": "0.2.9",
61
- "@apicity/kimicoding": "0.2.9",
62
- "@apicity/telegram": "0.2.9",
63
- "@apicity/youtube": "0.2.9",
64
- "@apicity/x": "0.2.9",
65
- "@apicity/xai": "0.2.9"
50
+ "@apicity/alibaba": "0.2.10",
51
+ "@apicity/anthropic": "0.2.10",
52
+ "@apicity/fal": "0.2.10",
53
+ "@apicity/fireworks": "0.2.10",
54
+ "@apicity/free-media-upload": "0.2.10",
55
+ "@apicity/elevenlabs": "0.2.10",
56
+ "@apicity/google": "0.2.10",
57
+ "@apicity/cost": "0.2.10",
58
+ "@apicity/kimicoding": "0.2.10",
59
+ "@apicity/meta": "0.2.10",
60
+ "@apicity/openai": "0.2.10",
61
+ "@apicity/youtube": "0.2.10",
62
+ "@apicity/x": "0.2.10",
63
+ "@apicity/kie": "0.2.10",
64
+ "@apicity/xai": "0.2.10",
65
+ "@apicity/telegram": "0.2.10"
66
66
  },
67
67
  "homepage": "https://github.com/justintanner/apicity#readme",
68
68
  "bugs": {