staff-mcp 1.2.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/README.md +178 -49
- package/README_zh.md +176 -47
- package/dist/src/data/HttpDataSession.d.ts +22 -0
- package/dist/src/data/HttpDataSession.js +925 -0
- package/dist/src/data/HttpDataSession.js.map +1 -0
- package/dist/src/data/node.d.ts +4 -0
- package/dist/src/data/node.js +93 -0
- package/dist/src/data/node.js.map +1 -0
- package/dist/src/data/types.d.ts +54 -0
- package/dist/src/data/types.js +2 -0
- package/dist/src/data/types.js.map +1 -0
- package/dist/src/data-stdio-docker.d.ts +10 -0
- package/dist/src/data-stdio-docker.js +140 -0
- package/dist/src/data-stdio-docker.js.map +1 -0
- package/dist/src/docker-proxy.d.ts +6 -1
- package/dist/src/docker-proxy.js +324 -147
- package/dist/src/docker-proxy.js.map +1 -1
- package/dist/src/extensions/apps.d.ts +12 -0
- package/dist/src/extensions/apps.js +85 -0
- package/dist/src/extensions/apps.js.map +1 -0
- package/dist/src/extensions/config.d.ts +27 -0
- package/dist/src/extensions/config.js +91 -0
- package/dist/src/extensions/config.js.map +1 -0
- package/dist/src/extensions/protocol.d.ts +35 -0
- package/dist/src/extensions/protocol.js +47 -0
- package/dist/src/extensions/protocol.js.map +1 -0
- package/dist/src/extensions/runtime.d.ts +16 -0
- package/dist/src/extensions/runtime.js +266 -0
- package/dist/src/extensions/runtime.js.map +1 -0
- package/dist/src/file-manager/extension.d.ts +21 -0
- package/dist/src/file-manager/extension.js +514 -0
- package/dist/src/file-manager/extension.js.map +1 -0
- package/dist/src/file-manager/file-core.d.ts +128 -0
- package/dist/src/file-manager/file-core.js +750 -0
- package/dist/src/file-manager/file-core.js.map +1 -0
- package/dist/src/file-manager/transfers.d.ts +423 -0
- package/dist/src/file-manager/transfers.js +540 -0
- package/dist/src/file-manager/transfers.js.map +1 -0
- package/dist/src/file-manager/ui/index.html +81 -0
- package/dist/src/index.js +289 -128
- package/dist/src/index.js.map +1 -1
- package/dist/src/lsp/manager.d.ts +2 -0
- package/dist/src/lsp/manager.js +22 -10
- package/dist/src/lsp/manager.js.map +1 -1
- package/dist/src/reverse/SseTransport.d.ts +34 -0
- package/dist/src/reverse/SseTransport.js +215 -0
- package/dist/src/reverse/SseTransport.js.map +1 -0
- package/dist/src/reverse/http.d.ts +7 -0
- package/dist/src/reverse/http.js +85 -0
- package/dist/src/reverse/http.js.map +1 -0
- package/dist/src/server.d.ts +4 -2
- package/dist/src/server.js +80 -18
- package/dist/src/server.js.map +1 -1
- package/dist/src/terminal/extension.d.ts +4 -0
- package/dist/src/terminal/extension.js +108 -0
- package/dist/src/terminal/extension.js.map +1 -0
- package/dist/src/terminal/pty.d.ts +14 -0
- package/dist/src/terminal/pty.js +121 -0
- package/dist/src/terminal/pty.js.map +1 -0
- package/dist/src/terminal/session.d.ts +136 -0
- package/dist/src/terminal/session.js +422 -0
- package/dist/src/terminal/session.js.map +1 -0
- package/dist/src/terminal/ui/index.html +183 -0
- package/dist/src/tools/file-tools.d.ts +2 -1
- package/dist/src/tools/file-tools.js +19 -7
- package/dist/src/tools/file-tools.js.map +1 -1
- package/dist/src/tools/mcp-client-tools.js +244 -104
- package/dist/src/tools/mcp-client-tools.js.map +1 -1
- package/dist/src/tools/shell-tools.js +1 -1
- package/dist/src/tools/shell-tools.js.map +1 -1
- package/dist/src/tools/skills.js +26 -1
- package/dist/src/tools/skills.js.map +1 -1
- package/dist/src/tools/system-tools.d.ts +9 -3
- package/dist/src/tools/system-tools.js +31 -48
- package/dist/src/tools/system-tools.js.map +1 -1
- package/dist/src/transports/http.d.ts +16 -2
- package/dist/src/transports/http.js +261 -59
- package/dist/src/transports/http.js.map +1 -1
- package/dist/src/transports/reverse.d.ts +23 -19
- package/dist/src/transports/reverse.js +130 -74
- package/dist/src/transports/reverse.js.map +1 -1
- package/dist/src/transports/stdio.d.ts +6 -2
- package/dist/src/transports/stdio.js +131 -19
- package/dist/src/transports/stdio.js.map +1 -1
- package/dist/src/utils/proxy.d.ts +3 -3
- package/dist/src/utils/proxy.js +84 -62
- package/dist/src/utils/proxy.js.map +1 -1
- package/dist/src/utils/server-activity.d.ts +6 -0
- package/dist/src/utils/server-activity.js +46 -0
- package/dist/src/utils/server-activity.js.map +1 -0
- package/dist/src/utils/server-lifecycle.d.ts +5 -0
- package/dist/src/utils/server-lifecycle.js +51 -0
- package/dist/src/utils/server-lifecycle.js.map +1 -0
- package/docs/file-manager.md +179 -0
- package/docs/terminal.md +66 -0
- package/package.json +40 -19
- package/dist/src/transports/fte-lifecycle.d.ts +0 -13
- package/dist/src/transports/fte-lifecycle.js +0 -76
- package/dist/src/transports/fte-lifecycle.js.map +0 -1
- package/dist/tests/docker-proxy.test.d.ts +0 -1
- package/dist/tests/docker-proxy.test.js +0 -395
- package/dist/tests/docker-proxy.test.js.map +0 -1
- package/dist/tests/file-write-queue.test.d.ts +0 -1
- package/dist/tests/file-write-queue.test.js +0 -105
- package/dist/tests/file-write-queue.test.js.map +0 -1
- package/dist/tests/fte-lifecycle.test.d.ts +0 -1
- package/dist/tests/fte-lifecycle.test.js +0 -118
- package/dist/tests/fte-lifecycle.test.js.map +0 -1
- package/dist/tests/lsp-client.test.d.ts +0 -1
- package/dist/tests/lsp-client.test.js +0 -52
- package/dist/tests/lsp-client.test.js.map +0 -1
- package/dist/tests/package-info.test.d.ts +0 -1
- package/dist/tests/package-info.test.js +0 -54
- package/dist/tests/package-info.test.js.map +0 -1
- package/dist/tests/proxy-no-proxy.test.d.ts +0 -1
- package/dist/tests/proxy-no-proxy.test.js +0 -156
- package/dist/tests/proxy-no-proxy.test.js.map +0 -1
- package/dist/tests/proxy.test.d.ts +0 -1
- package/dist/tests/proxy.test.js +0 -89
- package/dist/tests/proxy.test.js.map +0 -1
- package/dist/tests/reverse-reconnect.test.d.ts +0 -1
- package/dist/tests/reverse-reconnect.test.js +0 -89
- package/dist/tests/reverse-reconnect.test.js.map +0 -1
- package/dist/tests/security.test.d.ts +0 -1
- package/dist/tests/security.test.js +0 -21
- package/dist/tests/security.test.js.map +0 -1
- package/dist/tests/shell-tools.test.d.ts +0 -1
- package/dist/tests/shell-tools.test.js +0 -113
- package/dist/tests/shell-tools.test.js.map +0 -1
- package/dist/tests/test_files/test.d.ts +0 -1
- package/dist/tests/test_files/test.js +0 -4
- package/dist/tests/test_files/test.js.map +0 -1
|
@@ -1,24 +1,151 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { spawn } from "child_process";
|
|
3
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
3
4
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
5
|
+
import { ListToolsResultSchema } from "@modelcontextprotocol/sdk/types.js";
|
|
4
6
|
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
5
7
|
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
6
8
|
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
7
9
|
import { STAFF_MCP_VERSION } from "../package-info.js";
|
|
8
10
|
const sessions = new Map();
|
|
11
|
+
function assertStarting(session) {
|
|
12
|
+
if (sessions.get(session.sessionId) !== session || session.startController.signal.aborted || session.status !== "starting") {
|
|
13
|
+
throw new Error(session.error || `MCP session '${session.sessionId}' startup was cancelled.`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function watchClientClose(session) {
|
|
17
|
+
const client = session.client;
|
|
18
|
+
client.onclose = () => {
|
|
19
|
+
if (sessions.get(session.sessionId) === session && session.client === client && session.status === "ready") {
|
|
20
|
+
session.status = "exited";
|
|
21
|
+
session.error = "MCP connection closed.";
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async function closeSessionConnection(session) {
|
|
26
|
+
const errors = [];
|
|
27
|
+
try {
|
|
28
|
+
await session.client.close();
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
errors.push(`Client close failed: ${String(err)}`);
|
|
32
|
+
// The transport may still own resources when Client.close rejects (including stdio children).
|
|
33
|
+
try {
|
|
34
|
+
await session.transport?.close();
|
|
35
|
+
}
|
|
36
|
+
catch (transportError) {
|
|
37
|
+
errors.push(`Transport close failed: ${String(transportError)}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return errors;
|
|
41
|
+
}
|
|
42
|
+
async function cleanupSession(session) {
|
|
43
|
+
if (session.cleanup)
|
|
44
|
+
return session.cleanup;
|
|
45
|
+
const cleanup = (async () => {
|
|
46
|
+
const errors = await closeSessionConnection(session);
|
|
47
|
+
// HTTP children are detached: kill the owned group, even if the leader has exited.
|
|
48
|
+
// This must not be skipped when closing the MCP connection fails.
|
|
49
|
+
if (session.process?.pid) {
|
|
50
|
+
try {
|
|
51
|
+
process.kill(process.platform === "win32" ? session.process.pid : -session.process.pid, "SIGKILL");
|
|
52
|
+
}
|
|
53
|
+
catch (err) {
|
|
54
|
+
if (err.code !== "ESRCH") {
|
|
55
|
+
errors.push(`HTTP process cleanup failed: ${String(err)}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return errors;
|
|
60
|
+
})();
|
|
61
|
+
session.cleanup = cleanup;
|
|
62
|
+
try {
|
|
63
|
+
return await cleanup;
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
// A connect which completes after stop needs another close, not a cached cleanup result.
|
|
67
|
+
if (session.cleanup === cleanup)
|
|
68
|
+
session.cleanup = undefined;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function connectSession(session) {
|
|
72
|
+
assertStarting(session);
|
|
73
|
+
const { signal } = session.startController;
|
|
74
|
+
let onAbort;
|
|
75
|
+
const cancelled = new Promise((_resolve, reject) => {
|
|
76
|
+
onAbort = () => reject(signal.reason);
|
|
77
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
78
|
+
});
|
|
79
|
+
// SDK connect's signal only covers protocol requests, not transport.start().
|
|
80
|
+
// SSE start can remain pending even after EventSource.close(), so stop must
|
|
81
|
+
// settle our wait without waiting for the underlying connect to finish.
|
|
82
|
+
const connecting = (async () => {
|
|
83
|
+
try {
|
|
84
|
+
await session.client.connect(session.transport, { signal });
|
|
85
|
+
}
|
|
86
|
+
finally {
|
|
87
|
+
if (signal.aborted) {
|
|
88
|
+
// A late success or failure may leave resources after the earlier stop.
|
|
89
|
+
// Wait for any in-flight close, then perform a fresh cleanup of this
|
|
90
|
+
// session only; never reinsert it or touch a replacement with the same ID.
|
|
91
|
+
const previousErrors = session.cleanup ? await session.cleanup : [];
|
|
92
|
+
const errors = [...previousErrors, ...(await cleanupSession(session))];
|
|
93
|
+
if (sessions.get(session.sessionId) === session && errors.length > 0) {
|
|
94
|
+
session.status = "error";
|
|
95
|
+
session.error = [session.error, ...errors].filter(Boolean).join("; ");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
})();
|
|
100
|
+
try {
|
|
101
|
+
// Promise.race also observes a late rejection, avoiding unhandled failures.
|
|
102
|
+
await Promise.race([connecting, cancelled]);
|
|
103
|
+
}
|
|
104
|
+
finally {
|
|
105
|
+
signal.removeEventListener("abort", onAbort);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
9
108
|
/**
|
|
10
109
|
* Ensures a session exists and is ready
|
|
11
110
|
*/
|
|
12
111
|
function getReadySession(sessionId) {
|
|
13
112
|
const session = sessions.get(sessionId);
|
|
14
113
|
if (!session) {
|
|
15
|
-
throw new Error(`MCP Session '${sessionId}' not found. Please use '
|
|
114
|
+
throw new Error(`MCP Session '${sessionId}' not found. Please use 'manage_mcp_session' with action: "list" to check active sessions or start it first.`);
|
|
16
115
|
}
|
|
17
116
|
if (session.status !== "ready") {
|
|
18
117
|
throw new Error(`MCP Session '${sessionId}' is not in ready state. Current status: ${session.status}. It might have failed to start or crashed. Check logs if necessary.`);
|
|
19
118
|
}
|
|
20
119
|
return session;
|
|
21
120
|
}
|
|
121
|
+
async function listAllTools(client, signal) {
|
|
122
|
+
const tools = [];
|
|
123
|
+
const seenCursors = new Set();
|
|
124
|
+
let cursor;
|
|
125
|
+
do {
|
|
126
|
+
// Use the protocol request rather than Client.listTools(): SDK v1 replaces
|
|
127
|
+
// its output-schema/task metadata cache on *every page*, which can affect
|
|
128
|
+
// concurrent tool calls while discovery is still in progress.
|
|
129
|
+
const page = await client.request({ method: "tools/list", ...(cursor === undefined ? {} : { params: { cursor } }) }, ListToolsResultSchema, { signal });
|
|
130
|
+
for (const tool of page.tools) {
|
|
131
|
+
tools.push(tool);
|
|
132
|
+
}
|
|
133
|
+
cursor = page.nextCursor;
|
|
134
|
+
if (cursor !== undefined) {
|
|
135
|
+
if (seenCursors.has(cursor)) {
|
|
136
|
+
throw new Error(`Cannot retrieve a complete tool list: repeated pagination cursor '${cursor}'.`);
|
|
137
|
+
}
|
|
138
|
+
seenCursors.add(cursor);
|
|
139
|
+
}
|
|
140
|
+
} while (cursor !== undefined);
|
|
141
|
+
// SDK v1's listTools() ordinarily installs per-tool output validators and
|
|
142
|
+
// task metadata, but only for its last page. Install the complete snapshot
|
|
143
|
+
// once after a successful traversal. Do not clear metadata on partial reads.
|
|
144
|
+
// This SDK method is private in TypeScript; keep the compatibility access
|
|
145
|
+
// centralized until the SDK exposes a public full-list metadata API.
|
|
146
|
+
client.cacheToolMetadata(tools);
|
|
147
|
+
return tools;
|
|
148
|
+
}
|
|
22
149
|
export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
23
150
|
// 1. manage_mcp_session (combines start, stop, list)
|
|
24
151
|
server.registerTool("manage_mcp_session", {
|
|
@@ -28,7 +155,7 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
28
155
|
sessionId: z.string().optional().describe("A unique identifier for this session. Required for 'start' and 'stop'."),
|
|
29
156
|
command: z.string().optional().describe("Required for 'start'. The executable command to run the server."),
|
|
30
157
|
args: z.array(z.string()).optional().describe("Required for 'start'. Arguments to pass to the command."),
|
|
31
|
-
env: z.record(z.string()).optional().describe("Optional for 'start'. Additional environment variables to pass to the command. They will be merged with the system environment."),
|
|
158
|
+
env: z.record(z.string(), z.string()).optional().describe("Optional for 'start'. Additional environment variables to pass to the command. They will be merged with the system environment."),
|
|
32
159
|
transportType: z.enum(["stdio", "http"]).optional().describe("Optional for 'start'. Transport type. Default is 'stdio'. Use 'http' for HTTP/SSE based MCP servers."),
|
|
33
160
|
port: z.number().optional().describe("Required for 'start' if transportType is 'http'. The port number the server is listening on.")
|
|
34
161
|
}).strict(),
|
|
@@ -74,70 +201,97 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
74
201
|
isError: true
|
|
75
202
|
};
|
|
76
203
|
}
|
|
204
|
+
if (effectiveTransport === "http" && !effectivePort) {
|
|
205
|
+
return { content: [{ type: "text", text: `port is required when transportType is 'http'` }], isError: true };
|
|
206
|
+
}
|
|
207
|
+
const session = {
|
|
208
|
+
sessionId, command, args, process: null,
|
|
209
|
+
client: new Client({ name: "staff-mcp-proxy", version: STAFF_MCP_VERSION }, { capabilities: {} }),
|
|
210
|
+
transport: null, status: "starting", startedAt: new Date(),
|
|
211
|
+
startController: new AbortController(),
|
|
212
|
+
};
|
|
213
|
+
// Reserve both the ID and quota before spawning or yielding, for every transport.
|
|
214
|
+
sessions.set(sessionId, session);
|
|
215
|
+
watchClientClose(session);
|
|
77
216
|
try {
|
|
78
|
-
const
|
|
79
|
-
let transport;
|
|
80
|
-
let sessionProcess = null;
|
|
217
|
+
const mergedEnv = { ...process.env, ...env };
|
|
81
218
|
if (effectiveTransport === "http") {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
219
|
+
const child = spawn(command, args, { stdio: "ignore", detached: true, env: mergedEnv });
|
|
220
|
+
session.process = child;
|
|
221
|
+
child.unref();
|
|
222
|
+
child.once("error", (err) => {
|
|
223
|
+
if (sessions.get(sessionId) !== session || session.startController.signal.aborted)
|
|
224
|
+
return;
|
|
225
|
+
session.status = "error";
|
|
226
|
+
session.error = `HTTP process failed: ${err.message}`;
|
|
227
|
+
session.startController.abort(err);
|
|
228
|
+
});
|
|
229
|
+
child.once("exit", (code, signal) => {
|
|
230
|
+
if (sessions.get(sessionId) !== session || session.startController.signal.aborted)
|
|
231
|
+
return;
|
|
232
|
+
session.status = "exited";
|
|
233
|
+
session.error = `HTTP process exited (code: ${code}, signal: ${signal}).`;
|
|
234
|
+
session.startController.abort(new Error(session.error));
|
|
235
|
+
// Do not let the HTTP client reconnect after its owned child exits.
|
|
236
|
+
void closeSessionConnection(session).then((errors) => {
|
|
237
|
+
if (sessions.get(sessionId) === session && errors.length > 0) {
|
|
238
|
+
session.status = "error";
|
|
239
|
+
session.error += ` ${errors.join("; ")}`;
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
await delay(3000, undefined, { signal: session.startController.signal });
|
|
244
|
+
assertStarting(session);
|
|
245
|
+
session.transport = new StreamableHTTPClientTransport(new URL(`http://127.0.0.1:${effectivePort}/mcp`));
|
|
93
246
|
try {
|
|
94
|
-
|
|
95
|
-
await client.connect(transport);
|
|
96
|
-
connected = true;
|
|
247
|
+
await connectSession(session);
|
|
97
248
|
}
|
|
98
|
-
catch (
|
|
99
|
-
|
|
100
|
-
|
|
249
|
+
catch (err) {
|
|
250
|
+
assertStarting(session);
|
|
251
|
+
const errors = await closeSessionConnection(session);
|
|
252
|
+
assertStarting(session);
|
|
253
|
+
if (errors.length > 0)
|
|
254
|
+
throw new Error(errors.join("; "));
|
|
255
|
+
// Use a fresh client: callbacks from a failed HTTP candidate must not close the SSE connection.
|
|
256
|
+
session.client = new Client({ name: "staff-mcp-proxy", version: STAFF_MCP_VERSION }, { capabilities: {} });
|
|
257
|
+
watchClientClose(session);
|
|
258
|
+
session.transport = new SSEClientTransport(new URL(`http://127.0.0.1:${effectivePort}/sse`));
|
|
101
259
|
try {
|
|
102
|
-
|
|
103
|
-
transport = new SSEClientTransport(new URL(`http://127.0.0.1:${effectivePort}/sse`));
|
|
104
|
-
await client.connect(transport);
|
|
105
|
-
connected = true;
|
|
260
|
+
await connectSession(session);
|
|
106
261
|
}
|
|
107
|
-
catch (
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (!connected) {
|
|
112
|
-
if (sessionProcess.pid) {
|
|
113
|
-
try {
|
|
114
|
-
process.kill(sessionProcess.pid, 'SIGKILL');
|
|
115
|
-
}
|
|
116
|
-
catch (e) { }
|
|
262
|
+
catch (sseError) {
|
|
263
|
+
throw new Error(`Failed to connect using 'http' transport (tried streamable-http and sse on port ${effectivePort}): ${String(sseError)} (streamable-http: ${String(err)})`);
|
|
117
264
|
}
|
|
118
|
-
throw new Error(`Failed to connect using 'http' transport (tried streamable-http and sse on port ${effectivePort}): ${lastErr?.message || 'Unknown error'}`);
|
|
119
265
|
}
|
|
120
|
-
sessions.set(sessionId, {
|
|
121
|
-
sessionId, command, args, process: sessionProcess, client, transport,
|
|
122
|
-
status: "ready", startedAt: new Date()
|
|
123
|
-
});
|
|
124
|
-
return { content: [{ type: "text", text: `Successfully started and connected to MCP session '${sessionId}' via http transport. (Active sessions: ${sessions.size}/${options.maxSessions})\nUse 'explore_mcp_session' to discover available tools.` }] };
|
|
125
266
|
}
|
|
126
267
|
else {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
sessions.set(sessionId, {
|
|
130
|
-
sessionId, command, args, process: sessionProcess, client, transport,
|
|
131
|
-
status: "starting", startedAt: new Date()
|
|
132
|
-
});
|
|
133
|
-
await client.connect(transport);
|
|
134
|
-
sessions.get(sessionId).status = "ready";
|
|
135
|
-
return { content: [{ type: "text", text: `Successfully started and connected to MCP session '${sessionId}' via stdio. (Active sessions: ${sessions.size}/${options.maxSessions})\nUse 'explore_mcp_session' to discover available tools.` }] };
|
|
268
|
+
session.transport = new StdioClientTransport({ command, args, env: mergedEnv });
|
|
269
|
+
await connectSession(session);
|
|
136
270
|
}
|
|
271
|
+
assertStarting(session);
|
|
272
|
+
if (!session.client.transport)
|
|
273
|
+
throw new Error("MCP connection closed during startup.");
|
|
274
|
+
session.status = "ready";
|
|
275
|
+
const via = effectiveTransport === "http" ? "http transport" : "stdio";
|
|
276
|
+
return { content: [{ type: "text", text: `Successfully started and connected to MCP session '${sessionId}' via ${via}. (Active sessions: ${sessions.size}/${options.maxSessions})\nUse 'explore_mcp_session' to discover available tools.` }] };
|
|
137
277
|
}
|
|
138
278
|
catch (err) {
|
|
139
|
-
|
|
140
|
-
|
|
279
|
+
const failure = session.error || String(err);
|
|
280
|
+
session.startController.abort(err);
|
|
281
|
+
// Finish any in-flight stop cleanup before reporting the failed start.
|
|
282
|
+
// connectSession also cleans up if the underlying connect settles later.
|
|
283
|
+
const previousErrors = session.cleanup ? await session.cleanup : [];
|
|
284
|
+
const errors = [...previousErrors, ...(await cleanupSession(session))];
|
|
285
|
+
if (sessions.get(sessionId) === session) {
|
|
286
|
+
if (errors.length > 0) {
|
|
287
|
+
session.status = "error";
|
|
288
|
+
session.error = `${failure}; ${errors.join("; ")}`;
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
sessions.delete(sessionId);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return { content: [{ type: "text", text: `Failed to start MCP session '${sessionId}': ${failure}${errors.length > 0 ? `; ${errors.join("; ")}` : ""}` }], isError: true };
|
|
141
295
|
}
|
|
142
296
|
}
|
|
143
297
|
else if (action === "stop") {
|
|
@@ -148,18 +302,20 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
148
302
|
if (!session) {
|
|
149
303
|
return { content: [{ type: "text", text: `Session '${sessionId}' not found.` }] };
|
|
150
304
|
}
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
305
|
+
session.status = "stopping";
|
|
306
|
+
session.startController.abort(new Error(`MCP session '${sessionId}' was stopped.`));
|
|
307
|
+
const errors = await cleanupSession(session);
|
|
308
|
+
if (sessions.get(sessionId) === session) {
|
|
309
|
+
if (errors.length > 0) {
|
|
310
|
+
session.status = "error";
|
|
311
|
+
session.error = errors.join("; ");
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
sessions.delete(sessionId);
|
|
158
315
|
}
|
|
159
316
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
sessions.delete(sessionId);
|
|
317
|
+
if (errors.length > 0) {
|
|
318
|
+
return { content: [{ type: "text", text: `Failed to fully stop MCP session '${sessionId}': ${errors.join("; ")}. Session retained for cleanup retry.` }], isError: true };
|
|
163
319
|
}
|
|
164
320
|
return { content: [{ type: "text", text: `Session '${sessionId}' successfully stopped. (Active sessions: ${sessions.size}/${options.maxSessions})` }] };
|
|
165
321
|
}
|
|
@@ -169,7 +325,7 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
169
325
|
}
|
|
170
326
|
let output = `Active MCP Sessions (${sessions.size}/${options.maxSessions}):\n`;
|
|
171
327
|
for (const [id, session] of sessions.entries()) {
|
|
172
|
-
output += `- [${id}] Status: ${session.status}, Command: ${session.command} ${session.args.join(" ")}\n`;
|
|
328
|
+
output += `- [${id}] Status: ${session.status}, Command: ${session.command} ${session.args.join(" ")}${session.error ? `, Error: ${session.error}` : ""}\n`;
|
|
173
329
|
}
|
|
174
330
|
return { content: [{ type: "text", text: output }] };
|
|
175
331
|
}
|
|
@@ -182,17 +338,25 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
182
338
|
sessionId: z.string().describe("The session ID to explore"),
|
|
183
339
|
toolName: z.string().optional().describe("Optional. The specific tool name to get detailed argument schema for"),
|
|
184
340
|
}).strict(),
|
|
185
|
-
}, async ({ sessionId, toolName }) => {
|
|
341
|
+
}, async ({ sessionId, toolName }, extra) => {
|
|
186
342
|
try {
|
|
187
343
|
const session = getReadySession(sessionId);
|
|
188
|
-
// Fetch
|
|
189
|
-
const
|
|
344
|
+
// Fetch every page before displaying or searching the current tools.
|
|
345
|
+
const tools = await listAllTools(session.client, extra?.signal);
|
|
190
346
|
if (toolName) {
|
|
191
347
|
// --- Detailed view: full schema for ONE specific tool ---
|
|
192
|
-
const tool =
|
|
348
|
+
const tool = tools.find((t) => t.name === toolName);
|
|
193
349
|
if (!tool) {
|
|
350
|
+
let output = `Tool '${toolName}' not found in session '${sessionId}'.\nAvailable Tools (${tools.length} total):\n`;
|
|
351
|
+
if (tools.length === 0) {
|
|
352
|
+
output += "No available tools.\n";
|
|
353
|
+
}
|
|
354
|
+
for (const availableTool of tools) {
|
|
355
|
+
output += `\n[${availableTool.name}]\n${availableTool.description ?? "N/A"}\n`;
|
|
356
|
+
}
|
|
357
|
+
output += `\nTip: Use explore_mcp_session with "toolName" to inspect a specific tool's full schema.`;
|
|
194
358
|
return {
|
|
195
|
-
content: [{ type: "text", text:
|
|
359
|
+
content: [{ type: "text", text: output }],
|
|
196
360
|
isError: true
|
|
197
361
|
};
|
|
198
362
|
}
|
|
@@ -227,8 +391,8 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
227
391
|
// Some MCP servers don't implement getInstructions, skip silently
|
|
228
392
|
}
|
|
229
393
|
// List ALL tools with compact info (NO full schemas - those are expensive)
|
|
230
|
-
output += `Available Tools (${
|
|
231
|
-
for (const t of
|
|
394
|
+
output += `Available Tools (${tools.length} total):\n`;
|
|
395
|
+
for (const t of tools) {
|
|
232
396
|
const props = t.inputSchema?.properties;
|
|
233
397
|
const argCount = props ? Object.keys(props).length : 0;
|
|
234
398
|
const required = t.inputSchema?.required || [];
|
|
@@ -246,19 +410,6 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
246
410
|
output += `\n Args: none`;
|
|
247
411
|
}
|
|
248
412
|
}
|
|
249
|
-
// Prompts (if server provides them)
|
|
250
|
-
try {
|
|
251
|
-
const promptsResult = await session.client.listPrompts();
|
|
252
|
-
if (promptsResult?.prompts?.length > 0) {
|
|
253
|
-
output += `\n\nAvailable Prompts (${promptsResult.prompts.length} total):\n`;
|
|
254
|
-
for (const p of promptsResult.prompts) {
|
|
255
|
-
output += ` [${p.name}] ${p.description || ""}\n`;
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
catch (e) {
|
|
260
|
-
// MCP server may not support prompts
|
|
261
|
-
}
|
|
262
413
|
output += `\n💡 Tip: Use explore_mcp_session with "toolName" to inspect a specific tool's full schema before calling it.`;
|
|
263
414
|
return { content: [{ type: "text", text: output }] };
|
|
264
415
|
}
|
|
@@ -281,11 +432,11 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
281
432
|
}, async ({ sessionId, method, params }, extra) => {
|
|
282
433
|
try {
|
|
283
434
|
const session = getReadySession(sessionId);
|
|
284
|
-
//
|
|
285
|
-
const
|
|
286
|
-
const tool =
|
|
435
|
+
// Validate against the complete list, including tools on later pages.
|
|
436
|
+
const tools = await listAllTools(session.client, extra?.signal);
|
|
437
|
+
const tool = tools.find(t => t.name === method);
|
|
287
438
|
if (!tool) {
|
|
288
|
-
const availableTools =
|
|
439
|
+
const availableTools = tools.map(t => t.name).join(", ");
|
|
289
440
|
return {
|
|
290
441
|
content: [{ type: "text", text: `Tool '${method}' not found in session '${sessionId}'. Available tools: ${availableTools}` }],
|
|
291
442
|
isError: true
|
|
@@ -304,6 +455,8 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
304
455
|
};
|
|
305
456
|
}
|
|
306
457
|
try {
|
|
458
|
+
// The default CallToolResultSchema validates this boundary. The SDK's
|
|
459
|
+
// return type also includes the legacy toolResult schema even when unused.
|
|
307
460
|
const result = await session.client.callTool({
|
|
308
461
|
name: method,
|
|
309
462
|
arguments: parsedParams,
|
|
@@ -312,28 +465,15 @@ export function registerMcpClientTools(server, options = { maxSessions: 5 }) {
|
|
|
312
465
|
// tools manage their own lifecycle; a short cap here orphans their work.
|
|
313
466
|
signal: extra?.signal, // propagate caller cancellation (e.g. user stop) to the nested call
|
|
314
467
|
});
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
let contentArray = [];
|
|
318
|
-
if (result && Array.isArray(result.content)) {
|
|
319
|
-
contentArray = result.content.map((c) => {
|
|
320
|
-
if (c.type === "text" && "text" in c) {
|
|
321
|
-
return { type: "text", text: String(c.text) };
|
|
322
|
-
}
|
|
323
|
-
else {
|
|
324
|
-
return { type: "text", text: `[${c.type} content omitted or unsupported]` };
|
|
325
|
-
}
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
if (result && result.isError) {
|
|
329
|
-
isErrorResult = true;
|
|
468
|
+
const contentArray = [...result.content];
|
|
469
|
+
if (result.isError) {
|
|
330
470
|
// If it's an error (likely validation or execution), append the schema to help the model correct itself
|
|
331
471
|
contentArray.push({
|
|
332
472
|
type: "text",
|
|
333
473
|
text: `\n\nTool '${method}' execution failed. Please check the required parameters for this tool. Here is the tool schema:\n${JSON.stringify(tool.inputSchema, null, 2)}`
|
|
334
474
|
});
|
|
335
475
|
}
|
|
336
|
-
return { content: contentArray, isError:
|
|
476
|
+
return { ...result, content: contentArray, isError: result.isError ?? false };
|
|
337
477
|
}
|
|
338
478
|
catch (callError) {
|
|
339
479
|
// Provide detailed error with schema
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client-tools.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp-client-tools.js","sourceRoot":"","sources":["../../../src/tools/mcp-client-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -356,7 +356,7 @@ export async function stopTaskCore(taskId) {
|
|
|
356
356
|
*/
|
|
357
357
|
export function registerShellTools(server, security) {
|
|
358
358
|
server.registerTool("execute_command", {
|
|
359
|
-
description: "Execute a shell command
|
|
359
|
+
description: "Execute a shell command with the staff host/container process permissions. The starting cwd is validated, but this is not an OS sandbox; shell filesystem and network effects are not restricted by file-tool path checks. Single entry point for ALL command execution: quick commands, builds, tests, and long-running processes (dev servers, watchers). If the command finishes within the timeout, returns its exit code and output. If it is still running when the timeout elapses, the process is NOT killed — it keeps running in the background and the call returns a task ID plus recent output; follow up with manage_background_task (actions: logs/stop/list).",
|
|
360
360
|
inputSchema: z.object({
|
|
361
361
|
command: z.string().describe("The shell command to execute."),
|
|
362
362
|
cwd: z.string().optional().describe("Directory to execute command from (must be allowed). Defaults to the workspace root."),
|