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
package/dist/src/lsp/manager.js
CHANGED
|
@@ -12,17 +12,23 @@ const STAFF_NODE_MODULES = path.join(STAFF_TOOLS_DIR, "node_modules");
|
|
|
12
12
|
const DEFAULT_CONFIGS = {
|
|
13
13
|
typescript: {
|
|
14
14
|
command: ["node", path.join(STAFF_NODE_MODULES, "typescript-language-server/lib/cli.mjs"), "--stdio"],
|
|
15
|
-
installCommand: `npm install --no-
|
|
16
|
-
extensions: [".ts", ".tsx", ".js", ".jsx"]
|
|
15
|
+
installCommand: `npm install --save-exact --no-audit --no-fund typescript-language-server@6.0.1 typescript@5.9.3`,
|
|
16
|
+
extensions: [".ts", ".tsx", ".js", ".jsx"],
|
|
17
|
+
initializationOptions: {
|
|
18
|
+
tsserver: {
|
|
19
|
+
fallbackPath: path.join(STAFF_NODE_MODULES, "typescript", "lib")
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
requiredPaths: [path.join(STAFF_NODE_MODULES, "typescript", "lib", "tsserver.js")]
|
|
17
23
|
},
|
|
18
24
|
python: {
|
|
19
25
|
command: ["node", path.join(STAFF_NODE_MODULES, "pyright/dist/pyright-langserver.js"), "--stdio"],
|
|
20
|
-
installCommand: `npm install --no-
|
|
26
|
+
installCommand: `npm install --save-exact --no-audit --no-fund pyright@1.1.414`,
|
|
21
27
|
extensions: [".py"]
|
|
22
28
|
},
|
|
23
29
|
bash: {
|
|
24
30
|
command: ["node", path.join(STAFF_NODE_MODULES, "bash-language-server/out/cli.js"), "start"],
|
|
25
|
-
installCommand: `npm install --no-
|
|
31
|
+
installCommand: `npm install --save-exact --no-audit --no-fund bash-language-server@5.8.1`,
|
|
26
32
|
extensions: [".sh", ".bash"]
|
|
27
33
|
}
|
|
28
34
|
};
|
|
@@ -42,8 +48,7 @@ export class LSPClient {
|
|
|
42
48
|
const executable = getPlatformCommand(this.config.command[0]);
|
|
43
49
|
this.process = spawn(executable, this.config.command.slice(1), {
|
|
44
50
|
cwd: this.rootPath,
|
|
45
|
-
stdio: ["pipe", "pipe", "pipe"]
|
|
46
|
-
shell: true // Using shell helps with path resolution on Windows
|
|
51
|
+
stdio: ["pipe", "pipe", "pipe"]
|
|
47
52
|
});
|
|
48
53
|
this.process.on("error", (err) => {
|
|
49
54
|
console.error(`[LSP Process Error]: Failed to start ${executable}: ${err.message}`);
|
|
@@ -75,7 +80,8 @@ export class LSPClient {
|
|
|
75
80
|
}
|
|
76
81
|
}
|
|
77
82
|
},
|
|
78
|
-
workspaceFolders: [{ uri: pathToUri(this.rootPath), name: "workspace" }]
|
|
83
|
+
workspaceFolders: [{ uri: pathToUri(this.rootPath), name: "workspace" }],
|
|
84
|
+
initializationOptions: this.config.initializationOptions
|
|
79
85
|
});
|
|
80
86
|
await this.notification("initialized", {});
|
|
81
87
|
this.onNotification("textDocument/publishDiagnostics", (params) => {
|
|
@@ -215,10 +221,11 @@ export class LSPManager {
|
|
|
215
221
|
// Check if it's a node-managed server script
|
|
216
222
|
const isNodeManaged = cmd === "node" && serverPath && path.isAbsolute(serverPath);
|
|
217
223
|
if (isNodeManaged) {
|
|
218
|
-
|
|
224
|
+
const requiredPathsPresent = (config.requiredPaths ?? []).every((requiredPath) => fs.existsSync(requiredPath));
|
|
225
|
+
if (fs.existsSync(serverPath) && requiredPathsPresent) {
|
|
219
226
|
return;
|
|
220
227
|
}
|
|
221
|
-
// If
|
|
228
|
+
// If the server script or a required runtime dependency is missing, install/reinstall.
|
|
222
229
|
}
|
|
223
230
|
else {
|
|
224
231
|
// Check if the command exists in PATH
|
|
@@ -252,10 +259,15 @@ export class LSPManager {
|
|
|
252
259
|
stdio: 'inherit',
|
|
253
260
|
shell: true
|
|
254
261
|
});
|
|
255
|
-
// After installation, verify the
|
|
262
|
+
// After installation, verify the server and any required runtime dependencies.
|
|
256
263
|
if (isNodeManaged && !fs.existsSync(serverPath)) {
|
|
257
264
|
console.error(`Installation finished but ${serverPath} still not found.`);
|
|
258
265
|
}
|
|
266
|
+
for (const requiredPath of config.requiredPaths ?? []) {
|
|
267
|
+
if (!fs.existsSync(requiredPath)) {
|
|
268
|
+
console.error(`Installation finished but required LSP dependency ${requiredPath} is still missing.`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
259
271
|
}
|
|
260
272
|
catch (e) {
|
|
261
273
|
console.error(`Failed to install LSP for ${language}:`, e);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/lsp/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/lsp/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
2
|
+
import type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
/** Outbound-only reverse control: SSE receives JSON-RPC, POST sends JSON-RPC. No resume/replay. */
|
|
4
|
+
export declare class ReverseSseTransport implements Transport {
|
|
5
|
+
private readonly base;
|
|
6
|
+
private readonly headers;
|
|
7
|
+
private readonly fetch;
|
|
8
|
+
private readonly connectTimeout;
|
|
9
|
+
private readonly readTimeout;
|
|
10
|
+
onclose?: () => void;
|
|
11
|
+
onerror?: (error: Error) => void;
|
|
12
|
+
onmessage?: Transport['onmessage'];
|
|
13
|
+
readonly closed: Promise<void>;
|
|
14
|
+
sessionId?: string;
|
|
15
|
+
private resolveClosed;
|
|
16
|
+
private readonly abort;
|
|
17
|
+
private stopped;
|
|
18
|
+
private started;
|
|
19
|
+
private endpoint?;
|
|
20
|
+
private queue;
|
|
21
|
+
private queuedBytes;
|
|
22
|
+
private readTimer?;
|
|
23
|
+
private readyResolve?;
|
|
24
|
+
private readyReject?;
|
|
25
|
+
private reader?;
|
|
26
|
+
constructor(base: URL, headers: Record<string, string>, fetch: typeof globalThis.fetch, connectTimeout?: number, readTimeout?: number);
|
|
27
|
+
start(): Promise<void>;
|
|
28
|
+
private read;
|
|
29
|
+
private event;
|
|
30
|
+
send(message: JSONRPCMessage): Promise<void>;
|
|
31
|
+
private armReadTimeout;
|
|
32
|
+
private fail;
|
|
33
|
+
close(): Promise<void>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { JSONRPCMessageSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
const MESSAGE_LIMIT = 4 * 1024 * 1024;
|
|
3
|
+
const QUEUE_LIMIT = 8 * 1024 * 1024;
|
|
4
|
+
/** Outbound-only reverse control: SSE receives JSON-RPC, POST sends JSON-RPC. No resume/replay. */
|
|
5
|
+
export class ReverseSseTransport {
|
|
6
|
+
base;
|
|
7
|
+
headers;
|
|
8
|
+
fetch;
|
|
9
|
+
connectTimeout;
|
|
10
|
+
readTimeout;
|
|
11
|
+
onclose;
|
|
12
|
+
onerror;
|
|
13
|
+
onmessage;
|
|
14
|
+
closed;
|
|
15
|
+
sessionId;
|
|
16
|
+
resolveClosed;
|
|
17
|
+
abort = new AbortController();
|
|
18
|
+
stopped = false;
|
|
19
|
+
started = false;
|
|
20
|
+
endpoint;
|
|
21
|
+
queue = Promise.resolve();
|
|
22
|
+
queuedBytes = 0;
|
|
23
|
+
readTimer;
|
|
24
|
+
readyResolve;
|
|
25
|
+
readyReject;
|
|
26
|
+
reader;
|
|
27
|
+
constructor(base, headers, fetch, connectTimeout = 15000, readTimeout = 45000) {
|
|
28
|
+
this.base = base;
|
|
29
|
+
this.headers = headers;
|
|
30
|
+
this.fetch = fetch;
|
|
31
|
+
this.connectTimeout = connectTimeout;
|
|
32
|
+
this.readTimeout = readTimeout;
|
|
33
|
+
this.closed = new Promise((resolve) => {
|
|
34
|
+
this.resolveClosed = resolve;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async start() {
|
|
38
|
+
if (this.started || this.stopped)
|
|
39
|
+
throw new Error('Reverse transport unavailable');
|
|
40
|
+
this.started = true;
|
|
41
|
+
const ready = new Promise((resolve, reject) => {
|
|
42
|
+
this.readyResolve = resolve;
|
|
43
|
+
this.readyReject = reject;
|
|
44
|
+
});
|
|
45
|
+
const timer = this.connectTimeout > 0
|
|
46
|
+
? setTimeout(() => this.fail(), this.connectTimeout)
|
|
47
|
+
: undefined;
|
|
48
|
+
timer?.unref();
|
|
49
|
+
void this.read().catch(() => this.fail());
|
|
50
|
+
try {
|
|
51
|
+
await ready;
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
clearTimeout(timer);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async read() {
|
|
58
|
+
const response = await this.fetch(this.base.href.replace(/\/$/, '') + '/sse', {
|
|
59
|
+
headers: { ...this.headers, Accept: 'text/event-stream' },
|
|
60
|
+
signal: this.abort.signal,
|
|
61
|
+
redirect: 'manual',
|
|
62
|
+
});
|
|
63
|
+
if (response.status !== 200 ||
|
|
64
|
+
!response.headers
|
|
65
|
+
.get('content-type')
|
|
66
|
+
?.startsWith('text/event-stream') ||
|
|
67
|
+
!response.body) {
|
|
68
|
+
await response.body?.cancel();
|
|
69
|
+
throw new Error('Reverse SSE rejected');
|
|
70
|
+
}
|
|
71
|
+
this.reader = response.body.getReader();
|
|
72
|
+
const decoder = new TextDecoder('utf-8', { fatal: true });
|
|
73
|
+
let line = '';
|
|
74
|
+
let event = 'message';
|
|
75
|
+
let data = [];
|
|
76
|
+
let blockBytes = 0;
|
|
77
|
+
let afterCR = false;
|
|
78
|
+
const completeLine = () => {
|
|
79
|
+
if (line === '') {
|
|
80
|
+
if (data.length)
|
|
81
|
+
this.event(event, data.join('\n'));
|
|
82
|
+
event = 'message';
|
|
83
|
+
data = [];
|
|
84
|
+
blockBytes = 0;
|
|
85
|
+
}
|
|
86
|
+
else if (!line.startsWith(':')) {
|
|
87
|
+
const colon = line.indexOf(':');
|
|
88
|
+
const field = colon < 0 ? line : line.slice(0, colon);
|
|
89
|
+
let value = colon < 0 ? '' : line.slice(colon + 1);
|
|
90
|
+
if (value.startsWith(' '))
|
|
91
|
+
value = value.slice(1);
|
|
92
|
+
if (field === 'event')
|
|
93
|
+
event = value;
|
|
94
|
+
if (field === 'data')
|
|
95
|
+
data.push(value);
|
|
96
|
+
}
|
|
97
|
+
line = '';
|
|
98
|
+
};
|
|
99
|
+
while (!this.stopped) {
|
|
100
|
+
this.armReadTimeout();
|
|
101
|
+
const part = await this.reader.read();
|
|
102
|
+
if (part.done)
|
|
103
|
+
throw new Error('Reverse SSE ended');
|
|
104
|
+
const text = decoder.decode(part.value, { stream: true });
|
|
105
|
+
// Bound complete and partial events before they can grow an unbounded JSON buffer.
|
|
106
|
+
for (const character of text) {
|
|
107
|
+
if (afterCR && character === '\n') {
|
|
108
|
+
afterCR = false;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
afterCR = character === '\r';
|
|
112
|
+
blockBytes += Buffer.byteLength(character);
|
|
113
|
+
if (blockBytes > MESSAGE_LIMIT + 1024)
|
|
114
|
+
throw new Error('Reverse SSE event too large');
|
|
115
|
+
if (character === '\r' || character === '\n')
|
|
116
|
+
completeLine();
|
|
117
|
+
else
|
|
118
|
+
line += character;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
event(event, data) {
|
|
123
|
+
if (this.stopped)
|
|
124
|
+
throw new Error('Reverse transport closed');
|
|
125
|
+
if (event === 'endpoint') {
|
|
126
|
+
if (this.endpoint)
|
|
127
|
+
throw new Error('Duplicate reverse endpoint');
|
|
128
|
+
const endpoint = new URL(data, this.base);
|
|
129
|
+
const keys = [...endpoint.searchParams.keys()];
|
|
130
|
+
const session = endpoint.searchParams.get('session') ?? '';
|
|
131
|
+
if (endpoint.origin !== this.base.origin ||
|
|
132
|
+
endpoint.username ||
|
|
133
|
+
endpoint.password ||
|
|
134
|
+
endpoint.hash ||
|
|
135
|
+
endpoint.pathname !==
|
|
136
|
+
this.base.pathname.replace(/\/$/, '') + '/message' ||
|
|
137
|
+
keys.length !== 1 ||
|
|
138
|
+
keys[0] !== 'session' ||
|
|
139
|
+
!/^[0-9a-f]{64}$/.test(session))
|
|
140
|
+
throw new Error('Reverse endpoint rejected');
|
|
141
|
+
this.endpoint = endpoint;
|
|
142
|
+
this.sessionId = session;
|
|
143
|
+
this.readyResolve?.();
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (event !== 'message' || !this.endpoint)
|
|
147
|
+
throw new Error('Unexpected reverse SSE event');
|
|
148
|
+
this.onmessage?.(JSONRPCMessageSchema.parse(JSON.parse(data)));
|
|
149
|
+
}
|
|
150
|
+
async send(message) {
|
|
151
|
+
if (this.stopped || !this.endpoint)
|
|
152
|
+
throw new Error('Reverse transport unavailable');
|
|
153
|
+
const body = JSON.stringify(message);
|
|
154
|
+
const bytes = Buffer.byteLength(body);
|
|
155
|
+
if (bytes > MESSAGE_LIMIT || this.queuedBytes + bytes > QUEUE_LIMIT) {
|
|
156
|
+
this.fail();
|
|
157
|
+
throw new Error('Reverse control queue exceeded');
|
|
158
|
+
}
|
|
159
|
+
this.queuedBytes += bytes;
|
|
160
|
+
const operation = this.queue.then(async () => {
|
|
161
|
+
if (this.stopped)
|
|
162
|
+
throw new Error('Reverse transport closed');
|
|
163
|
+
const response = await this.fetch(this.endpoint, {
|
|
164
|
+
method: 'POST',
|
|
165
|
+
headers: {
|
|
166
|
+
...this.headers,
|
|
167
|
+
'Content-Type': 'application/json',
|
|
168
|
+
},
|
|
169
|
+
body,
|
|
170
|
+
signal: this.abort.signal,
|
|
171
|
+
redirect: 'manual',
|
|
172
|
+
});
|
|
173
|
+
const accepted = response.status === 202;
|
|
174
|
+
await response.body?.cancel();
|
|
175
|
+
if (!accepted)
|
|
176
|
+
throw new Error('Reverse POST rejected');
|
|
177
|
+
});
|
|
178
|
+
this.queue = operation.catch(() => this.fail());
|
|
179
|
+
try {
|
|
180
|
+
await operation;
|
|
181
|
+
}
|
|
182
|
+
finally {
|
|
183
|
+
this.queuedBytes -= bytes;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
armReadTimeout() {
|
|
187
|
+
clearTimeout(this.readTimer);
|
|
188
|
+
if (this.readTimeout > 0) {
|
|
189
|
+
this.readTimer = setTimeout(() => this.fail(), this.readTimeout);
|
|
190
|
+
this.readTimer.unref();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
fail() {
|
|
194
|
+
if (this.stopped)
|
|
195
|
+
return;
|
|
196
|
+
try {
|
|
197
|
+
this.onerror?.(new Error('Reverse control connection failed'));
|
|
198
|
+
}
|
|
199
|
+
finally {
|
|
200
|
+
void this.close();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async close() {
|
|
204
|
+
if (this.stopped)
|
|
205
|
+
return;
|
|
206
|
+
this.stopped = true;
|
|
207
|
+
clearTimeout(this.readTimer);
|
|
208
|
+
this.abort.abort();
|
|
209
|
+
void this.reader?.cancel().catch(() => { });
|
|
210
|
+
this.readyReject?.(new Error('Reverse connection closed'));
|
|
211
|
+
this.resolveClosed();
|
|
212
|
+
this.onclose?.();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=SseTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SseTransport.js","sourceRoot":"","sources":["../../../src/reverse/SseTransport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function validateReverseUrl(value: string): URL;
|
|
2
|
+
export declare function reverseProxyUrl(url: URL, explicit?: string, env?: NodeJS.ProcessEnv): URL | undefined;
|
|
3
|
+
/** One attempt's outbound control/data HTTP pool; never follows redirects or logs credentials. */
|
|
4
|
+
export declare function createReverseHttp(url: URL, proxy: URL | undefined, signal: AbortSignal): {
|
|
5
|
+
fetch: typeof globalThis.fetch;
|
|
6
|
+
close: () => Promise<void>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { Agent, ProxyAgent, fetch as undiciFetch } from 'undici';
|
|
2
|
+
import { checkServerIdentity } from 'node:tls';
|
|
3
|
+
import { selectProxyForOrigin } from '../utils/proxy.js';
|
|
4
|
+
export function validateReverseUrl(value) {
|
|
5
|
+
const url = new URL(value);
|
|
6
|
+
if (!['http:', 'https:'].includes(url.protocol) ||
|
|
7
|
+
url.username ||
|
|
8
|
+
url.password ||
|
|
9
|
+
url.search ||
|
|
10
|
+
url.hash ||
|
|
11
|
+
url.pathname !== '/api/mcp/reverse')
|
|
12
|
+
throw new Error('Reverse URL must be an HTTP(S) base endpoint without credentials, query or fragment.');
|
|
13
|
+
return url;
|
|
14
|
+
}
|
|
15
|
+
export function reverseProxyUrl(url, explicit, env = process.env) {
|
|
16
|
+
const selected = explicit ??
|
|
17
|
+
selectProxyForOrigin(url, {
|
|
18
|
+
httpProxy: env.HTTP_PROXY || env.http_proxy,
|
|
19
|
+
httpsProxy: env.HTTPS_PROXY || env.https_proxy,
|
|
20
|
+
noProxy: env.NO_PROXY || env.no_proxy,
|
|
21
|
+
});
|
|
22
|
+
if (selected === null || selected === undefined)
|
|
23
|
+
return undefined;
|
|
24
|
+
try {
|
|
25
|
+
const proxy = new URL(selected);
|
|
26
|
+
if (!['http:', 'https:'].includes(proxy.protocol) ||
|
|
27
|
+
proxy.search ||
|
|
28
|
+
proxy.hash)
|
|
29
|
+
throw new Error('Invalid proxy');
|
|
30
|
+
decodeURIComponent(proxy.username);
|
|
31
|
+
decodeURIComponent(proxy.password);
|
|
32
|
+
return proxy;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
throw new Error('Reverse proxy must be a valid HTTP(S) proxy URL.');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/** One attempt's outbound control/data HTTP pool; never follows redirects or logs credentials. */
|
|
39
|
+
export function createReverseHttp(url, proxy, signal) {
|
|
40
|
+
const tls = {
|
|
41
|
+
rejectUnauthorized: true,
|
|
42
|
+
checkServerIdentity: (_hostname, certificate) => checkServerIdentity(url.hostname.replace(/^\[|\]$/g, ''), certificate),
|
|
43
|
+
};
|
|
44
|
+
let dispatcher;
|
|
45
|
+
if (proxy) {
|
|
46
|
+
const address = new URL(proxy);
|
|
47
|
+
const token = address.username || address.password
|
|
48
|
+
? 'Basic ' +
|
|
49
|
+
Buffer.from(`${decodeURIComponent(address.username)}:${decodeURIComponent(address.password)}`).toString('base64')
|
|
50
|
+
: undefined;
|
|
51
|
+
address.username = '';
|
|
52
|
+
address.password = '';
|
|
53
|
+
dispatcher = new ProxyAgent({
|
|
54
|
+
uri: address.href,
|
|
55
|
+
token,
|
|
56
|
+
requestTls: tls,
|
|
57
|
+
proxyTls: { rejectUnauthorized: true },
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
dispatcher = new Agent({ connect: tls });
|
|
62
|
+
}
|
|
63
|
+
const fetch = async (input, init) => {
|
|
64
|
+
const request = new Request(input, init);
|
|
65
|
+
const target = new URL(request.url);
|
|
66
|
+
if (target.origin !== url.origin ||
|
|
67
|
+
target.username ||
|
|
68
|
+
target.password ||
|
|
69
|
+
target.hash ||
|
|
70
|
+
!target.pathname.startsWith(url.pathname + '/'))
|
|
71
|
+
throw new Error('Reverse HTTP endpoint rejected');
|
|
72
|
+
const response = await undiciFetch(target, {
|
|
73
|
+
method: request.method,
|
|
74
|
+
headers: Object.fromEntries(request.headers),
|
|
75
|
+
body: request.body,
|
|
76
|
+
duplex: 'half',
|
|
77
|
+
signal: AbortSignal.any([signal, request.signal]),
|
|
78
|
+
redirect: 'manual',
|
|
79
|
+
dispatcher,
|
|
80
|
+
});
|
|
81
|
+
return response;
|
|
82
|
+
};
|
|
83
|
+
return { fetch, close: () => dispatcher.destroy() };
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/reverse/http.ts"],"names":[],"mappings":"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"}
|
package/dist/src/server.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { McpServer } from
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { ExtensionOptions } from './extensions/config.js';
|
|
3
|
+
export type { ExtensionOptions } from './extensions/config.js';
|
|
2
4
|
/**
|
|
3
5
|
* Creates and initializes a new McpServer with all functional tools.
|
|
4
6
|
* @param name The server's identification name.
|
|
@@ -10,4 +12,4 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
10
12
|
* @param enableLsp Whether to enable LSP tools.
|
|
11
13
|
* @returns An initialized McpServer instance.
|
|
12
14
|
*/
|
|
13
|
-
export declare function createServerFactory(name: string, version: string, workingDir: string, allowedDirs: string[], profile?: string, maxMcpSessions?: number, enableLsp?: boolean): () => McpServer;
|
|
15
|
+
export declare function createServerFactory(name: string, version: string, workingDir: string, allowedDirs: string[], profile?: string, maxMcpSessions?: number, enableLsp?: boolean, extensions?: ExtensionOptions, privateDirectoryAliases?: string[]): () => McpServer;
|