@polpo-ai/connect-server 0.15.144 → 0.16.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.
Files changed (83) hide show
  1. package/README.md +352 -1
  2. package/dist/custom-tool-runner-broker.d.ts +29 -0
  3. package/dist/custom-tool-runner-broker.d.ts.map +1 -0
  4. package/dist/custom-tool-runner-broker.js +140 -0
  5. package/dist/custom-tool-runner-broker.js.map +1 -0
  6. package/dist/definition-store.d.ts +10 -0
  7. package/dist/definition-store.d.ts.map +1 -0
  8. package/dist/definition-store.js +25 -0
  9. package/dist/definition-store.js.map +1 -0
  10. package/dist/index.d.ts +8 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +8 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/mcp-capability-resolver.d.ts +22 -0
  15. package/dist/mcp-capability-resolver.d.ts.map +1 -0
  16. package/dist/mcp-capability-resolver.js +110 -0
  17. package/dist/mcp-capability-resolver.js.map +1 -0
  18. package/dist/mcp-discovery.d.ts +7 -0
  19. package/dist/mcp-discovery.d.ts.map +1 -0
  20. package/dist/mcp-discovery.js +27 -0
  21. package/dist/mcp-discovery.js.map +1 -0
  22. package/dist/mcp-execution.d.ts +13 -0
  23. package/dist/mcp-execution.d.ts.map +1 -0
  24. package/dist/mcp-execution.js +14 -0
  25. package/dist/mcp-execution.js.map +1 -0
  26. package/dist/mcp-oauth-redirect.d.ts +4 -0
  27. package/dist/mcp-oauth-redirect.d.ts.map +1 -0
  28. package/dist/mcp-oauth-redirect.js +25 -0
  29. package/dist/mcp-oauth-redirect.js.map +1 -0
  30. package/dist/mcp-oauth.d.ts +12 -9
  31. package/dist/mcp-oauth.d.ts.map +1 -1
  32. package/dist/mcp-oauth.js +18 -6
  33. package/dist/mcp-oauth.js.map +1 -1
  34. package/dist/mcp-runner-broker.d.ts +29 -0
  35. package/dist/mcp-runner-broker.d.ts.map +1 -0
  36. package/dist/mcp-runner-broker.js +181 -0
  37. package/dist/mcp-runner-broker.js.map +1 -0
  38. package/dist/mcp-setup-clients.d.ts +24 -0
  39. package/dist/mcp-setup-clients.d.ts.map +1 -0
  40. package/dist/mcp-setup-clients.js +113 -0
  41. package/dist/mcp-setup-clients.js.map +1 -0
  42. package/dist/mcp-transport.d.ts +20 -0
  43. package/dist/mcp-transport.d.ts.map +1 -0
  44. package/dist/mcp-transport.js +163 -0
  45. package/dist/mcp-transport.js.map +1 -0
  46. package/dist/memory-store.d.ts +11 -2
  47. package/dist/memory-store.d.ts.map +1 -1
  48. package/dist/memory-store.js +81 -6
  49. package/dist/memory-store.js.map +1 -1
  50. package/dist/oauth-identity.d.ts +6 -0
  51. package/dist/oauth-identity.d.ts.map +1 -0
  52. package/dist/oauth-identity.js +30 -0
  53. package/dist/oauth-identity.js.map +1 -0
  54. package/dist/oauth-token-transport.d.ts +19 -0
  55. package/dist/oauth-token-transport.d.ts.map +1 -0
  56. package/dist/oauth-token-transport.js +133 -0
  57. package/dist/oauth-token-transport.js.map +1 -0
  58. package/dist/oauth.js +1 -1
  59. package/dist/oauth.js.map +1 -1
  60. package/dist/public-network.d.ts +11 -0
  61. package/dist/public-network.d.ts.map +1 -0
  62. package/dist/public-network.js +49 -0
  63. package/dist/public-network.js.map +1 -0
  64. package/dist/refresh-lineage.d.ts +21 -0
  65. package/dist/refresh-lineage.d.ts.map +1 -0
  66. package/dist/refresh-lineage.js +83 -0
  67. package/dist/refresh-lineage.js.map +1 -0
  68. package/dist/secrets.d.ts +2 -0
  69. package/dist/secrets.d.ts.map +1 -1
  70. package/dist/secrets.js.map +1 -1
  71. package/dist/service.d.ts +78 -8
  72. package/dist/service.d.ts.map +1 -1
  73. package/dist/service.js +1090 -403
  74. package/dist/service.js.map +1 -1
  75. package/dist/setup-lifecycle.d.ts +5 -0
  76. package/dist/setup-lifecycle.d.ts.map +1 -0
  77. package/dist/setup-lifecycle.js +36 -0
  78. package/dist/setup-lifecycle.js.map +1 -0
  79. package/dist/verification.d.ts +4 -0
  80. package/dist/verification.d.ts.map +1 -0
  81. package/dist/verification.js +76 -0
  82. package/dist/verification.js.map +1 -0
  83. package/package.json +4 -3
