@mcp-rating/gateway 0.2.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 (168) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +130 -0
  3. package/dist/ads/ad-tracker.d.ts +63 -0
  4. package/dist/ads/ad-tracker.js +144 -0
  5. package/dist/ads/ad-tracker.js.map +1 -0
  6. package/dist/analytics/usage-tracker.d.ts +67 -0
  7. package/dist/analytics/usage-tracker.js +148 -0
  8. package/dist/analytics/usage-tracker.js.map +1 -0
  9. package/dist/audit/audit-log.d.ts +71 -0
  10. package/dist/audit/audit-log.js +72 -0
  11. package/dist/audit/audit-log.js.map +1 -0
  12. package/dist/config/gateway-config.d.ts +6 -0
  13. package/dist/config/gateway-config.js +135 -0
  14. package/dist/config/gateway-config.js.map +1 -0
  15. package/dist/config/groups.d.ts +29 -0
  16. package/dist/config/groups.js +102 -0
  17. package/dist/config/groups.js.map +1 -0
  18. package/dist/config/profiles.d.ts +42 -0
  19. package/dist/config/profiles.js +167 -0
  20. package/dist/config/profiles.js.map +1 -0
  21. package/dist/config/types.d.ts +76 -0
  22. package/dist/config/types.js +2 -0
  23. package/dist/config/types.js.map +1 -0
  24. package/dist/connection/auto-installer.d.ts +13 -0
  25. package/dist/connection/auto-installer.js +61 -0
  26. package/dist/connection/auto-installer.js.map +1 -0
  27. package/dist/connection/connection-manager.d.ts +106 -0
  28. package/dist/connection/connection-manager.js +845 -0
  29. package/dist/connection/connection-manager.js.map +1 -0
  30. package/dist/connection/downstream-client.d.ts +50 -0
  31. package/dist/connection/downstream-client.js +170 -0
  32. package/dist/connection/downstream-client.js.map +1 -0
  33. package/dist/connection/http-client.d.ts +12 -0
  34. package/dist/connection/http-client.js +26 -0
  35. package/dist/connection/http-client.js.map +1 -0
  36. package/dist/connection/sse-client.d.ts +12 -0
  37. package/dist/connection/sse-client.js +26 -0
  38. package/dist/connection/sse-client.js.map +1 -0
  39. package/dist/connection/transport-factory.d.ts +31 -0
  40. package/dist/connection/transport-factory.js +67 -0
  41. package/dist/connection/transport-factory.js.map +1 -0
  42. package/dist/connection/types.d.ts +134 -0
  43. package/dist/connection/types.js +5 -0
  44. package/dist/connection/types.js.map +1 -0
  45. package/dist/connection/ws-client.d.ts +12 -0
  46. package/dist/connection/ws-client.js +26 -0
  47. package/dist/connection/ws-client.js.map +1 -0
  48. package/dist/discovery/auto-recommender.d.ts +51 -0
  49. package/dist/discovery/auto-recommender.js +176 -0
  50. package/dist/discovery/auto-recommender.js.map +1 -0
  51. package/dist/gateway-server.d.ts +42 -0
  52. package/dist/gateway-server.js +135 -0
  53. package/dist/gateway-server.js.map +1 -0
  54. package/dist/http-daemon.d.ts +26 -0
  55. package/dist/http-daemon.js +302 -0
  56. package/dist/http-daemon.js.map +1 -0
  57. package/dist/index.d.ts +2 -0
  58. package/dist/index.js +83 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/meta-tools/ad-status.d.ts +8 -0
  61. package/dist/meta-tools/ad-status.js +41 -0
  62. package/dist/meta-tools/ad-status.js.map +1 -0
  63. package/dist/meta-tools/audit.d.ts +12 -0
  64. package/dist/meta-tools/audit.js +98 -0
  65. package/dist/meta-tools/audit.js.map +1 -0
  66. package/dist/meta-tools/call-tool.d.ts +11 -0
  67. package/dist/meta-tools/call-tool.js +65 -0
  68. package/dist/meta-tools/call-tool.js.map +1 -0
  69. package/dist/meta-tools/connect.d.ts +3 -0
  70. package/dist/meta-tools/connect.js +105 -0
  71. package/dist/meta-tools/connect.js.map +1 -0
  72. package/dist/meta-tools/disconnect.d.ts +3 -0
  73. package/dist/meta-tools/disconnect.js +30 -0
  74. package/dist/meta-tools/disconnect.js.map +1 -0
  75. package/dist/meta-tools/discover.d.ts +3 -0
  76. package/dist/meta-tools/discover.js +97 -0
  77. package/dist/meta-tools/discover.js.map +1 -0
  78. package/dist/meta-tools/groups.d.ts +7 -0
  79. package/dist/meta-tools/groups.js +237 -0
  80. package/dist/meta-tools/groups.js.map +1 -0
  81. package/dist/meta-tools/health.d.ts +4 -0
  82. package/dist/meta-tools/health.js +76 -0
  83. package/dist/meta-tools/health.js.map +1 -0
  84. package/dist/meta-tools/index.d.ts +28 -0
  85. package/dist/meta-tools/index.js +56 -0
  86. package/dist/meta-tools/index.js.map +1 -0
  87. package/dist/meta-tools/list-active.d.ts +3 -0
  88. package/dist/meta-tools/list-active.js +50 -0
  89. package/dist/meta-tools/list-active.js.map +1 -0
  90. package/dist/meta-tools/profiles.d.ts +6 -0
  91. package/dist/meta-tools/profiles.js +197 -0
  92. package/dist/meta-tools/profiles.js.map +1 -0
  93. package/dist/meta-tools/recommend.d.ts +14 -0
  94. package/dist/meta-tools/recommend.js +74 -0
  95. package/dist/meta-tools/recommend.js.map +1 -0
  96. package/dist/meta-tools/sandbox.d.ts +12 -0
  97. package/dist/meta-tools/sandbox.js +125 -0
  98. package/dist/meta-tools/sandbox.js.map +1 -0
  99. package/dist/meta-tools/server-info.d.ts +4 -0
  100. package/dist/meta-tools/server-info.js +156 -0
  101. package/dist/meta-tools/server-info.js.map +1 -0
  102. package/dist/meta-tools/usage.d.ts +6 -0
  103. package/dist/meta-tools/usage.js +149 -0
  104. package/dist/meta-tools/usage.js.map +1 -0
  105. package/dist/permissions/permission-manager.d.ts +26 -0
  106. package/dist/permissions/permission-manager.js +73 -0
  107. package/dist/permissions/permission-manager.js.map +1 -0
  108. package/dist/permissions/trust-tiers.d.ts +18 -0
  109. package/dist/permissions/trust-tiers.js +42 -0
  110. package/dist/permissions/trust-tiers.js.map +1 -0
  111. package/dist/plugins/builtin/logging-plugin.d.ts +6 -0
  112. package/dist/plugins/builtin/logging-plugin.js +41 -0
  113. package/dist/plugins/builtin/logging-plugin.js.map +1 -0
  114. package/dist/plugins/plugin-manager.d.ts +65 -0
  115. package/dist/plugins/plugin-manager.js +137 -0
  116. package/dist/plugins/plugin-manager.js.map +1 -0
  117. package/dist/proxy/prime-handlers.d.ts +27 -0
  118. package/dist/proxy/prime-handlers.js +47 -0
  119. package/dist/proxy/prime-handlers.js.map +1 -0
  120. package/dist/proxy/progress-forwarder.d.ts +44 -0
  121. package/dist/proxy/progress-forwarder.js +40 -0
  122. package/dist/proxy/progress-forwarder.js.map +1 -0
  123. package/dist/proxy/prompt-router.d.ts +25 -0
  124. package/dist/proxy/prompt-router.js +110 -0
  125. package/dist/proxy/prompt-router.js.map +1 -0
  126. package/dist/proxy/resource-router.d.ts +25 -0
  127. package/dist/proxy/resource-router.js +91 -0
  128. package/dist/proxy/resource-router.js.map +1 -0
  129. package/dist/proxy/schema-adapter.d.ts +11 -0
  130. package/dist/proxy/schema-adapter.js +36 -0
  131. package/dist/proxy/schema-adapter.js.map +1 -0
  132. package/dist/proxy/task-proxy.d.ts +28 -0
  133. package/dist/proxy/task-proxy.js +186 -0
  134. package/dist/proxy/task-proxy.js.map +1 -0
  135. package/dist/proxy/tool-router.d.ts +38 -0
  136. package/dist/proxy/tool-router.js +229 -0
  137. package/dist/proxy/tool-router.js.map +1 -0
  138. package/dist/proxy/ui-detect.d.ts +22 -0
  139. package/dist/proxy/ui-detect.js +30 -0
  140. package/dist/proxy/ui-detect.js.map +1 -0
  141. package/dist/registry/registry-client.d.ts +55 -0
  142. package/dist/registry/registry-client.js +211 -0
  143. package/dist/registry/registry-client.js.map +1 -0
  144. package/dist/registry/types.d.ts +69 -0
  145. package/dist/registry/types.js +2 -0
  146. package/dist/registry/types.js.map +1 -0
  147. package/dist/sandbox/container-runtime.d.ts +91 -0
  148. package/dist/sandbox/container-runtime.js +178 -0
  149. package/dist/sandbox/container-runtime.js.map +1 -0
  150. package/dist/sandbox/egress-proxy.d.ts +51 -0
  151. package/dist/sandbox/egress-proxy.js +146 -0
  152. package/dist/sandbox/egress-proxy.js.map +1 -0
  153. package/dist/sandbox/env-scoper.d.ts +29 -0
  154. package/dist/sandbox/env-scoper.js +60 -0
  155. package/dist/sandbox/env-scoper.js.map +1 -0
  156. package/dist/sandbox/manifest-resolver.d.ts +40 -0
  157. package/dist/sandbox/manifest-resolver.js +185 -0
  158. package/dist/sandbox/manifest-resolver.js.map +1 -0
  159. package/dist/sandbox/types.d.ts +88 -0
  160. package/dist/sandbox/types.js +21 -0
  161. package/dist/sandbox/types.js.map +1 -0
  162. package/dist/utils/errors.d.ts +39 -0
  163. package/dist/utils/errors.js +67 -0
  164. package/dist/utils/errors.js.map +1 -0
  165. package/dist/utils/logger.d.ts +16 -0
  166. package/dist/utils/logger.js +51 -0
  167. package/dist/utils/logger.js.map +1 -0
  168. package/package.json +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/connection/connection-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
