@luutuankiet/mcp-proxy-shim 1.1.0-dev.1 → 1.1.2

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 CHANGED
@@ -197,6 +197,138 @@ Each downstream client gets its own MCP session, but all sessions **share a sing
197
197
  | `/mcp` | DELETE | `?apikey=` | Session termination |
198
198
  | `/health` | GET | None | Health check (session count, uptime) |
199
199
 
200
+ ### Option C: Daemon Mode (multi-server MCP gateway)
201
+
202
+ Run a standalone gateway that connects to **multiple** MCP servers (stdio or HTTP) and exposes all their tools through a single HTTP endpoint. Pure passthrough — no schema transformation.
203
+
204
+ **Use case:** Cloud agents (claude.ai/code, Codespaces, etc.) that can't spawn MCP servers on the fly.
205
+
206
+ ```
207
+ Cloud Agent ──HTTP──▶ daemon (:3456) ──┬── stdio ──▶ github MCP
208
+ ├── stdio ──▶ filesystem MCP
209
+ └── HTTP ──▶ remote API (with auth headers)
210
+ ```
211
+
212
+ #### Inline config
213
+
214
+ ```bash
215
+ MCP_SERVERS='{
216
+ "github": {
217
+ "type": "stdio",
218
+ "command": "npx",
219
+ "args": ["-y", "@modelcontextprotocol/server-github"],
220
+ "env": { "GITHUB_TOKEN": "ghp_..." }
221
+ },
222
+ "my-api": {
223
+ "type": "streamableHttp",
224
+ "url": "https://api.example.com/mcp",
225
+ "headers": { "Authorization": "Bearer xxx", "X-Org-Id": "org_123" }
226
+ }
227
+ }' npx @luutuankiet/mcp-proxy-shim daemon
228
+ ```
229
+
230
+ #### Config file
231
+
232
+ ```bash
233
+ MCP_CONFIG=./mcp-servers.json npx @luutuankiet/mcp-proxy-shim daemon
234
+ ```
235
+
236
+ The config file supports three formats:
237
+ - Flat: `{ "server-name": { "type": "stdio", ... } }`
238
+ - Wrapped: `{ "servers": { "server-name": { ... } } }`
239
+ - `.mcp.json` format: `{ "mcpServers": { "server-name": { ... } } }`
240
+
241
+ #### How clients use it
242
+
243
+ All upstream tools are **namespaced** with the server name as prefix:
244
+
245
+ ```
246
+ github__get_file_contents ← from the "github" server
247
+ my-api__query ← from the "my-api" server
248
+ ```
249
+
250
+ A built-in `daemon_help` tool provides a full usage guide:
251
+
252
+ ```json
253
+ { "name": "daemon_help", "arguments": {} }
254
+ ```
255
+
256
+ Returns connected servers, all tools with namespaced names, and calling examples. You can also filter to a specific server for full schemas:
257
+
258
+ ```json
259
+ { "name": "daemon_help", "arguments": { "server": "github" } }
260
+ ```
261
+
262
+ The daemon also returns `instructions` in the MCP `initialize` response, so MCP clients that support server instructions will automatically know how to use it.
263
+
264
+ #### Server config reference
265
+
266
+ **Stdio servers** (spawn a local process):
267
+
268
+ ```json
269
+ {
270
+ "type": "stdio",
271
+ "command": "npx",
272
+ "args": ["-y", "@modelcontextprotocol/server-github"],
273
+ "env": { "GITHUB_TOKEN": "ghp_..." },
274
+ "cwd": "/optional/working/directory"
275
+ }
276
+ ```
277
+
278
+ **HTTP Streamable servers** (connect to remote MCP):
279
+
280
+ ```json
281
+ {
282
+ "type": "streamableHttp",
283
+ "url": "https://api.example.com/mcp",
284
+ "headers": {
285
+ "Authorization": "Bearer your-token",
286
+ "X-Custom-Header": "value"
287
+ }
288
+ }
289
+ ```
290
+
291
+ The `headers` field supports any custom HTTP headers — useful for authentication, org routing, or API versioning.
292
+
293
+ #### Daemon environment variables
294
+
295
+ | Variable | Default | Description |
296
+ |----------|---------|-------------|
297
+ | `MCP_SERVERS` | — | JSON string with server configs (inline) |
298
+ | `MCP_CONFIG` | — | Path to JSON config file (alternative to MCP_SERVERS) |
299
+ | `MCP_PORT` | `3456` | Port to listen on |
300
+ | `MCP_HOST` | `0.0.0.0` | Host to bind to |
301
+ | `MCP_APIKEY` | — (open) | Require `?apikey=KEY` on `/mcp` requests |
302
+ | `https_proxy` | — | HTTPS proxy for HTTP upstream connections |
303
+
304
+ #### Daemon endpoints
305
+
306
+ | Endpoint | Method | Description |
307
+ |----------|--------|-------------|
308
+ | `/mcp` | POST | MCP JSON-RPC (initialize, tools/list, tools/call) |
309
+ | `/mcp` | GET | SSE stream reconnection |
310
+ | `/mcp` | DELETE | Session termination |
311
+ | `/health` | GET | Per-server status, tool counts, uptime |
312
+
313
+ #### Production deployment
314
+
315
+ ```yaml
316
+ # docker-compose.yml
317
+ services:
318
+ mcp-daemon:
319
+ image: node:22-slim
320
+ command: npx -y @luutuankiet/mcp-proxy-shim daemon
321
+ environment:
322
+ - MCP_CONFIG=/config/servers.json
323
+ - MCP_APIKEY=your-secret
324
+ ports:
325
+ - "3456:3456"
326
+ volumes:
327
+ - ./mcp-servers.json:/config/servers.json:ro
328
+ ```
329
+
330
+ ---
331
+
200
332
  ## Why Not `/mcp/all`?
201
333
 
202
334
  mcpproxy-go exposes two routing modes:
@@ -253,13 +385,15 @@ We tested this live: added a YNAB financial tool mid-session → 43 new tools ap
253
385
 
254
386
  ### Transport Modes
255
387
 
256
- | Feature | Stdio | HTTP Streamable (`serve`) |
257
- |---------|-------|--------------------------|
258
- | Use case | Local MCP client (Claude Code, Cursor) | Remote agents, cloud sandboxes |
259
- | Connection | stdin/stdout | HTTP POST/GET/DELETE on `/mcp` |
260
- | Auth | N/A (local process) | Optional `?apikey=` query param |
261
- | Multi-client | Single client | Multiple concurrent sessions |
262
- | Upstream sharing | One-to-one | Many-to-one (shared upstream) |
388
+ | Feature | Stdio | HTTP Streamable (`serve`) | Daemon (`daemon`) |
389
+ |---------|-------|--------------------------|-------------------|
390
+ | Use case | Local MCP client (Claude Code, Cursor) | Remote agents, single upstream | Cloud agents, multi-server gateway |
391
+ | Connection | stdin/stdout | HTTP on `/mcp` | HTTP on `/mcp` |
392
+ | Upstreams | Single (mcpproxy-go) | Single (mcpproxy-go) | Multiple (stdio + HTTP) |
393
+ | Schema transforms | `args_json` `args` | `args_json` `args` | None (pure passthrough) |
394
+ | Auth | N/A (local process) | Optional `?apikey=` | Optional `?apikey=` |
395
+ | Multi-client | Single | Multiple sessions | Multiple sessions |
396
+ | Custom headers | N/A | N/A | Per-upstream `headers` config |
263
397
 