@@ -0,0 +1,22 @@
1
+ import { type ConnectionSlotSpec, type McpCapabilityResolver, type McpCapabilityResolveInput } from "@polpo-ai/core";
2
+ import { type ConnectionAccessResolverOptions, type ConnectionRecord } from "@polpo-ai/connect";
3
+ export interface McpConnectionEndpoint {
4
+ url: string;
5
+ transport?: "http" | "sse";
6
+ }
7
+ export interface ConnectionMcpCapabilityResolverOptions extends ConnectionAccessResolverOptions {
8
+ resolveSpec(input: McpCapabilityResolveInput): ConnectionSlotSpec | Promise<ConnectionSlotSpec>;
9
+ /** Resolve from the installed Connector/Connection, never the authored agent URL. */
10
+ resolveEndpoint(connection: ConnectionRecord): McpConnectionEndpoint | Promise<McpConnectionEndpoint>;
11
+ /** Credential materialization/refresh remains owned by the Connect service. */
12
+ resolveHeaders(connection: ConnectionRecord, input: McpCapabilityResolveInput): Promise<HeadersInit | undefined>;
13
+ /** Host-only dispatch quota; receives the persisted selected account/context. */
14
+ beforeDispatch?(connection: ConnectionRecord, input: McpCapabilityResolveInput): Promise<void>;
15
+ timeoutMs?: number;
16
+ /** Host transport seam; default transport validates and pins public DNS. */
17
+ fetch?: typeof globalThis.fetch;
18
+ }
19
+ /** Share account and grant authorization with API capabilities while keeping
20
+ * MCP lifecycle and tool calls native. One resolve owns one tool operation. */
21
+ export declare function createConnectionMcpCapabilityResolver(options: ConnectionMcpCapabilityResolverOptions): McpCapabilityResolver;
22
+ //# sourceMappingURL=mcp-capability-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-capability-resolver.d.ts","sourceRoot":"","sources":["../src/mcp-capability-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyD,KAAK,kBAAkB,EAAE,KAAK,qBAAqB,EACjH,KAAK,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAkC,KAAK,+BAA+B,EAC3E,KAAK,gBAAgB,EAAiC,MAAM,mBAAmB,CAAC;AAGlF,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC5B;AAED,MAAM,WAAW,sCAAuC,SAAQ,+BAA+B;IAC7F,WAAW,CAAC,KAAK,EAAE,yBAAyB,GAAG,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChG,qFAAqF;IACrF,eAAe,CAAC,UAAU,EAAE,gBAAgB,GAAG,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtG,+EAA+E;IAC/E,cAAc,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;IACjH,iFAAiF;IACjF,cAAc,CAAC,CAAC,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAMD;+EAC+E;AAC/E,wBAAgB,qCAAqC,CAAC,OAAO,EAAE,sCAAsC,GAAG,qBAAqB,CAyF5H"}
@@ -0,0 +1,110 @@
1
+ import { ConnectionSelectionError, createToolInvocationContext } from "@polpo-ai/core";
2
+ import { createConnectionAccessResolver } from "@polpo-ai/connect";
3
+ import { callRemoteMcpTool } from "./mcp-execution.js";
4
+ function endpointKey(endpoint) {
5
+ return JSON.stringify([new URL(endpoint.url).href, endpoint.transport ?? "http"]);
6
+ }
7
+ /** Share account and grant authorization with API capabilities while keeping
8
+ * MCP lifecycle and tool calls native. One resolve owns one tool operation. */
9
+ export function createConnectionMcpCapabilityResolver(options) {
10
+ const resolver = createConnectionAccessResolver(options);
11
+ return {
12
+ async resolve(original) {
13
+ const controller = new AbortController();
14
+ const abort = () => controller.abort();
15
+ const timeoutMs = Number.isFinite(options.timeoutMs) ? Math.min(Math.max(options.timeoutMs, 1), 30_000) : 30_000;
16
+ // One deadline covers acquisition, host policy, refresh and execution.
17
+ // Host adapters are not necessarily cancellable, so bound their waits too.
18
+ const timeout = setTimeout(abort, timeoutMs);
19
+ const cancelled = () => new ConnectionSelectionError("connection_scope_denied", "MCP invocation was cancelled or timed out");
20
+ const bounded = (work) => new Promise((resolve, reject) => {
21
+ if (controller.signal.aborted) {
22
+ reject(cancelled());
23
+ return;
24
+ }
25
+ const onAbort = () => reject(cancelled());
26
+ controller.signal.addEventListener("abort", onAbort, { once: true });
27
+ Promise.resolve().then(() => {
28
+ if (controller.signal.aborted)
29
+ throw cancelled();
30
+ return work();
31
+ }).then(value => {
32
+ if (controller.signal.aborted)
33
+ reject(cancelled());
34
+ else
35
+ resolve(value);
36
+ }, reject).finally(() => controller.signal.removeEventListener("abort", onAbort));
37
+ });
38
+ original.signal?.addEventListener("abort", abort, { once: true });
39
+ if (original.signal?.aborted)
40
+ controller.abort();
41
+ let access;
42
+ let consumed = false;
43
+ const dispose = () => {
44
+ clearTimeout(timeout);
45
+ controller.abort();
46
+ access?.dispose();
47
+ original.signal?.removeEventListener("abort", abort);
48
+ };
49
+ try {
50
+ const input = Object.freeze({ ...original, invocation: createToolInvocationContext(original.invocation), signal: controller.signal });
51
+ const spec = await bounded(() => options.resolveSpec(input));
52
+ access = await bounded(async () => {
53
+ const selected = await resolver.acquire({ spec, slot: input.serverName,
54
+ toolName: `mcp__${input.serverName}__${input.toolName}`, toolCallId: input.toolCallId,
55
+ invocation: input.invocation, signal: controller.signal });
56
+ if (controller.signal.aborted) {
57
+ selected.dispose();
58
+ throw cancelled();
59
+ }
60
+ return selected;
61
+ });
62
+ const acquired = access;
63
+ const boundInput = Object.freeze({ ...input, invocation: acquired.input.invocation });
64
+ const endpoint = Object.freeze({ ...await bounded(() => options.resolveEndpoint(acquired.connection)) });
65
+ const identity = endpointKey(endpoint);
66
+ const current = async () => {
67
+ const connection = await bounded(() => acquired.current());
68
+ if (endpointKey(await bounded(() => options.resolveEndpoint(connection))) !== identity) {
69
+ throw new ConnectionSelectionError("connection_scope_denied", "The acquired MCP endpoint has changed");
70
+ }
71
+ return connection;
72
+ };
73
+ return {
74
+ async call(arguments_) {
75
+ if (consumed || controller.signal.aborted)
76
+ throw new ConnectionSelectionError("connection_scope_denied", "MCP capability is no longer active");
77
+ consumed = true;
78
+ try {
79
+ await current();
80
+ return await callRemoteMcpTool({ ...endpoint, name: boundInput.toolName, arguments: arguments_,
81
+ signal: controller.signal, timeoutMs: options.timeoutMs, fetch: options.fetch,
82
+ beforeDispatch: options.beforeDispatch ? async () => {
83
+ const connection = await current();
84
+ await bounded(() => options.beforeDispatch(connection, boundInput));
85
+ await current();
86
+ } : undefined,
87
+ authorize: async () => {
88
+ const connection = await current();
89
+ const headers = await bounded(() => options.resolveHeaders(connection, boundInput));
90
+ // A refresh can yield long enough for a grant, binding, endpoint
91
+ // or installation to change. Deny before sending the result.
92
+ await current();
93
+ return headers;
94
+ }, });
95
+ }
96
+ finally {
97
+ dispose();
98
+ }
99
+ },
100
+ dispose,
101
+ };
102
+ }
103
+ catch (error) {
104
+ dispose();
105
+ throw error;
106
+ }
107
+ },
108
+ };
109
+ }
110
+ //# sourceMappingURL=mcp-capability-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-capability-resolver.js","sourceRoot":"","sources":["../src/mcp-capability-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
2
+ import { type RemoteMcpTransportInput } from "./mcp-transport.js";
3
+ export interface DiscoverRemoteMcpToolsInput extends RemoteMcpTransportInput {
4
+ }
5
+ /** Strict, read-only discovery. Transport failure is never an empty successful inventory. */
6
+ export declare function discoverRemoteMcpTools(input: DiscoverRemoteMcpToolsInput): Promise<Tool[]>;
7
+ //# sourceMappingURL=mcp-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-discovery.d.ts","sourceRoot":"","sources":["../src/mcp-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEvF,MAAM,WAAW,2BAA4B,SAAQ,uBAAuB;CAAG;AAM/E,6FAA6F;AAC7F,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAgBhG"}
@@ -0,0 +1,27 @@
1
+ import { ConnectError } from "@polpo-ai/connect";
2
+ import { withRemoteMcpClient } from "./mcp-transport.js";
3
+ const MAX_TOOLS = 1000;
4
+ const MAX_PAGES = 20;
5
+ const failed = (category) => new ConnectError("http_error", "MCP discovery failed", { details: { category } });
6
+ /** Strict, read-only discovery. Transport failure is never an empty successful inventory. */
7
+ export async function discoverRemoteMcpTools(input) {
8
+ return withRemoteMcpClient(input, async (client, signal) => {
9
+ const tools = [];
10
+ const cursors = new Set();
11
+ let cursor;
12
+ for (let page = 0; page < MAX_PAGES; page++) {
13
+ const result = await client.listTools(cursor ? { cursor } : undefined, { signal });
14
+ tools.push(...result.tools);
15
+ if (tools.length > MAX_TOOLS)
16
+ throw failed("inventory_too_large");
17
+ if (!result.nextCursor)
18
+ return tools;
19
+ if (cursors.has(result.nextCursor))
20
+ throw failed("invalid_pagination");
21
+ cursor = result.nextCursor;
22
+ cursors.add(cursor);
23
+ }
24
+ throw failed("inventory_too_large");
25
+ });
26
+ }
27
+ //# sourceMappingURL=mcp-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-discovery.js","sourceRoot":"","sources":["../src/mcp-discovery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAgC,MAAM,oBAAoB,CAAC;AAIvF,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,MAAM,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC,YAAY,EAAE,sBAAsB,EAAE,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AAEvH,6FAA6F;AAC7F,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAAkC;IAC7E,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACzD,MAAM,KAAK,GAAW,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,IAAI,MAA0B,CAAC;QAC/B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACnF,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS;gBAAE,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,UAAU;gBAAE,OAAO,KAAK,CAAC;YACrC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;gBAAE,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACvE,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import { type RemoteMcpTransportInput } from "./mcp-transport.js";
3
+ export interface CallRemoteMcpToolInput extends Omit<RemoteMcpTransportInput, "headers" | "authorize"> {
4
+ /** Name is fixed by the authorized capability, never chosen inside tool arguments. */
5
+ name: string;
6
+ arguments?: Record<string, unknown>;
7
+ /** Must recheck the acquired Connection/grant and resolve current credentials. */
8
+ authorize: () => Promise<HeadersInit | undefined>;
9
+ }
10
+ /** One bounded MCP call. Auth/refresh belong to Connect; the SDK may not start
11
+ * OAuth or persist tokens. The host supplies the Connection-owned endpoint. */
12
+ export declare function callRemoteMcpTool(input: CallRemoteMcpToolInput): Promise<CallToolResult>;
13
+ //# sourceMappingURL=mcp-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-execution.d.ts","sourceRoot":"","sources":["../src/mcp-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAE/F,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAEvF,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,uBAAuB,EAAE,SAAS,GAAG,WAAW,CAAC;IACpG,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,kFAAkF;IAClF,SAAS,EAAE,MAAM,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CACnD;AAED;+EAC+E;AAC/E,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,CAQ9F"}
@@ -0,0 +1,14 @@
1
+ import { CallToolResultSchema } from "@modelcontextprotocol/sdk/types.js";
2
+ import { ConnectError } from "@polpo-ai/connect";
3
+ import { withRemoteMcpClient } from "./mcp-transport.js";
4
+ /** One bounded MCP call. Auth/refresh belong to Connect; the SDK may not start
5
+ * OAuth or persist tokens. The host supplies the Connection-owned endpoint. */
6
+ export async function callRemoteMcpTool(input) {
7
+ if (typeof input.authorize !== "function" || typeof input.name !== "string" || !input.name.trim()
8
+ || input.name.length > 256 || (input.arguments !== undefined && (!input.arguments
9
+ || typeof input.arguments !== "object" || Array.isArray(input.arguments)))) {
10
+ throw new ConnectError("invalid_request", "MCP execution requires a tool name, object arguments and host authorization");
11
+ }
12
+ return withRemoteMcpClient(input, async (client, signal) => CallToolResultSchema.parse(await client.callTool({ name: input.name, arguments: input.arguments }, CallToolResultSchema, { signal })));
13
+ }
14
+ //# sourceMappingURL=mcp-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-execution.js","sourceRoot":"","sources":["../src/mcp-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAuB,MAAM,oCAAoC,CAAC;AAC/F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAgC,MAAM,oBAAoB,CAAC;AAUvF;+EAC+E;AAC/E,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAA6B;IACnE,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;WAC5F,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS;WAC5E,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,YAAY,CAAC,iBAAiB,EAAE,6EAA6E,CAAC,CAAC;IAC3H,CAAC;IACD,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CACzD,oBAAoB,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3I,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Browser callback only. Resource/metadata/provider endpoints keep their own
2
+ * HTTPS and network policies. The host still owns and allowlists this URI. */
3
+ export declare function normalizeMcpOAuthRedirect(value: string): string;
4
+ //# sourceMappingURL=mcp-oauth-redirect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-oauth-redirect.d.ts","sourceRoot":"","sources":["../src/mcp-oauth-redirect.ts"],"names":[],"mappings":"AAEA;8EAC8E;AAC9E,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAa/D"}
@@ -0,0 +1,25 @@
1
+ import { ConnectError, connectorHostnameIsUnsafe } from "@polpo-ai/connect";
2
+ /** Browser callback only. Resource/metadata/provider endpoints keep their own
3
+ * HTTPS and network policies. The host still owns and allowlists this URI. */
4
+ export function normalizeMcpOAuthRedirect(value) {
5
+ const invalid = () => new ConnectError("invalid_request", "MCP OAuth callback must use public HTTPS or a loopback address, without credentials or fragments");
6
+ let url;
7
+ try {
8
+ url = new URL(value);
9
+ }
10
+ catch {
11
+ throw invalid();
12
+ }
13
+ const loopback = url.hostname === "localhost" || url.hostname.endsWith(".localhost")
14
+ || url.hostname === "127.0.0.1" || url.hostname === "[::1]";
15
+ if (url.username || url.password || url.hash
16
+ || (url.protocol !== "https:" && !(loopback && url.protocol === "http:"))
17
+ || (!loopback && connectorHostnameIsUnsafe(url.hostname)))
18
+ throw invalid();
19
+ for (const key of url.searchParams.keys()) {
20
+ if (/^(access_token|refresh_token|client_secret|api[_-]?key|authorization|password|token|secret|code|state)$/i.test(key))
21
+ throw invalid();
22
+ }
23
+ return url.toString();
24
+ }
25
+ //# sourceMappingURL=mcp-oauth-redirect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-oauth-redirect.js","sourceRoot":"","sources":["../src/mcp-oauth-redirect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE5E;8EAC8E;AAC9E,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,iBAAiB,EAAE,kGAAkG,CAAC,CAAC;IAC9J,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,MAAM,OAAO,EAAE,CAAC;IAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC;WAC/E,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC9D,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI;WACvC,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;WACtE,CAAC,CAAC,QAAQ,IAAI,yBAAyB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAAE,MAAM,OAAO,EAAE,CAAC;IAC7E,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,IAAI,0GAA0G,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,MAAM,OAAO,EAAE,CAAC;IAC5I,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC"}
@@ -1,14 +1,15 @@
1
1
  import { type McpOAuthClientInformation, type McpOAuthClientMode, type McpOAuthInspection, type McpOAuthSecretMaterial, type TokenSet } from "@polpo-ai/connect";
