@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 +144 -9
- package/dist/core.d.ts +34 -0
- package/dist/core.js +178 -23
- package/dist/core.js.map +1 -1
- package/dist/daemon.d.ts +34 -0
- package/dist/daemon.js +476 -0
- package/dist/daemon.js.map +1 -0
- package/dist/index.d.ts +6 -3
- package/dist/index.js +32 -8
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
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,
|
|
259
|
-
| Connection | stdin/stdout | HTTP
|
|
260
|
-
|
|
|
261
|
-
|
|
|
262
|
-
|
|
|
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
|
|
305
|
-
npm run start:http
|
|
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: "
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
390
|
-
const
|
|
391
|
-
|
|
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 =
|
|
428
|
-
if (
|
|
429
|
-
return
|
|
430
|
-
return
|
|
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
|
-
|
|
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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"}
|
package/dist/daemon.d.ts
ADDED
|
@@ -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
|
-
*
|
|
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
|
-
*
|
|
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
|
|
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.
|
|
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": [
|