3
+ import type { DownstreamTool, DownstreamResource, DownstreamPrompt } from "./types.js";
4
+ export interface SpawnAndConnectParams {
5
+ slug: string;
6
+ command: string;
7
+ args: string[];
8
+ env?: Record<string, string>;
9
+ /**
10
+ * Sandbox-scoped environment (L1). When provided, used as the child's
11
+ * environment verbatim — bypasses the inherit-defaults + merge behavior.
12
+ */
13
+ preScopedEnv?: Record<string, string>;
14
+ onClose?: () => void;
15
+ onToolsChanged?: () => void;
16
+ /** Timeout in ms for the entire spawn + handshake + tool fetch. Default: 30s */
17
+ connectionTimeoutMs?: number;
18
+ }
19
+ export interface SpawnAndConnectResult {
20
+ client: Client;
21
+ transport: Transport;
22
+ tools: DownstreamTool[];
23
+ resources: DownstreamResource[];
24
+ prompts: DownstreamPrompt[];
25
+ serverInfo?: {
26
+ name: string;
27
+ version: string;
28
+ };
29
+ }
30
+ /**
31
+ * Spawn a downstream MCP server as a child process, connect to it
32
+ * via StdioClientTransport, and fetch its tool, resource, and prompt lists.
33
+ */
34
+ export declare function spawnAndConnect(params: SpawnAndConnectParams): Promise<SpawnAndConnectResult>;
35
+ export interface ConnectAndFetchResult {
36
+ client: Client;
37
+ serverInfo?: {
38
+ name: string;
39
+ version: string;
40
+ };
41
+ tools: DownstreamTool[];
42
+ resources: DownstreamResource[];
43
+ prompts: DownstreamPrompt[];
44
+ }
45
+ /**
46
+ * Create an MCP client, connect it to a transport, and fetch all capabilities.
47
+ * This is shared by all transport types (stdio, SSE, WebSocket, Streamable HTTP).
48
+ */
49
+ export declare function connectClientAndFetchCapabilities(slug: string, transport: Transport, onToolsChanged?: (() => void) | undefined): Promise<ConnectAndFetchResult>;
50
+ export declare function timeoutReject<T>(ms: number, message: string): Promise<T>;
@@ -0,0 +1,170 @@
1
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ import { StdioClientTransport, getDefaultEnvironment, } from "@modelcontextprotocol/sdk/client/stdio.js";
3
+ import { log } from "../utils/logger.js";
4
+ /** Default timeout for the initial connection + handshake + tool fetch (30s) */
5
+ const CONNECTION_TIMEOUT_MS = 30_000;
6
+ /**
7
+ * Spawn a downstream MCP server as a child process, connect to it
8
+ * via StdioClientTransport, and fetch its tool, resource, and prompt lists.
9
+ */
10
+ export async function spawnAndConnect(params) {
11
+ const { slug, command, args, env, preScopedEnv, onClose, onToolsChanged, connectionTimeoutMs = CONNECTION_TIMEOUT_MS, } = params;
12
+ log.info("Spawning downstream server", { slug, command, args });
13
+ // Race the entire spawn+handshake+toolFetch against a timeout
14
+ const result = await Promise.race([
15
+ doSpawnAndConnect(slug, command, args, env, onClose, onToolsChanged, preScopedEnv),
16
+ timeoutReject(connectionTimeoutMs, `Timed out connecting to "${slug}" after ${connectionTimeoutMs}ms`),
17
+ ]);
18
+ return result;
19
+ }
20
+ async function doSpawnAndConnect(slug, command, args, env, onClose, onToolsChanged, preScopedEnv) {
21
+ // Environment resolution:
22
+ // - If the caller provided a sandbox-scoped env (L1), use it verbatim.
23
+ // It already includes safe defaults + allowlisted + user vars.
24
+ // - Otherwise fall back to legacy behavior: safe defaults + user overrides.
25
+ const mergedEnv = preScopedEnv
26
+ ? preScopedEnv
27
+ : env
28
+ ? { ...getDefaultEnvironment(), ...env }
29
+ : getDefaultEnvironment();
30
+ // Auto-add -y flag to npx commands for auto-install
31
+ let finalArgs = args;
32
+ if (command === "npx" && !args.includes("-y") && !args.includes("--yes")) {
33
+ finalArgs = ["-y", ...args];
34
+ }
35
+ const transport = new StdioClientTransport({
36
+ command,
37
+ args: finalArgs,
38
+ env: mergedEnv,
39
+ stderr: "pipe", // Capture stderr for diagnostics
40
+ });
41
+ // Pipe downstream stderr to our logger
42
+ const stderrStream = transport.stderr;
43
+ if (stderrStream) {
44
+ stderrStream.on("data", (chunk) => {
45
+ const text = chunk.toString().trim();
46
+ if (text) {
47
+ log.debug(`[${slug}] stderr: ${text}`);
48
+ }
49
+ });
50
+ }
51
+ // Set up close handler for process crash detection
52
+ if (onClose) {
53
+ transport.onclose = onClose;
54
+ }
55
+ const { client, serverInfo, tools, resources, prompts } = await connectClientAndFetchCapabilities(slug, transport, onToolsChanged);
56
+ return {
57
+ client,
58
+ transport,
59
+ tools,
60
+ resources,
61
+ prompts,
62
+ serverInfo,
63
+ };
64
+ }
65
+ /**
66
+ * Create an MCP client, connect it to a transport, and fetch all capabilities.
67
+ * This is shared by all transport types (stdio, SSE, WebSocket, Streamable HTTP).
68
+ */
69
+ export async function connectClientAndFetchCapabilities(slug, transport, onToolsChanged) {
70
+ // Create MCP client with tool list change tracking
71
+ const client = new Client({ name: "mcp-gateway", version: "0.1.0" }, {
72
+ capabilities: {},
73
+ listChanged: onToolsChanged
74
+ ? {
75
+ tools: {
76
+ onChanged: (error, tools) => {
77
+ if (error) {
78
+ log.warn(`[${slug}] Tool list refresh failed`, {
79
+ error: String(error),
80
+ });
81
+ return;
82
+ }
83
+ log.info(`[${slug}] Tool list changed`, {
84
+ toolCount: Array.isArray(tools) ? tools.length : 0,
85
+ });
86
+ onToolsChanged();
87
+ },
88
+ },
89
+ }
90
+ : undefined,
91
+ });
92
+ // Connect and perform MCP handshake
93
+ await client.connect(transport);
94
+ const serverVersion = client.getServerVersion();
95
+ const serverInfo = serverVersion
96
+ ? { name: serverVersion.name, version: serverVersion.version }
97
+ : undefined;
98
+ log.info("Connected to downstream server", {
99
+ slug,
100
+ serverName: serverInfo?.name,
101
+ serverVersion: serverInfo?.version,
102
+ });
103
+ // Fetch tool list
104
+ const toolsResponse = await client.listTools();
105
+ const tools = toolsResponse.tools.map((t) => ({
106
+ name: t.name,
107
+ description: t.description,
108
+ inputSchema: t.inputSchema,
109
+ annotations: t.annotations,
110
+ execution: t
111
+ .execution,
112
+ _meta: t._meta,
113
+ }));
114
+ log.info("Fetched downstream tools", {
115
+ slug,
116
+ toolCount: tools.length,
117
+ toolNames: tools.map((t) => t.name),
118
+ });
119
+ // Fetch resources (gracefully handle servers that don't support resources)
120
+ let resources = [];
121
+ try {
122
+ const resourcesResponse = await client.listResources();
123
+ resources = resourcesResponse.resources.map((r) => ({
124
+ uri: r.uri,
125
+ name: r.name,
126
+ description: r.description,
127
+ mimeType: r.mimeType,
128
+ }));
129
+ if (resources.length > 0) {
130
+ log.info("Fetched downstream resources", {
131
+ slug,
132
+ resourceCount: resources.length,
133
+ });
134
+ }
135
+ }
136
+ catch {
137
+ log.debug("Server does not support resources", { slug });
138
+ }
139
+ // Fetch prompts (gracefully handle servers that don't support prompts)
140
+ let prompts = [];
141
+ try {
142
+ const promptsResponse = await client.listPrompts();
143
+ prompts = promptsResponse.prompts.map((p) => ({
144
+ name: p.name,
145
+ description: p.description,
146
+ arguments: p.arguments?.map((a) => ({
147
+ name: a.name,
148
+ description: a.description,
149
+ required: a.required,
150
+ })),
151
+ }));
152
+ if (prompts.length > 0) {
153
+ log.info("Fetched downstream prompts", {
154
+ slug,
155
+ promptCount: prompts.length,
156
+ });
157
+ }
158
+ }
159
+ catch {
160
+ log.debug("Server does not support prompts", { slug });
161
+ }
162
+ return { client, serverInfo, tools, resources, prompts };
163
+ }
164
+ // ── Helpers ──────────────────────────────────────────────────────────────────
165
+ export function timeoutReject(ms, message) {
166
+ return new Promise((_, reject) => {
167
+ setTimeout(() => reject(new Error(message)), ms);
168
+ });
169
+ }
170
+ //# sourceMappingURL=downstream-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"downstream-client.js","sourceRoot":"","sources":["../../src/connection/downstream-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SpawnAndConnectResult } from "./downstream-client.js";
2
+ export interface HttpConnectParams {
3
+ slug: string;
4
+ url: string;
5
+ onClose?: () => void;
6
+ onToolsChanged?: () => void;
7
+ connectionTimeoutMs?: number;
8
+ }
9
+ /**
10
+ * Connect to a downstream MCP server via Streamable HTTP transport.
11
+ */
12
+ export declare function connectViaHttp(params: HttpConnectParams): Promise<SpawnAndConnectResult>;
@@ -0,0 +1,26 @@
1
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
2
+ import { connectClientAndFetchCapabilities, timeoutReject } from "./downstream-client.js";
3
+ import { log } from "../utils/logger.js";
4
+ /** Default timeout for Streamable HTTP connection (30s) */
5
+ const HTTP_CONNECTION_TIMEOUT_MS = 30_000;
6
+ /**
7
+ * Connect to a downstream MCP server via Streamable HTTP transport.
8
+ */
9
+ export async function connectViaHttp(params) {
10
+ const { slug, url, onClose, onToolsChanged, connectionTimeoutMs = HTTP_CONNECTION_TIMEOUT_MS, } = params;
11
+ log.info("Connecting via Streamable HTTP", { slug, url });
12
+ const result = await Promise.race([
13
+ doHttpConnect(slug, url, onClose, onToolsChanged),
14
+ timeoutReject(connectionTimeoutMs, `Timed out connecting to "${slug}" via Streamable HTTP after ${connectionTimeoutMs}ms`),
15
+ ]);
16
+ return result;
17
+ }
18
+ async function doHttpConnect(slug, url, onClose, onToolsChanged) {
19
+ const transport = new StreamableHTTPClientTransport(new URL(url));
20
+ if (onClose) {
21
+ transport.onclose = onClose;
22
+ }
23
+ const { client, serverInfo, tools, resources, prompts } = await connectClientAndFetchCapabilities(slug, transport, onToolsChanged);
24
+ return { client, transport, tools, resources, prompts, serverInfo };
25
+ }
26
+ //# sourceMappingURL=http-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/connection/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,iCAAiC,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,2DAA2D;AAC3D,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAU1C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAyB;IAEzB,MAAM,EACJ,IAAI,EACJ,GAAG,EACH,OAAO,EACP,cAAc,EACd,mBAAmB,GAAG,0BAA0B,GACjD,GAAG,MAAM,CAAC;IAEX,GAAG,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAE1D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;QAChC,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC;QACjD,aAAa,CACX,mBAAmB,EACnB,4BAA4B,IAAI,+BAA+B,mBAAmB,IAAI,CACvF;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,IAAY,EACZ,GAAW,EACX,OAAiC,EACjC,cAAwC;IAExC,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAElE,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GACrD,MAAM,iCAAiC,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAE3E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACtE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SpawnAndConnectResult } from "./downstream-client.js";
2
+ export interface SseConnectParams {
3
+ slug: string;
4
+ url: string;
5
+ onClose?: () => void;
6
+ onToolsChanged?: () => void;
7
+ connectionTimeoutMs?: number;
8
+ }
9
+ /**
10
+ * Connect to a downstream MCP server via SSE transport.
11
+ */
12
+ export declare function connectViaSse(params: SseConnectParams): Promise<SpawnAndConnectResult>;
@@ -0,0 +1,26 @@
1
+ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
2
+ import { connectClientAndFetchCapabilities, timeoutReject } from "./downstream-client.js";
3
+ import { log } from "../utils/logger.js";
4
+ /** Default timeout for SSE connection (30s) */
5
+ const SSE_CONNECTION_TIMEOUT_MS = 30_000;
6
+ /**
7
+ * Connect to a downstream MCP server via SSE transport.
8
+ */
9
+ export async function connectViaSse(params) {
10
+ const { slug, url, onClose, onToolsChanged, connectionTimeoutMs = SSE_CONNECTION_TIMEOUT_MS, } = params;
11
+ log.info("Connecting via SSE", { slug, url });
12
+ const result = await Promise.race([
13
+ doSseConnect(slug, url, onClose, onToolsChanged),
14
+ timeoutReject(connectionTimeoutMs, `Timed out connecting to "${slug}" via SSE after ${connectionTimeoutMs}ms`),
15
+ ]);
16
+ return result;
17
+ }
18
+ async function doSseConnect(slug, url, onClose, onToolsChanged) {
19
+ const transport = new SSEClientTransport(new URL(url));
20
+ if (onClose) {
21
+ transport.onclose = onClose;
22
+ }
23
+ const { client, serverInfo, tools, resources, prompts } = await connectClientAndFetchCapabilities(slug, transport, onToolsChanged);
24
+ return { client, transport, tools, resources, prompts, serverInfo };
25
+ }
26
+ //# sourceMappingURL=sse-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse-client.js","sourceRoot":"","sources":["../../src/connection/sse-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,OAAO,EAAE,iCAAiC,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,+CAA+C;AAC/C,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAUzC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAwB;IAExB,MAAM,EACJ,IAAI,EACJ,GAAG,EACH,OAAO,EACP,cAAc,EACd,mBAAmB,GAAG,yBAAyB,GAChD,GAAG,MAAM,CAAC;IAEX,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;QAChC,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC;QAChD,aAAa,CACX,mBAAmB,EACnB,4BAA4B,IAAI,mBAAmB,mBAAmB,IAAI,CAC3E;KACF,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,IAAY,EACZ,GAAW,EACX,OAAiC,EACjC,cAAwC;IAExC,MAAM,SAAS,GAAG,IAAI,kBAAkB,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvD,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GACrD,MAAM,iCAAiC,CAAC,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IAE3E,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACtE,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { TransportType } from "./types.js";
2
+ import type { SpawnAndConnectResult } from "./downstream-client.js";
3
+ export interface CreateTransportParams {
4
+ slug: string;
5
+ transportType: TransportType;
6
+ /** Required for stdio transport */
7
+ command?: string;
8
+ /** Required for stdio transport */
9
+ args?: string[];
10
+ /** Environment variables (stdio only) — user-supplied values */
11
+ env?: Record<string, string>;
12
+ /**
13
+ * Pre-scoped environment from the sandbox manifest (stdio only). When set,
14
+ * this is used as the child process environment verbatim, bypassing the
15
+ * default inherit-and-merge behavior. This is how L1 env scoping is enforced.
16
+ */
17
+ preScopedEnv?: Record<string, string>;
18
+ /** Required for SSE, WebSocket, and Streamable HTTP transports */
19
+ url?: string;
20
+ /** Called when the transport closes unexpectedly */
21
+ onClose?: () => void;
22
+ /** Called when the downstream tool list changes */
23
+ onToolsChanged?: () => void;
24
+ /** Timeout in ms for the entire connection (default: 30s) */
25
+ connectionTimeoutMs?: number;
26
+ }
27
+ /**
28
+ * Factory that creates the right transport client based on TransportType.
29
+ * Returns a unified result shape regardless of transport.
30
+ */
31
+ export declare function createTransport(params: CreateTransportParams): Promise<SpawnAndConnectResult>;
@@ -0,0 +1,67 @@
1
+ import { spawnAndConnect } from "./downstream-client.js";
2
+ import { connectViaSse } from "./sse-client.js";
3
+ import { connectViaWebSocket } from "./ws-client.js";
4
+ import { connectViaHttp } from "./http-client.js";
5
+ /**
6
+ * Factory that creates the right transport client based on TransportType.
7
+ * Returns a unified result shape regardless of transport.
8
+ */
9
+ export async function createTransport(params) {
10
+ const { slug, transportType, onClose, onToolsChanged, connectionTimeoutMs } = params;
11
+ switch (transportType) {
12
+ case "stdio": {
13
+ if (!params.command) {
14
+ throw new Error(`Command is required for stdio transport (server: "${slug}")`);
15
+ }
16
+ return spawnAndConnect({
17
+ slug,
18
+ command: params.command,
19
+ args: params.args || [],
20
+ env: params.env,
21
+ preScopedEnv: params.preScopedEnv,
22
+ onClose,
23
+ onToolsChanged,
24
+ connectionTimeoutMs,
25
+ });
26
+ }
27
+ case "sse": {
28
+ if (!params.url) {
29
+ throw new Error(`URL is required for SSE transport (server: "${slug}")`);
30
+ }
31
+ return connectViaSse({
32
+ slug,
33
+ url: params.url,
34
+ onClose,
35
+ onToolsChanged,
36
+ connectionTimeoutMs,
37
+ });
38
+ }
39
+ case "websocket": {
40
+ if (!params.url) {
41
+ throw new Error(`URL is required for WebSocket transport (server: "${slug}")`);
42
+ }
43
+ return connectViaWebSocket({
44
+ slug,
45
+ url: params.url,
46
+ onClose,
47
+ onToolsChanged,
48
+ connectionTimeoutMs,
49
+ });
50
+ }
51
+ case "streamable-http": {
52
+ if (!params.url) {
53
+ throw new Error(`URL is required for Streamable HTTP transport (server: "${slug}")`);
54
+ }
55
+ return connectViaHttp({
56
+ slug,
57
+ url: params.url,
58
+ onClose,
59
+ onToolsChanged,
60
+ connectionTimeoutMs,
61
+ });
62
+ }
63
+ default:
64
+ throw new Error(`Unsupported transport type: "${transportType}"`);
65
+ }
66
+ }
67
+ //# sourceMappingURL=transport-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-factory.js","sourceRoot":"","sources":["../../src/connection/transport-factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA2BlD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAA6B;IAE7B,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAAC;IAErF,QAAQ,aAAa,EAAE,CAAC;QACtB,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,qDAAqD,IAAI,IAAI,CAAC,CAAC;YACjF,CAAC;YACD,OAAO,eAAe,CAAC;gBACrB,IAAI;gBACJ,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE;gBACvB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,OAAO;gBACP,cAAc;gBACd,mBAAmB;aACpB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,+CAA+C,IAAI,IAAI,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,aAAa,CAAC;gBACnB,IAAI;gBACJ,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,OAAO;gBACP,cAAc;gBACd,mBAAmB;aACpB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,qDAAqD,IAAI,IAAI,CAAC,CAAC;YACjF,CAAC;YACD,OAAO,mBAAmB,CAAC;gBACzB,IAAI;gBACJ,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,OAAO;gBACP,cAAc;gBACd,mBAAmB;aACpB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,2DAA2D,IAAI,IAAI,CAAC,CAAC;YACvF,CAAC;YACD,OAAO,cAAc,CAAC;gBACpB,IAAI;gBACJ,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,OAAO;gBACP,cAAc;gBACd,mBAAmB;aACpB,CAAC,CAAC;QACL,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,aAAuB,GAAG,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
@@ -0,0 +1,134 @@
1
+ import type { Client } from "@modelcontextprotocol/sdk/client/index.js";
2
+ import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
3
+ import type { TrustTier } from "../registry/types.js";
4
+ import type { CapabilityManifest } from "../sandbox/types.js";
5
+ import type { EgressProxy } from "../sandbox/egress-proxy.js";
6
+ export type TransportType = "stdio" | "sse" | "websocket" | "streamable-http";
7
+ export type ConnectionState = "connecting" | "ready" | "reconnecting" | "failed" | "error" | "disconnecting";
8
+ /** Whether a downstream tool supports task-based (long-running) execution. */
9
+ export type TaskSupport = "optional" | "required" | "forbidden";
10
+ export interface DownstreamTool {
11
+ name: string;
12
+ description?: string;
13
+ inputSchema: Record<string, unknown>;
14
+ annotations?: Record<string, unknown>;
15
+ /**
16
+ * Tool execution hints from the downstream server. `taskSupport` of
17
+ * "optional" or "required" means the tool runs as an experimental MCP
18
+ * task and must be proxied through the task lifecycle, not a plain call.
19
+ */
20
+ execution?: {
21
+ taskSupport?: TaskSupport;
22
+ };
23
+ /**
24
+ * Tool-level _meta. Used to detect MCP Apps UI capability via
25
+ * `_meta.ui.resourceUri` (authoritative, live).
26
+ */
27
+ _meta?: Record<string, unknown>;
28
+ }
29
+ export interface DownstreamResource {
30
+ /** The resource URI as exposed by the downstream server */
31
+ uri: string;
32
+ name: string;
33
+ description?: string;
34
+ mimeType?: string;
35
+ }
36
+ export interface DownstreamPrompt {
37
+ name: string;
38
+ description?: string;
39
+ arguments?: Array<{
40
+ name: string;
41
+ description?: string;
42
+ required?: boolean;
43
+ }>;
44
+ }
45
+ export interface DownstreamConnection {
46
+ slug: string;
47
+ displayName: string;
48
+ state: ConnectionState;
49
+ client: Client;
50
+ transport: Transport;
51
+ transportType: TransportType;
52
+ tools: Map<string, DownstreamTool>;
53
+ resources: Map<string, DownstreamResource>;
54
+ prompts: Map<string, DownstreamPrompt>;
55
+ /** Map of namespaced tool name → remove() handle */
56
+ registeredProxies: Map<string, {
57
+ remove: () => void;
58
+ }>;
59
+ /** Map of namespaced resource URI → remove() handle */
60
+ registeredResourceProxies: Map<string, {
61
+ remove: () => void;
62
+ }>;
63
+ /** Map of namespaced prompt name → remove() handle */
64
+ registeredPromptProxies: Map<string, {
65
+ remove: () => void;
66
+ }>;
67
+ connectedAt: Date;
68
+ lastError?: string;
69
+ trustTier: TrustTier;
70
+ serverInfo?: {
71
+ name: string;
72
+ version: string;
73
+ };
74
+ /** Resolved sandbox capability manifest (L1+) for this connection */
75
+ manifest?: CapabilityManifest;
76
+ /** Egress allowlist proxy (L2 network:allowlist mode) — stopped on disconnect */
77
+ egressProxy?: EgressProxy;
78
+ /** Original connect params — stored for auto-reconnect */
79
+ originalParams?: ConnectParams;
80
+ /** Current reconnect attempt count (reset on successful reconnect) */
81
+ reconnectAttempts: number;
82
+ /** Consecutive failed health-check pings (reset on success) */
83
+ failedPings: number;
84
+ /** Timestamp of last successful ping */
85
+ lastPingAt?: Date;
86
+ }
87
+ export interface ConnectParams {
88
+ /** Server slug from MCP-Rating registry */
89
+ slug?: string;
90
+ /** Explicit command to spawn (stdio transport) */
91
+ command?: string;
92
+ /** Command arguments */
93
+ args?: string[];
94
+ /** Additional environment variables */
95
+ env?: Record<string, string>;
96
+ /** User has explicitly confirmed connection (required for community/unknown tier) */
97
+ confirmed?: boolean;
98
+ /** Save this connection as an auto-connect profile */
99
+ saveProfile?: boolean;
100
+ /** Transport type — defaults to "stdio" */
101
+ transportType?: TransportType;
102
+ /** URL for remote transports (SSE, WebSocket, Streamable HTTP) */
103
+ url?: string;
104
+ }
105
+ export interface ConnectionSummary {
106
+ slug: string;
107
+ displayName: string;
108
+ state: ConnectionState;
109
+ trustTier: TrustTier;
110
+ transportType: TransportType;
111
+ toolCount: number;
112
+ resourceCount: number;
113
+ promptCount: number;
114
+ connectedAt: Date;
115
+ serverInfo?: {
116
+ name: string;
117
+ version: string;
118
+ };
119
+ reconnectAttempts?: number;
120
+ failedPings?: number;
121
+ lastPingAt?: Date;
122
+ }
123
+ /** Returned when a connection requires user confirmation before proceeding */
124
+ export interface ConfirmationRequired {
125
+ needsConfirmation: true;
126
+ slug: string;
127
+ displayName: string;
128
+ trustTier: TrustTier;
129
+ warning: string;
130
+ }
131
+ /** Result of a connect() call — either a connection summary or a confirmation request */
132
+ export type ConnectResult = ConnectionSummary | ConfirmationRequired;
133
+ /** Type guard to check if a connect result requires confirmation */
134
+ export declare function isConfirmationRequired(result: ConnectResult): result is ConfirmationRequired;
@@ -0,0 +1,5 @@
1
+ /** Type guard to check if a connect result requires confirmation */
2
+ export function isConfirmationRequired(result) {
3
+ return "needsConfirmation" in result && result.needsConfirmation === true;
4
+ }
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/connection/types.ts"],"names":[],"mappings":"AA0JA,oEAAoE;AACpE,MAAM,UAAU,sBAAsB,CAAC,MAAqB;IAC1D,OAAO,mBAAmB,IAAI,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SpawnAndConnectResult } from "./downstream-client.js";
2
+ export interface WsConnectParams {
3
+ slug: string;
4
+ url: string;
5
+ onClose?: () => void;
6
+ onToolsChanged?: () => void;
7
+ connectionTimeoutMs?: number;
8
+ }
9
+ /**
10
+ * Connect to a downstream MCP server via WebSocket transport.
11
+ */
12
+ export declare function connectViaWebSocket(params: WsConnectParams): Promise<SpawnAndConnectResult>;