2
+ export interface McpOAuthRegistrationLookup {
3
+ resource: string;
4
+ redirectUri: string;
5
+ mode: McpOAuthClientMode;
6
+ /** Hosts must key on this identity when present and must not fall back to an
7
+ * unkeyed registration. Includes configuration, issuer and client metadata. */
8
+ registrationKey?: string;
9
+ }
2
10
  export interface McpOAuthClientRegistrationStore {
3
- get(input: {
4
- resource: string;
5
- redirectUri: string;
6
- mode: McpOAuthClientMode;
7
- }): Promise<McpOAuthClientInformation | null>;
8
- set(input: {
9
- resource: string;
10
- redirectUri: string;
11
- mode: McpOAuthClientMode;
11
+ get(input: McpOAuthRegistrationLookup): Promise<McpOAuthClientInformation | null>;
12
+ set(input: McpOAuthRegistrationLookup & {
12
13
  client: McpOAuthClientInformation;
13
14
  }): Promise<void>;
14
15
  }
@@ -25,6 +26,8 @@ export interface StartMcpOAuthProtocolInput extends InspectMcpOAuthInput {
25
26
  clientUri?: string;
26
27
  clientMetadataUrl?: string;
27
28
  preRegisteredClient?: McpOAuthClientInformation;
29
+ /** Private host configuration fingerprint/namespace, independent of end-user identity. */
30
+ registrationNamespace?: string;
28
31
  }
29
32
  export interface StartMcpOAuthProtocolResult {
30
33
  authorizationUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-oauth.d.ts","sourceRoot":"","sources":["../src/mcp-oauth.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,+BAA+B;IAC9C,GAAG,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAA;KAAE,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAC3H,GAAG,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,yBAAyB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnI;AAED,MAAM,WAAW,oBAAoB;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE;AAEjF,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;CACjD;AAED,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,aAAa,CAAC,EAAE,+BAA+B,CAAC;IAChD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB;qBAGvC,oBAAoB,KAAG,OAAO,CAAC,kBAAkB,CAAC;mBA6BpD,0BAA0B,KAAG,OAAO,CAAC,2BAA2B,CAAC;sBAsB9D;QAAE,QAAQ,EAAE,sBAAsB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,KAAG,OAAO,CAAC,QAAQ,CAAC;qBAoBlG;QAAE,QAAQ,EAAE,sBAAsB,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAA;KAAE,KAAG,OAAO,CAAC,QAAQ,CAAC;EAiEjH"}
1
+ {"version":3,"file":"mcp-oauth.d.ts","sourceRoot":"","sources":["../src/mcp-oauth.ts"],"names":[],"mappings":"AAYA,OAAO,EAEL,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAI3B,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,kBAAkB,CAAC;IACzB;mFAC+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AACD,MAAM,WAAW,+BAA+B;IAC9C,GAAG,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAClF,GAAG,CAAC,KAAK,EAAE,0BAA0B,GAAG;QAAE,MAAM,EAAE,yBAAyB,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/F;AAED,MAAM,WAAW,oBAAoB;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE;AAEjF,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,kBAAkB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,yBAAyB,CAAC;IAChD,0FAA0F;IAC1F,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,aAAa,CAAC,EAAE,+BAA+B,CAAC;IAChD,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB;qBAGvC,oBAAoB,KAAG,OAAO,CAAC,kBAAkB,CAAC;mBAgCpD,0BAA0B,KAAG,OAAO,CAAC,2BAA2B,CAAC;sBAsB9D;QAAE,QAAQ,EAAE,sBAAsB,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,KAAG,OAAO,CAAC,QAAQ,CAAC;qBAoBlG;QAAE,QAAQ,EAAE,sBAAsB,CAAC;QAAC,cAAc,EAAE,MAAM,EAAE,CAAA;KAAE,KAAG,OAAO,CAAC,QAAQ,CAAC;EAuEjH"}
package/dist/mcp-oauth.js CHANGED
@@ -1,11 +1,17 @@
1
1
  import { discoverOAuthServerInfo, exchangeAuthorization, refreshAuthorization, registerClient, startAuthorization, } from "@modelcontextprotocol/sdk/client/auth.js";
2
2
  import { ConnectError, } from "@polpo-ai/connect";
3
+ import { createHash } from "node:crypto";
4
+ import { normalizeMcpOAuthRedirect } from "./mcp-oauth-redirect.js";
3
5
  export function createMcpOAuthProtocol(options) {
4
6
  const now = options.now ?? (() => new Date());
5
7
  async function inspect(input) {
6
8
  const url = normalizeHttpsUrl(input.url);
7
9
  try {
8
10
  const discovered = await discoverOAuthServerInfo(url, { fetchFn: options.fetch });
11
+ // An SDK fallback may return an origin without any OAuth metadata for
12
+ // public or static-key servers. This does not establish an auth method.
13
+ if (!discovered.authorizationServerMetadata)
14
+ throw new Error("OAuth metadata unavailable");
9
15
  const discovery = normalizeDiscovery(url, discovered.authorizationServerUrl, discovered.authorizationServerMetadata, discovered.resourceMetadata);
10
16
  const methods = discovery.codeChallengeMethodsSupported;
11
17
  if (methods && !methods.includes("S256")) {
@@ -33,7 +39,7 @@ export function createMcpOAuthProtocol(options) {
33
39
  if (!inspected.discovery) {
34
40
  throw new ConnectError("oauth_discovery_failed", "MCP OAuth metadata could not be discovered");
35
41
  }
36
- const redirectUri = normalizeHttpsUrl(input.redirectUri);
42
+ const redirectUri = normalizeMcpOAuthRedirect(input.redirectUri);
37
43
  const scopes = normalizeScopes(input.scopes ?? inspected.discovery.scopesSupported ?? []);
38
44
  const client = await resolveClient(input, inspected.discovery, redirectUri, scopes);
39
45
  const started = await startAuthorization(inspected.discovery.authorizationServer, {
@@ -103,9 +109,6 @@ export function createMcpOAuthProtocol(options) {
103
109
  if (!discovery.registrationEndpoint) {
104
110
  throw new ConnectError("oauth_registration_failed", "MCP authorization server does not support dynamic client registration");
105
111
  }
106
- const cached = await options.registrations?.get({ resource: discovery.resource, redirectUri, mode: input.mode });
107
- if (cached)
108
- return cached;
109
112
  const metadata = {
110
113
  client_name: input.clientName ?? "Polpo",
111
114
  redirect_uris: [redirectUri],
@@ -114,6 +117,15 @@ export function createMcpOAuthProtocol(options) {
114
117
  token_endpoint_auth_method: "none",
115
118
  ...(input.clientUri ? { client_uri: normalizeHttpsUrl(input.clientUri) } : {}),
116
119
  };
120
+ const registrationKey = createHash("sha256").update(JSON.stringify([
121
+ input.registrationNamespace ?? null, discovery.resource, discovery.authorizationServer,
122
+ discovery.authorizationEndpoint, discovery.tokenEndpoint, discovery.registrationEndpoint,
123
+ redirectUri, input.mode, metadata, [...scopes].sort(),
124
+ ])).digest("hex");
125
+ const lookup = { resource: discovery.resource, redirectUri, mode: input.mode, registrationKey };
126
+ const cached = await options.registrations?.get(lookup);
127
+ if (cached)
128
+ return cached;
117
129
  try {
118
130
  const registered = await registerClient(discovery.authorizationServer, {
119
131
  metadata: discovery.rawAuthorizationServerMetadata,
@@ -122,7 +134,7 @@ export function createMcpOAuthProtocol(options) {
122
134
  fetchFn: options.fetch,
123
135
  });
124
136
  const client = registered;
125
- await options.registrations?.set({ resource: discovery.resource, redirectUri, mode: input.mode, client });
137
+ await options.registrations?.set({ ...lookup, client });
126
138
  return client;
127
139
  }
128
140
  catch (error) {
@@ -164,7 +176,7 @@ function normalizeTokens(tokens, fallbackScopes, now, fallbackRefreshToken) {
164
176
  refreshToken: text(tokens.refresh_token) ?? fallbackRefreshToken,
165
177
  tokenType: text(tokens.token_type) ?? "Bearer",
166
178
  expiresAt: expiresIn === undefined ? undefined : new Date(now.getTime() + expiresIn * 1000).toISOString(),
167
- scopes: normalizeScopes(text(tokens.scope)?.split(/[,\s]+/) ?? fallbackScopes),
179
+ scopes: normalizeScopes(typeof tokens.scope === "string" ? tokens.scope.split(/[,\s]+/) : fallbackScopes),
168
180
  raw: tokens,
169
181
  };
170
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-oauth.js","sourceRoot":"","sources":["../src/mcp-oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-oauth.js","sourceRoot":"","sources":["../src/mcp-oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type McpCapabilityTool, type ResolveMcpRuntimeCapabilities, type ToolInvocationContext } from "@polpo-ai/core";
2
+ export declare class McpRunnerBrokerError extends Error {
3
+ readonly status: 400 | 401 | 403 | 408 | 409 | 413 | 429 | 503;
4
+ constructor(status: 400 | 401 | 403 | 408 | 409 | 413 | 429 | 503);
5
+ }
6
+ /** Created from trusted lease storage, never reconstructed from runner input. */
7
+ export interface AuthorizedMcpRunnerLease {
8
+ readonly agentName: string;
9
+ readonly invocation: ToolInvocationContext;
10
+ readonly inventory: readonly {
11
+ readonly serverName: string;
12
+ readonly tools: readonly McpCapabilityTool[];
13
+ }[];
14
+ /** Must retain the minted grant ceiling and check assertActive during native
15
+ * transport authorization, including refresh. Uses the canonical MCP resolver. */
16
+ readonly resolveCapabilities: ResolveMcpRuntimeCapabilities;
17
+ /** Live lease/run-generation, cancellation and host rollout authorization. */
18
+ assertActive(): Promise<void>;
19
+ /** Atomic, durable for the lease lifetime. A repeated ID must throw 409 even
20
+ * after a failed or disconnected call: mutations are never implicitly retried. */
21
+ claimCall(toolCallId: string): Promise<void>;
22
+ }
23
+ /** HTTP-neutral server entry, reusable by OSS hosts and managed adapters. The
24
+ * host owns opaque token storage, tenant identity and the run lifecycle. */
25
+ export declare function createMcpRunnerBroker(options: {
26
+ authorize(token: string, sandboxId: string): Promise<AuthorizedMcpRunnerLease>;
27
+ onError?: (error: unknown) => void | Promise<void>;
28
+ }): (request: Request) => Promise<Response>;
29
+ //# sourceMappingURL=mcp-runner-broker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-runner-broker.d.ts","sourceRoot":"","sources":["../src/mcp-runner-broker.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,iBAAiB,EAAE,KAAK,6BAA6B,EAC9B,KAAK,qBAAqB,EACvD,MAAM,gBAAgB,CAAC;AAIxB,qBAAa,oBAAqB,SAAQ,KAAK;IACjC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;gBAArD,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG;CAI3E;AAED,iFAAiF;AACjF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAA;KAAE,EAAE,CAAC;IAC7G;sFACkF;IAClF,QAAQ,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;IAC5D,8EAA8E;IAC9E,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B;sFACkF;IAClF,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED;4EAC4E;AAC5E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC/E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAuH1C"}