264
398
  ### Session Management
265
399
 
@@ -301,8 +435,9 @@ git clone https://github.com/luutuankiet/mcp-proxy-shim
301
435
  cd mcp-proxy-shim
302
436
  npm install
303
437
  npm run build
304
- npm start # stdio mode (connects upstream, waits for stdio)
305
- npm run start:http # HTTP serve mode
438
+ npm start # stdio mode (connects upstream, waits for stdio)
439
+ npm run start:http # HTTP serve mode
440
+ node dist/index.js daemon # daemon mode (set MCP_SERVERS or MCP_CONFIG)
306
441
  ```
307
442
 
308
443
  ### Testing
package/dist/core.d.ts CHANGED
@@ -9,10 +9,30 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
9
9
  export declare const UPSTREAM_URL: string;
10
10
  export declare const REQUEST_TIMEOUT_MS = 120000;
11
11
  export declare const MAX_RETRIES = 2;
12
+ /** Expose session ID for daemon health endpoint */
13
+ export declare function getSessionId(): string | null;
14
+ /** Force-reset session (for daemon /reinit endpoint) */
15
+ export declare function resetSessionId(): void;
12
16
  export declare function log(...args: unknown[]): void;
13
17
  /** Mask credentials in log output */
14
18
  export declare function maskUrl(url: string): string;
19
+ interface JsonRpcResponse {
20
+ jsonrpc: "2.0";
21
+ id?: number;
22
+ result?: unknown;
23
+ error?: {
24
+ code: number;
25
+ message: string;
26
+ data?: unknown;
27
+ };
28
+ }
29
+ /**
30
+ * Send a JSON-RPC request/notification to upstream mcpproxy-go.
31
+ * Handles session header, timeouts, and basic retry on transient failures.
32
+ */
33
+ export declare function mcpRequest(method: string, params: Record<string, unknown>, isNotification?: boolean): Promise<JsonRpcResponse | null>;
15
34
  export declare function ensureSession(): Promise<void>;
35
+ export declare function reinitOnExpiry(): Promise<boolean>;
16
36
  export interface ToolSchema {
17
37
  name: string;
18
38
  description?: string;
@@ -24,6 +44,19 @@ export interface ToolSchema {
24
44
  };
25
45
  [k: string]: unknown;
26
46
  }
47
+ /**
48
+ * Transform call_tool_* arguments: args:object → args_json:string.
49
+ * Returns the transformed args, or throws ArgsValidationError if
50
+ * the client sends malformed args.
51
+ */
52
+ export declare function transformToolCallArgs(toolName: string, args: Record<string, unknown>): Record<string, unknown>;
53
+ export declare function deepUnwrapResult(result: unknown): unknown;
54
+ export declare function compactRetrieveTools(unwrapped: unknown, args: Record<string, unknown>): {
55
+ content: Array<{
56
+ type: "text";
57
+ text: string;
58
+ }>;
59
+ };
27
60
  export interface ShimServerOptions {
28
61
  /**
29
62
  * If true, skip eager upstream initialization. Upstream session will be
@@ -38,3 +71,4 @@ export interface ShimServerOptions {
38
71
  * Caller connects their chosen transport (stdio or HTTP).
39
72
  */
40
73
  export declare function createShimServer(options?: ShimServerOptions): Promise<Server>;
74
+ export {};
package/dist/core.js CHANGED
@@ -54,6 +54,14 @@ const DESCRIBE_TOOLS_SCHEMA = {
54
54
  // Upstream MCP session (manual HTTP — avoids SDK client bugs)
55
55
  // ---------------------------------------------------------------------------
56
56
  let sessionId = null;
57
+ /** Expose session ID for daemon health endpoint */
58
+ export function getSessionId() {
59
+ return sessionId;
60
+ }
61
+ /** Force-reset session (for daemon /reinit endpoint) */
62
+ export function resetSessionId() {
63
+ sessionId = null;
64
+ }
57
65
  let reqId = 0;
58
66
  export function log(...args) {
59
67
  // stderr only — stdout is the stdio transport
@@ -67,7 +75,7 @@ export function maskUrl(url) {
67
75
  * Send a JSON-RPC request/notification to upstream mcpproxy-go.
68
76
  * Handles session header, timeouts, and basic retry on transient failures.
69
77
  */
70
- async function mcpRequest(method, params, isNotification = false) {
78
+ export async function mcpRequest(method, params, isNotification = false) {
71
79
  const body = { jsonrpc: "2.0", method, params };
72
80
  if (!isNotification) {
73
81
  body.id = ++reqId;
@@ -166,7 +174,7 @@ export async function ensureSession() {
166
174
  await initUpstream();
167
175
  }
168
176
  }
169
- async function reinitOnExpiry() {
177
+ export async function reinitOnExpiry() {
170
178
  log("Session may have expired — re-initializing...");
171
179
  sessionId = null;
172
180
  try {
@@ -189,7 +197,11 @@ function transformToolSchema(tool) {
189
197
  delete props.args_json;
190
198
  props.args = {
191
199
  type: "object",
192
- description: "Tool arguments as a native JSON object. The shim serializes this to args_json before forwarding upstream.",
200
+ description: "The upstream tool's arguments as a native JSON object (not a string). " +
201
+ "Use describe_tools to get the upstream tool's inputSchema, then pass " +
202
+ "those fields here directly. Example: if the upstream tool expects " +
203
+ '{owner: string, repo: string}, pass args: {"owner": "foo", "repo": "bar"}. ' +
204
+ "Nested strings containing JSON are fine — only the top-level args must be an object.",
193
205
  additionalProperties: true,
194
206
  };
195
207
  let required = tool.inputSchema.required;
@@ -205,16 +217,91 @@ function transformToolSchema(tool) {
205
217
  },
206
218
  };
207
219
  }
208
- function transformToolCallArgs(toolName, args) {
220
+ /**
221
+ * Validate and re-serialize a JSON string to canonical form.
222
+ * The upstream Go server expects args_json to unmarshal into map[string]interface{}.
223
+ *
224
+ * CRITICAL: Always re-serializes from the parsed object via JSON.stringify()
225
+ * rather than passing through the raw input string. This prevents failures when
226
+ * args arrives as a pre-serialized string from the LLM with non-canonical
227
+ * escaping, encoding quirks, or formatting that Go's json.Unmarshal rejects.
228
+ * See: https://github.com/luutuankiet/mcp-proxy-shim/issues/1
229
+ *
230
+ * Throws ArgsValidationError on invalid input — never silently drops data.
231
+ */
232
+ class ArgsValidationError extends Error {
233
+ constructor(message) {
234
+ super(message);
235
+ this.name = "ArgsValidationError";
236
+ }
237
+ }
238
+ function validateAndSerializeArgs(jsonStr) {
239
+ let parsed;
240
+ try {
241
+ parsed = JSON.parse(jsonStr);
242
+ }
243
+ catch (err) {
244
+ throw new ArgsValidationError(`args is a string but not valid JSON. The "args" field must be a native JSON object, ` +
245
+ `not a pre-serialized string. Pass args as {"key": "value"}, not as '{"key": "value"}'. ` +
246
+ `Parse error: ${err.message}. Input (first 200 chars): ${jsonStr.slice(0, 200)}`);
247
+ }
248
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
249
+ const actualType = parsed === null ? "null" : Array.isArray(parsed) ? "array" : typeof parsed;
250
+ throw new ArgsValidationError(`args must be a JSON object, got ${actualType}. ` +
251
+ `Pass args as {"key": "value"}, not as a primitive or array. ` +
252
+ `Input: ${jsonStr.slice(0, 200)}`);
253
+ }
254
+ // Re-serialize from parsed object for canonical JSON.
255
+ // Do NOT return jsonStr directly — the raw string from the LLM may have
256
+ // non-canonical escaping (e.g., \\/ vs /, unicode escapes, whitespace)
257
+ // that Go's json.Unmarshal handles differently than Node's JSON.parse.
258
+ return JSON.stringify(parsed);
259
+ }
260
+ /**
261
+ * Transform call_tool_* arguments: args:object → args_json:string.
262
+ * Returns the transformed args, or throws ArgsValidationError if
263
+ * the client sends malformed args.
264
+ */
265
+ export function transformToolCallArgs(toolName, args) {
209
266
  if (!CALL_TOOL_NAMES.has(toolName))
210
267
  return args;
211
- if ("args_json" in args)
212
- return args;
268
+ if ("args_json" in args) {
269
+ // Backward compat: if args_json is already present, ensure it's a string.
270
+ const existing = args.args_json;
271
+ if (typeof existing === "string") {
272
+ return { ...args, args_json: validateAndSerializeArgs(existing) };
273
+ }
274
+ // If it's an object, stringify it.
275
+ if (existing !== null && existing !== undefined && typeof existing === "object") {
276
+ return { ...args, args_json: JSON.stringify(existing) };
277
+ }
278
+ throw new ArgsValidationError(`args_json must be a JSON string or object, got ${existing === null ? "null" : typeof existing}. ` +
279
+ `Pass args_json as '{"key": "value"}' (string) or use the "args" field with a native object instead.`);
280
+ }
213
281
  if ("args" in args) {
214
282
  const { args: argsObj, ...rest } = args;
283
+ let argsJson;
284
+ if (argsObj === null || argsObj === undefined) {
285
+ // Nullish args — treat as empty object (common for tools with no required params)
286
+ argsJson = "{}";
287
+ }
288
+ else if (typeof argsObj === "string") {
289
+ // LLM sent args as a pre-serialized string — validate and re-serialize.
290
+ argsJson = validateAndSerializeArgs(argsObj);
291
+ }
292
+ else if (typeof argsObj === "object" && !Array.isArray(argsObj)) {
293
+ // Happy path: native object → serialize.
294
+ // Nested strings containing JSON are fine — JSON.stringify handles them correctly.
295
+ argsJson = JSON.stringify(argsObj);
296
+ }
297
+ else {
298
+ const actualType = Array.isArray(argsObj) ? "array" : typeof argsObj;
299
+ throw new ArgsValidationError(`args must be a JSON object, got ${actualType}. ` +
300
+ `Pass args as {"key": "value"}. Use describe_tools to get the upstream tool's inputSchema.`);
301
+ }
215
302
  return {
216
303
  ...rest,
217
- args_json: JSON.stringify(argsObj),
304
+ args_json: argsJson,
218
305
  };
219
306
  }
220
307
  return args;
@@ -253,7 +340,7 @@ function deepParseText(text, maxDepth = 5) {
253
340
  }
254
341
  return value;
255
342
  }
256
- function deepUnwrapResult(result) {
343
+ export function deepUnwrapResult(result) {
257
344
  if (!isMcpContentWrapper(result))
258
345
  return result;
259
346
  if (result.content.length === 1) {
@@ -269,7 +356,7 @@ function unwrapAndRewrap(result) {
269
356
  const text = typeof unwrapped === "string" ? unwrapped : JSON.stringify(unwrapped);
270
357
  return { content: [{ type: "text", text }] };
271
358
  }
272
- function compactRetrieveTools(unwrapped, args) {
359
+ export function compactRetrieveTools(unwrapped, args) {
273
360
  const compact = args.compact !== false;
274
361
  const limit = typeof args.limit === "number" ? args.limit : 0;
275
362
  let result = unwrapped;
@@ -331,6 +418,45 @@ async function fetchUpstreamTools() {
331
418
  log(`Fetched ${tools.length} upstream tools`);
332
419
  return tools;
333
420
  }
421
+ // ---------------------------------------------------------------------------
422
+ // Tool name resolution helpers
423
+ // ---------------------------------------------------------------------------
424
+ /**
425
+ * Resolve a tool name against an index map, handling server prefixes and
426
+ * suffix matching for mount-path variations.
427
+ */
428
+ function resolveToolFromIndex(name, index) {
429
+ // 1. Exact match
430
+ let tool = index.get(name);
431
+ if (tool)
432
+ return tool;
433
+ // 2. Try without server prefix (e.g., "utils:bi-platform__query" → "bi-platform__query")
434
+ if (name.includes(":")) {
435
+ const withoutPrefix = name.split(":").slice(1).join(":");
436
+ tool = index.get(withoutPrefix);
437
+ if (tool)
438
+ return tool;
439
+ }
440
+ // 3. Try suffix/prefix matching — check all indexed tools
441
+ for (const [key, candidate] of index) {
442
+ if (key.endsWith(name) || name.endsWith(key)) {
443
+ return candidate;
444
+ }
445
+ }
446
+ // 4. Fuzzy suffix match — handle mount-path variations
447
+ const nParts = name.includes(":") ? name.split(":").slice(1).join(":").split("__") : name.split("__");
448
+ const nSuffix = nParts[nParts.length - 1];
449
+ if (nSuffix) {
450
+ for (const [, candidate] of index) {
451
+ const cParts = candidate.name.split("__");
452
+ const cSuffix = cParts[cParts.length - 1];
453
+ if (cSuffix === nSuffix && candidate.name.includes(nParts[0])) {
454
+ return candidate;
455
+ }
456
+ }
457
+ }
458
+ return undefined;
459
+ }
334
460
  /**
335
461
  * Create and wire up an MCP Server with all shim handlers.
336
462
  * Caller connects their chosen transport (stdio or HTTP).
@@ -384,11 +510,32 @@ export async function createShimServer(options = {}) {
384
510
  }
385
511
  await ensureSession();
386
512
  const nameSet = new Set(names);
513
+ // Always query live BM25 — no caching. Generate multiple search
514
+ // queries per tool name for broader coverage:
515
+ // 1. Raw name as-is (exact match in BM25 — most targeted)
516
+ // 2. Full name with separators → spaces (e.g., "bi-platform query")
517
+ // 3. Last __ segment only (e.g., "query") as a broader fallback
518
+ // 4. First __ segment (e.g., "bi-platform") for server/mount prefix matching
387
519
  const queries = new Set();
388
520
  for (const n of nameSet) {
389
- const parts = n.split("__");
390
- const toolPart = parts[parts.length - 1] || n;
391
- queries.add(toolPart.replace(/_/g, " "));
521
+ // Strip optional "server:" prefix for searching
522
+ const withoutServer = n.includes(":") ? n.split(":").slice(1).join(":") : n;
523
+ // Raw name as-is — BM25 often matches exact tool names better than transformed queries
524
+ queries.add(withoutServer);
525
+ // Full name → spaces (primary query, most specific)
526
+ queries.add(withoutServer.replace(/__/g, " ").replace(/[-_]/g, " "));
527
+ // Segment-based queries for compound names
528
+ const parts = withoutServer.split("__");
529
+ if (parts.length > 1) {
530
+ // Last segment: tool action (e.g., "query", "edit_files")
531
+ const toolPart = parts[parts.length - 1] || withoutServer;
532
+ queries.add(toolPart.replace(/[-_]/g, " "));
533
+ // First segment: server/mount prefix (e.g., "looker-da", "hetzner_at_slash")
534
+ const prefixPart = parts[0];
535
+ if (prefixPart && prefixPart !== toolPart) {
536
+ queries.add(prefixPart.replace(/[-_]/g, " ") + " " + toolPart.replace(/[-_]/g, " "));
537
+ }
538
+ }
392
539
  }
393
540
  const index = new Map();
394
541
  for (const query of queries) {
@@ -398,18 +545,13 @@ export async function createShimServer(options = {}) {
398
545
  name: "retrieve_tools",
399
546
  arguments: { query },
400
547
  });
401
- log("describe_tools: resp exists:", !!resp, "resp.result exists:", !!resp?.result);
402
548
  if (resp?.result) {
403
549
  const unwrapped = deepUnwrapResult(resp.result);
404
- log("describe_tools: unwrapped type:", typeof unwrapped, "isArray:", Array.isArray(unwrapped));
405
- if (unwrapped && typeof unwrapped === "object" && !Array.isArray(unwrapped)) {
406
- log("describe_tools: unwrapped keys:", Object.keys(unwrapped).join(", "));
407
- }
408
550
  const result = unwrapped;
409
551
  const tools = Array.isArray(result)
410
552
  ? result
411
553
  : (result && Array.isArray(result.tools) ? result.tools : []);
412
- log("describe_tools: found", tools.length, "tools from query");
554
+ log("describe_tools: found", tools.length, "tools from query:", query);
413
555
  for (const t of tools) {
414
556
  const tool = t;
415
557
  if (tool.name && !index.has(tool.name)) {
@@ -424,16 +566,29 @@ export async function createShimServer(options = {}) {
424
566
  }
425
567
  log("describe_tools: index has", index.size, "tools, looking up:", names.join(", "));
426
568
  const results = names.map((n) => {
427
- const tool = index.get(n);
428
- if (!tool)
429
- return { name: n, error: "not found" };
430
- return transformToolSchema(tool);
569
+ const tool = resolveToolFromIndex(n, index);
570
+ if (tool)
571
+ return transformToolSchema(tool);
572
+ return { name: n, error: "not found" };
431
573
  });
432
574
  return {
433
575
  content: [{ type: "text", text: JSON.stringify(results) }],
434
576
  };
435
577
  }
436
- const forwardArgs = transformToolCallArgs(name, args || {});
578
+ let forwardArgs;
579
+ try {
580
+ forwardArgs = transformToolCallArgs(name, args || {});
581
+ }
582
+ catch (err) {
583
+ if (err instanceof ArgsValidationError) {
584
+ log("Args validation rejected:", err.message);
585
+ return {
586
+ content: [{ type: "text", text: err.message }],
587
+ isError: true,
588
+ };
589
+ }
590
+ throw err;
591
+ }
437
592
  try {
438
593
  await ensureSession();
439
594
  const resp = await mcpRequest("tools/call", {
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MCP Proxy Shim — Daemon Mode (REST + MCP Gateway)
4
+ *
5
+ * Connects to a single upstream mcpproxy-go via MCP_URL (same as stdio/serve modes)
6
+ * and exposes both REST endpoints for curl-based subagents AND a Streamable HTTP
7
+ * /mcp endpoint for backward compatibility.
8
+ *
9
+ * Architecture:
10
+ * Subagent ──curl──▶ daemon (:3456) ──HTTP──▶ mcpproxy-go (upstream)
11
+ * MCP client ──HTTP──▶ daemon (:3456/mcp) ──HTTP──▶ mcpproxy-go (upstream)
12
+ *
13
+ * REST endpoints (clean JSON, no MCP wrappers):
14
+ * GET /health Health check + session info
15
+ * POST /retrieve_tools { query, compact?, limit? }
16
+ * POST /describe_tools { names: [...] }
17
+ * POST /call { method, name, args, reason?, sensitivity? }
18
+ * POST /exec { code }
19
+ * POST /reinit Force new upstream session
20
+ *
21
+ * MCP endpoint (Streamable HTTP, backward compat):
22
+ * POST/GET/DELETE /mcp Standard MCP Streamable HTTP protocol
23
+ *
24
+ * Environment variables:
25
+ * MCP_URL (required) Upstream mcpproxy-go StreamableHTTP endpoint
26
+ * MCP_PORT (optional) Port to listen on (default: 3456)
27
+ * MCP_HOST (optional) Host to bind to (default: 0.0.0.0)
28
+ * MCP_APIKEY (optional) Require ?apikey=KEY on requests
29
+ * https_proxy (optional) HTTPS proxy for upstream connection
30
+ *
31
+ * Usage:
32
+ * MCP_URL="https://proxy.example.com/mcp/?apikey=KEY" npx @luutuankiet/mcp-proxy-shim daemon
33
+ */
34
+ export {};
package/dist/daemon.js ADDED
@@ -0,0 +1,476 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MCP Proxy Shim — Daemon Mode (REST + MCP Gateway)
4
+ *
5
+ * Connects to a single upstream mcpproxy-go via MCP_URL (same as stdio/serve modes)
6
+ * and exposes both REST endpoints for curl-based subagents AND a Streamable HTTP
7
+ * /mcp endpoint for backward compatibility.
8
+ *
9
+ * Architecture:
10
+ * Subagent ──curl──▶ daemon (:3456) ──HTTP──▶ mcpproxy-go (upstream)
11
+ * MCP client ──HTTP──▶ daemon (:3456/mcp) ──HTTP──▶ mcpproxy-go (upstream)
12
+ *
13
+ * REST endpoints (clean JSON, no MCP wrappers):
14
+ * GET /health Health check + session info
15
+ * POST /retrieve_tools { query, compact?, limit? }
16
+ * POST /describe_tools { names: [...] }
17
+ * POST /call { method, name, args, reason?, sensitivity? }
18
+ * POST /exec { code }
19
+ * POST /reinit Force new upstream session
20
+ *
21
+ * MCP endpoint (Streamable HTTP, backward compat):
22
+ * POST/GET/DELETE /mcp Standard MCP Streamable HTTP protocol
23
+ *
24
+ * Environment variables:
25
+ * MCP_URL (required) Upstream mcpproxy-go StreamableHTTP endpoint
26
+ * MCP_PORT (optional) Port to listen on (default: 3456)
27
+ * MCP_HOST (optional) Host to bind to (default: 0.0.0.0)
28
+ * MCP_APIKEY (optional) Require ?apikey=KEY on requests
29
+ * https_proxy (optional) HTTPS proxy for upstream connection
30
+ *
31
+ * Usage:
32
+ * MCP_URL="https://proxy.example.com/mcp/?apikey=KEY" npx @luutuankiet/mcp-proxy-shim daemon
33
+ */
34
+ import { readFileSync, existsSync } from "node:fs";
35
+ import { join } from "node:path";
36
+ import { randomUUID } from "node:crypto";
37
+ import http from "node:http";
38
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
39
+ import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
40
+ import { createShimServer, log, maskUrl, UPSTREAM_URL, ensureSession, mcpRequest, deepUnwrapResult, compactRetrieveTools, transformToolCallArgs, reinitOnExpiry, getSessionId, resetSessionId, } from "./core.js";
41
+ // ---------------------------------------------------------------------------
42
+ // Auto-load .cloud.env from CWD if MCP_URL not in environment
43
+ // ---------------------------------------------------------------------------
44
+ function autoLoadCloudEnv() {
45
+ if (process.env.MCP_URL)
46
+ return;
47
+ const envPath = join(process.cwd(), ".cloud.env");
48
+ if (!existsSync(envPath))
49
+ return;
50
+ try {
51
+ const content = readFileSync(envPath, "utf-8");
52
+ for (const line of content.split("\n")) {
53
+ const trimmed = line.trim();
54
+ if (!trimmed || trimmed.startsWith("#"))
55
+ continue;
56
+ const eqIdx = trimmed.indexOf("=");
57
+ if (eqIdx < 1)
58
+ continue;
59
+ const key = trimmed.slice(0, eqIdx).trim();
60
+ let val = trimmed.slice(eqIdx + 1).trim();
61
+ if ((val.startsWith('"') && val.endsWith('"')) || (val.startsWith("'") && val.endsWith("'"))) {
62
+ val = val.slice(1, -1);
63
+ }
64
+ if (!process.env[key]) {
65
+ process.env[key] = val;
66
+ }
67
+ }
68
+ log("Loaded environment from .cloud.env");
69
+ }
70
+ catch (err) {
71
+ log("Warning: failed to load .cloud.env:", err.message);
72
+ }
73
+ }
74
+ // ---------------------------------------------------------------------------
75
+ // Config
76
+ // ---------------------------------------------------------------------------
77
+ const PORT = parseInt(process.env.MCP_PORT || "3456", 10);
78
+ const HOST = process.env.MCP_HOST || "0.0.0.0";
79
+ const APIKEY = process.env.MCP_APIKEY || null;
80
+ const startTime = Date.now();
81
+ let callCount = 0;
82
+ // ---------------------------------------------------------------------------
83
+ // JSON body parser
84
+ // ---------------------------------------------------------------------------
85
+ function parseBody(req) {
86
+ return new Promise((resolve) => {
87
+ const chunks = [];
88
+ req.on("data", (chunk) => chunks.push(chunk));
89
+ req.on("end", () => {
90
+ try {
91
+ const raw = Buffer.concat(chunks).toString("utf-8");
92
+ resolve(raw ? JSON.parse(raw) : {});
93
+ }
94
+ catch {
95
+ resolve({});
96
+ }
97
+ });
98
+ req.on("error", () => resolve({}));
99
+ });
100
+ }
101
+ // ---------------------------------------------------------------------------
102
+ // REST response helpers
103
+ // ---------------------------------------------------------------------------
104
+ function jsonResponse(res, status, body) {
105
+ res.writeHead(status, {
106
+ "Content-Type": "application/json",
107
+ "Access-Control-Allow-Origin": "*",
108
+ });
109
+ res.end(JSON.stringify(body));
110
+ }
111
+ /**
112
+ * Unwrap an MCP tools/call response to clean JSON for REST consumers.
113
+ * Parses content[0].text and JSON.parse if possible.
114
+ */
115
+ function unwrapForRest(result) {
116
+ return deepUnwrapResult(result);
117
+ }
118
+ // ---------------------------------------------------------------------------
119
+ // REST endpoint handlers
120
+ // ---------------------------------------------------------------------------
121
+ async function handleHealth(_req, res) {
122
+ const sid = getSessionId();
123
+ jsonResponse(res, 200, {
124
+ ok: !!sid,
125
+ sessionId: sid ? sid.slice(0, 12) + "..." : null,
126
+ uptime: Math.round((Date.now() - startTime) / 1000),
127
+ callCount,
128
+ });
129
+ }
130
+ async function handleRetrieveTools(req, res) {
131
+ const body = await parseBody(req);
132
+ const query = body.query;
133
+ if (!query) {
134
+ return jsonResponse(res, 400, { error: "query is required" });
135
+ }
136
+ try {
137
+ await ensureSession();
138
+ callCount++;
139
+ const resp = await mcpRequest("tools/call", {
140
+ name: "retrieve_tools",
141
+ arguments: body,
142
+ });
143
+ if (!resp || resp.error) {
144
+ return jsonResponse(res, 502, {
145
+ error: "upstream error",
146
+ detail: resp?.error || "no response",
147
+ });
148
+ }
149
+ const compacted = compactRetrieveTools(deepUnwrapResult(resp.result), body);
150
+ const unwrapped = unwrapForRest(compacted);
151
+ return jsonResponse(res, 200, unwrapped);
152
+ }
153
+ catch (err) {
154
+ return jsonResponse(res, 500, { error: err.message });
155
+ }
156
+ }
157
+ async function handleDescribeTools(req, res) {
158
+ const body = await parseBody(req);
159
+ const names = body.names;
160
+ if (!Array.isArray(names) || names.length === 0) {
161
+ return jsonResponse(res, 400, { error: "names array is required" });
162
+ }
163
+ try {
164
+ await ensureSession();
165
+ callCount++;
166
+ const results = [];
167
+ for (const name of names) {
168
+ const resp = await mcpRequest("tools/call", {
169
+ name: "retrieve_tools",
170
+ arguments: { query: name },
171
+ });
172
+ if (resp?.result) {
173
+ const unwrapped = deepUnwrapResult(resp.result);
174
+ const arr = Array.isArray(unwrapped)
175
+ ? unwrapped
176
+ : unwrapped?.tools;
177
+ if (Array.isArray(arr)) {
178
+ const match = arr.find((t) => t.name === name);
179
+ results.push(match || { name, error: "not found" });
180
+ }
181
+ else {
182
+ results.push({ name, error: "not found" });
183
+ }
184
+ }
185
+ else {
186
+ results.push({ name, error: "upstream error" });
187
+ }
188
+ }
189
+ return jsonResponse(res, 200, results);
190
+ }
191
+ catch (err) {
192
+ return jsonResponse(res, 500, { error: err.message });
193
+ }
194
+ }
195
+ async function handleCall(req, res) {
196
+ const body = await parseBody(req);
197
+ const method = body.method;
198
+ const name = body.name;
199
+ const args = (body.args || {});
200
+ if (!name) {
201
+ return jsonResponse(res, 400, { error: "name is required" });
202
+ }
203
+ const validMethods = [
204
+ "call_tool_read",
205
+ "call_tool_write",
206
+ "call_tool_destructive",
207
+ ];
208
+ if (method && !validMethods.includes(method)) {
209
+ return jsonResponse(res, 400, {
210
+ error: `Invalid method: ${method}. Must be one of: ${validMethods.join(", ")}`,
211
+ });
212
+ }
213
+ try {
214
+ await ensureSession();
215
+ callCount++;
216
+ const toolName = method || "call_tool_read";
217
+ const callArgs = { name, args };
218
+ if (body.reason)
219
+ callArgs.intent_reason = body.reason;
220
+ if (body.sensitivity)
221
+ callArgs.intent_data_sensitivity = body.sensitivity;
222
+ const forwardArgs = transformToolCallArgs(toolName, callArgs);
223
+ const resp = await mcpRequest("tools/call", {
224
+ name: toolName,
225
+ arguments: forwardArgs,
226
+ });
227
+ if (!resp) {
228
+ return jsonResponse(res, 502, { error: "No response from upstream" });
229
+ }
230
+ if (resp.error) {
231
+ if (resp.error.message?.includes("session") ||
232
+ resp.error.message?.includes("Session") ||
233
+ resp.error.code === -32001) {
234
+ const ok = await reinitOnExpiry();
235
+ if (ok) {
236
+ const retry = await mcpRequest("tools/call", {
237
+ name: toolName,
238
+ arguments: forwardArgs,
239
+ });
240
+ if (retry && !retry.error) {
241
+ return jsonResponse(res, 200, unwrapForRest(retry.result));
242
+ }
243
+ }
244
+ }
245
+ return jsonResponse(res, 502, {
246
+ error: "upstream error",
247
+ detail: resp.error,
248
+ });
249
+ }
250
+ return jsonResponse(res, 200, unwrapForRest(resp.result));
251
+ }
252
+ catch (err) {
253
+ return jsonResponse(res, 500, { error: err.message });
254
+ }
255
+ }
256
+ async function handleExec(req, res) {
257
+ const body = await parseBody(req);
258
+ const code = body.code;
259
+ if (!code) {
260
+ return jsonResponse(res, 400, { error: "code is required" });
261
+ }
262
+ try {
263
+ await ensureSession();
264
+ callCount++;
265
+ const resp = await mcpRequest("tools/call", {
266
+ name: "code_execution",
267
+ arguments: { code },
268
+ });
269
+ if (!resp) {
270
+ return jsonResponse(res, 502, { error: "No response from upstream" });
271
+ }
272
+ if (resp.error) {
273
+ return jsonResponse(res, 502, {
274
+ error: "upstream error",
275
+ detail: resp.error,
276
+ });
277
+ }
278
+ return jsonResponse(res, 200, unwrapForRest(resp.result));
279
+ }
280
+ catch (err) {
281
+ return jsonResponse(res, 500, { error: err.message });
282
+ }
283
+ }
284
+ async function handleReinit(_req, res) {
285
+ try {
286
+ resetSessionId();
287
+ await ensureSession();
288
+ return jsonResponse(res, 200, {
289
+ ok: true,
290
+ sessionId: (getSessionId() || "").slice(0, 12) + "...",
291
+ });
292
+ }
293
+ catch (err) {
294
+ return jsonResponse(res, 500, {
295
+ ok: false,
296
+ error: err.message,
297
+ });
298
+ }
299
+ }
300
+ // ---------------------------------------------------------------------------
301
+ // Streamable HTTP /mcp endpoint (backward compat)
302
+ // ---------------------------------------------------------------------------
303
+ const mcpTransports = new Map();
304
+ async function createMcpSessionTransport() {
305
+ const transport = new StreamableHTTPServerTransport({
306
+ sessionIdGenerator: () => randomUUID(),
307
+ onsessioninitialized: (sessionId) => {
308
+ log(`MCP session initialized: ${sessionId.slice(0, 12)}...`);
309
+ mcpTransports.set(sessionId, transport);
310
+ },
311
+ });
312
+ transport.onclose = () => {
313
+ const sid = transport.sessionId;
314
+ if (sid && mcpTransports.has(sid)) {
315
+ log(`MCP session closed: ${sid.slice(0, 12)}...`);
316
+ mcpTransports.delete(sid);
317
+ }
318
+ };
319
+ const server = await createShimServer({ lazyInit: true });
320
+ await server.connect(transport);
321
+ return transport;
322
+ }
323
+ async function handleMcpRequest(req, res) {
324
+ res.setHeader("Access-Control-Allow-Origin", "*");
325
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
326
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Mcp-Session-Id, Last-Event-ID");
327
+ res.setHeader("Access-Control-Expose-Headers", "Mcp-Session-Id");
328
+ if (req.method === "OPTIONS") {
329
+ res.writeHead(204);
330
+ res.end();
331
+ return;
332
+ }
333
+ const sessionId = req.headers["mcp-session-id"];
334
+ try {
335
+ if (req.method === "POST") {
336
+ const body = await parseBody(req);
337
+ if (sessionId && mcpTransports.has(sessionId)) {
338
+ const transport = mcpTransports.get(sessionId);
339
+ await transport.handleRequest(req, res, body);
340
+ }
341
+ else if (!sessionId && isInitializeRequest(body)) {
342
+ const transport = await createMcpSessionTransport();
343
+ await transport.handleRequest(req, res, body);
344
+ }
345
+ else {
346
+ res.writeHead(400, { "Content-Type": "application/json" });
347
+ res.end(JSON.stringify({
348
+ jsonrpc: "2.0",
349
+ error: {
350
+ code: -32000,
351
+ message: "Bad Request: No valid session ID provided",
352
+ },
353
+ id: null,
354
+ }));
355
+ }
356
+ }
357
+ else if (req.method === "GET" || req.method === "DELETE") {
358
+ if (!sessionId || !mcpTransports.has(sessionId)) {
359
+ res.writeHead(400, { "Content-Type": "text/plain" });
360
+ res.end("Invalid or missing session ID");
361
+ return;
362
+ }
363
+ const transport = mcpTransports.get(sessionId);
364
+ await transport.handleRequest(req, res);
365
+ }
366
+ else {
367
+ res.writeHead(405, { "Content-Type": "text/plain" });
368
+ res.end("Method Not Allowed");
369
+ }
370
+ }
371
+ catch (error) {
372
+ log("MCP handler error:", error.message);
373
+ if (!res.headersSent) {
374
+ res.writeHead(500, { "Content-Type": "application/json" });
375
+ res.end(JSON.stringify({
376
+ jsonrpc: "2.0",
377
+ error: { code: -32603, message: "Internal server error" },
378
+ id: null,
379
+ }));
380
+ }
381
+ }
382
+ }
383
+ // ---------------------------------------------------------------------------
384
+ // HTTP Server + routing
385
+ // ---------------------------------------------------------------------------
386
+ async function main() {
387
+ log("Starting daemon (REST + MCP gateway)...");
388
+ log(`Upstream: ${maskUrl(UPSTREAM_URL)}`);
389
+ try {
390
+ await ensureSession();
391
+ log("Upstream session established");
392
+ }
393
+ catch (err) {
394
+ log("Warning: initial upstream connection failed:", err.message);
395
+ log("Will retry on first request");
396
+ }
397
+ const httpServer = http.createServer((req, res) => {
398
+ const url = new URL(req.url || "/", `http://${req.headers.host || "localhost"}`);
399
+ const pathname = url.pathname;
400
+ if (APIKEY && url.searchParams.get("apikey") !== APIKEY) {
401
+ res.writeHead(401, { "Content-Type": "application/json" });
402
+ res.end(JSON.stringify({ error: "Unauthorized: invalid or missing apikey" }));
403
+ return;
404
+ }
405
+ if (req.method === "OPTIONS") {
406
+ res.setHeader("Access-Control-Allow-Origin", "*");
407
+ res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
408
+ res.setHeader("Access-Control-Allow-Headers", "Content-Type, Mcp-Session-Id, Last-Event-ID");
409
+ res.writeHead(204);
410
+ res.end();
411
+ return;
412
+ }
413
+ const handler = async () => {
414
+ if (pathname === "/health" || pathname === "/healthz") {
415
+ return handleHealth(req, res);
416
+ }
417
+ if (pathname === "/retrieve_tools" && req.method === "POST") {
418
+ return handleRetrieveTools(req, res);
419
+ }
420
+ if (pathname === "/describe_tools" && req.method === "POST") {
421
+ return handleDescribeTools(req, res);
422
+ }
423
+ if (pathname === "/call" && req.method === "POST") {
424
+ return handleCall(req, res);
425
+ }
426
+ if (pathname === "/exec" && req.method === "POST") {
427
+ return handleExec(req, res);
428
+ }
429
+ if (pathname === "/reinit" && req.method === "POST") {
430
+ return handleReinit(req, res);
431
+ }
432
+ if (pathname === "/mcp" || pathname === "/mcp/") {
433
+ return handleMcpRequest(req, res);
434
+ }
435
+ res.writeHead(404, { "Content-Type": "application/json" });
436
+ res.end(JSON.stringify({ error: "Not Found" }));
437
+ };
438
+ handler().catch((err) => {
439
+ log("Unhandled error:", err.message);
440
+ if (!res.headersSent) {
441
+ res.writeHead(500, { "Content-Type": "application/json" });
442
+ res.end(JSON.stringify({ error: "Internal Server Error" }));
443
+ }
444
+ });
445
+ });
446
+ httpServer.listen(PORT, HOST, () => {
447
+ log(`Daemon listening on http://${HOST}:${PORT}`);
448
+ log("REST endpoints: /health, /retrieve_tools, /describe_tools, /call, /exec, /reinit");
449
+ log("MCP endpoint: /mcp");
450
+ log(`Auth: ${APIKEY ? "apikey required (?apikey=...)" : "OPEN (no MCP_APIKEY set)"}`);
451
+ });
452
+ const shutdown = async () => {
453
+ log("Shutting down daemon...");
454
+ for (const [sid, transport] of mcpTransports) {
455
+ try {
456
+ await transport.close();
457
+ }
458
+ catch (err) {
459
+ log(`Error closing MCP session ${sid.slice(0, 12)}:`, err.message);
460
+ }
461
+ }
462
+ mcpTransports.clear();
463
+ httpServer.close(() => {
464
+ log("Daemon stopped");
465
+ process.exit(0);
466
+ });
467
+ setTimeout(() => process.exit(1), 5000).unref();
468
+ };
469
+ process.on("SIGINT", shutdown);
470
+ process.on("SIGTERM", shutdown);
471
+ }
472
+ main().catch((err) => {
473
+ log("Fatal:", err);
474
+ process.exit(1);
475
+ });
476
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,14 +5,17 @@
5
5
  * Subcommands:
6
6
  * (default) stdio transport — for local MCP clients (Claude Code, Cursor, etc.)
7
7
  * serve HTTP Streamable transport — for remote agents over HTTP
8
+ * daemon REST + MCP gateway — single upstream via mcpproxy-go, exposes REST + /mcp
8
9
  *
9
10
  * Usage:
10
- * # Stdio mode (default)
11
+ * # Stdio mode (default) — single upstream via mcpproxy-go
11
12
  * MCP_URL="https://proxy.example.com/mcp/?apikey=KEY" npx @luutuankiet/mcp-proxy-shim
12
13
  *
13
- * # HTTP server mode
14
+ * # HTTP server mode — single upstream via mcpproxy-go
14
15
  * MCP_URL="https://proxy.example.com/mcp/?apikey=KEY" npx @luutuankiet/mcp-proxy-shim serve
15
- * MCP_URL="..." MCP_PORT=8080 npx @luutuankiet/mcp-proxy-shim serve
16
+ *
17
+ * # Daemon mode — REST + MCP gateway for curl-based subagents
18
+ * MCP_URL="https://proxy.example.com/mcp/?apikey=KEY" npx @luutuankiet/mcp-proxy-shim daemon
16
19
  *
17
20
  * .mcp.json entry (stdio):
18
21
  * { "mcpServers": { "proxy": { "type": "stdio", "command": "npx", "args": ["-y", "@luutuankiet/mcp-proxy-shim"], "env": { "MCP_URL": "..." } } } }
package/dist/index.js CHANGED
@@ -5,14 +5,17 @@
5
5
  * Subcommands:
6
6
  * (default) stdio transport — for local MCP clients (Claude Code, Cursor, etc.)
7
7
  * serve HTTP Streamable transport — for remote agents over HTTP
8
+ * daemon REST + MCP gateway — single upstream via mcpproxy-go, exposes REST + /mcp
8
9
  *
9
10
  * Usage:
10
- * # Stdio mode (default)
11
+ * # Stdio mode (default) — single upstream via mcpproxy-go
11
12
  * MCP_URL="https://proxy.example.com/mcp/?apikey=KEY" npx @luutuankiet/mcp-proxy-shim
12
13
  *
13
- * # HTTP server mode
14
+ * # HTTP server mode — single upstream via mcpproxy-go
14
15
  * MCP_URL="https://proxy.example.com/mcp/?apikey=KEY" npx @luutuankiet/mcp-proxy-shim serve
15
- * MCP_URL="..." MCP_PORT=8080 npx @luutuankiet/mcp-proxy-shim serve
16
+ *
17
+ * # Daemon mode — REST + MCP gateway for curl-based subagents
18
+ * MCP_URL="https://proxy.example.com/mcp/?apikey=KEY" npx @luutuankiet/mcp-proxy-shim daemon
16
19
  *
17
20
  * .mcp.json entry (stdio):
18
21
  * { "mcpServers": { "proxy": { "type": "stdio", "command": "npx", "args": ["-y", "@luutuankiet/mcp-proxy-shim"], "env": { "MCP_URL": "..." } } } }
@@ -22,29 +25,50 @@ const subcommand = process.argv[2];
22
25
  if (subcommand === "--help" || subcommand === "-h") {
23
26
  console.log("mcp-proxy-shim — MCP proxy with schema transforms");
24
27
  console.log("");
25
- console.log("Usage: mcp-proxy-shim [serve]");
28
+ console.log("Usage: mcp-proxy-shim [serve|daemon]");
26
29
  console.log("");
27
30
  console.log("Subcommands:");
28
- console.log(" (default) stdio transport for local MCP clients");
29
- console.log(" serve HTTP Streamable server for remote agents");
31
+ console.log(" (default) stdio transport for local MCP clients (requires MCP_URL)");
32
+ console.log(" serve HTTP Streamable server for remote agents (requires MCP_URL)");
33
+ console.log(" daemon REST + MCP gateway for curl-based subagents (requires MCP_URL)");
30
34
  console.log("");
31
- console.log("Environment variables:");
35
+ console.log("Environment variables (default/serve modes):");
32
36
  console.log(" MCP_URL (required) upstream mcpproxy-go endpoint");
33
37
  console.log(" MCP_PORT (serve only) port to listen on (default: 3000)");
34
38
  console.log(" MCP_HOST (serve only) host to bind to (default: 0.0.0.0)");
35
39
  console.log(" MCP_APIKEY (serve only) require ?apikey=KEY on /mcp requests");
36
40
  console.log(" https_proxy HTTPS proxy for upstream connection");
41
+ console.log("");
42
+ console.log("Environment variables (daemon mode):");
43
+ console.log(" MCP_URL (required) upstream mcpproxy-go endpoint");
44
+ console.log(" MCP_PORT Port to listen on (default: 3456)");
45
+ console.log(" MCP_HOST Host to bind to (default: 0.0.0.0)");
46
+ console.log(" MCP_APIKEY Require ?apikey=KEY on /mcp requests (optional)");
47
+ console.log("");
48
+ console.log("Daemon REST endpoints:");
49
+ console.log(" GET /health Health check + session info");
50
+ console.log(" POST /retrieve_tools { query, compact?, limit? }");
51
+ console.log(" POST /describe_tools { names: [...] }");
52
+ console.log(" POST /call { method, name, args }");
53
+ console.log(" POST /exec { code }");
54
+ console.log(" POST /reinit Force new upstream session");
55
+ console.log(" POST /mcp Streamable HTTP (backward compat)");
37
56
  process.exit(0);
38
57
  }
39
58
  if (subcommand === "serve") {
40
59
  // Dynamic import — only loads http-server + core when needed
41
60
  import("./http-server.js");
42
61
  }
62
+ else if (subcommand === "daemon") {
63
+ // Dynamic import — loads daemon mode (no core.ts dependency)
64
+ import("./daemon.js");
65
+ }
43
66
  else if (subcommand) {
44
67
  console.error(`Unknown subcommand: "${subcommand}"`);
45
- console.error("Usage: mcp-proxy-shim [serve]");
68
+ console.error("Usage: mcp-proxy-shim [serve|daemon]");
46
69
  console.error(" (no args) stdio transport (default)");
47
70
  console.error(" serve HTTP Streamable server");
71
+ console.error(" daemon Multi-server MCP gateway");
48
72
  process.exit(1);
49
73
  }
50
74
  else {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnC,0EAA0E;AAC1E,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;IACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;IAC3B,6DAA6D;IAC7D,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAC7B,CAAC;KAAM,IAAI,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,KAAK,CAAC,wBAAwB,UAAU,GAAG,CAAC,CAAC;IACrD,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACxD,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;KAAM,CAAC;IACN,sBAAsB;IACtB,MAAM,CAAC,YAAY,CAAC,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@luutuankiet/mcp-proxy-shim",
3
- "version": "1.1.0-dev.1",
3
+ "version": "1.1.2",
4
4
  "description": "MCP proxy shim for mcpproxy-go — transforms call_tool_* args_json:string to native args:object. Supports stdio and HTTP Streamable transports.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -17,6 +17,7 @@
17
17
  "start:http": "node dist/index.js serve",
18
18
  "dev": "npx tsx src/index.ts",
19
19
  "dev:http": "npx tsx src/index.ts serve",
20
+ "test:daemon": "node test/daemon-e2e.mjs",
20
21
  "prepublishOnly": "npm run build"
21
22
  },
22
23
  "keywords": [