staff-mcp 1.3.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 +152 -55
- package/README_zh.md +155 -53
- 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 +276 -131
- package/dist/src/index.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 +243 -103
- 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/transports/http.d.ts +15 -2
- package/dist/src/transports/http.js +244 -65
- 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 +5 -2
- package/dist/src/transports/stdio.js +130 -20
- package/dist/src/transports/stdio.js.map +1 -1
- package/dist/src/utils/proxy.d.ts +2 -2
- 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 +28 -6
- 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/src/tools/skills.js
CHANGED
|
@@ -3,6 +3,7 @@ import { SkillManager } from "../skills/manager.js";
|
|
|
3
3
|
import * as fs from "fs/promises";
|
|
4
4
|
import * as fsSync from "fs";
|
|
5
5
|
import * as path from "path";
|
|
6
|
+
import { registerServerCleanup } from "../utils/server-lifecycle.js";
|
|
6
7
|
export function registerSkillTools(server, workingDir, security, profile = "default") {
|
|
7
8
|
let skillsMap = SkillManager.loadSkills(workingDir, profile);
|
|
8
9
|
const promptMap = new Map();
|
|
@@ -167,13 +168,32 @@ export function registerSkillTools(server, workingDir, security, profile = "defa
|
|
|
167
168
|
// 目录不存在则自动创建;被删除后自动重建并恢复监听
|
|
168
169
|
// 全局目录和内置目录的 skill 变动需重启才能生效
|
|
169
170
|
const projectSkillDir = path.join(workingDir, ".staff", "skills");
|
|
171
|
+
let watcher = null;
|
|
170
172
|
let watchTimeout = null;
|
|
173
|
+
let disposed = false;
|
|
171
174
|
const DEBOUNCE_MS = 1000; // 1秒防抖
|
|
175
|
+
registerServerCleanup(server, () => {
|
|
176
|
+
if (disposed)
|
|
177
|
+
return;
|
|
178
|
+
disposed = true;
|
|
179
|
+
if (watchTimeout) {
|
|
180
|
+
clearTimeout(watchTimeout);
|
|
181
|
+
watchTimeout = null;
|
|
182
|
+
}
|
|
183
|
+
const activeWatcher = watcher;
|
|
184
|
+
watcher = null;
|
|
185
|
+
activeWatcher?.close();
|
|
186
|
+
});
|
|
172
187
|
const handleWatchEvent = (event, filename) => {
|
|
188
|
+
if (disposed)
|
|
189
|
+
return;
|
|
173
190
|
if (watchTimeout) {
|
|
174
191
|
clearTimeout(watchTimeout);
|
|
175
192
|
}
|
|
176
193
|
watchTimeout = setTimeout(() => {
|
|
194
|
+
watchTimeout = null;
|
|
195
|
+
if (disposed)
|
|
196
|
+
return;
|
|
177
197
|
try {
|
|
178
198
|
skillsMap = SkillManager.loadSkills(workingDir, profile);
|
|
179
199
|
refreshPrompts();
|
|
@@ -184,14 +204,19 @@ export function registerSkillTools(server, workingDir, security, profile = "defa
|
|
|
184
204
|
}, DEBOUNCE_MS);
|
|
185
205
|
};
|
|
186
206
|
const startWatcher = () => {
|
|
207
|
+
if (disposed)
|
|
208
|
+
return;
|
|
187
209
|
if (!fsSync.existsSync(projectSkillDir)) {
|
|
188
210
|
fsSync.mkdirSync(projectSkillDir, { recursive: true });
|
|
189
211
|
console.log(`[SkillTools] Created project skill dir: ${projectSkillDir}`);
|
|
190
212
|
}
|
|
191
213
|
try {
|
|
192
|
-
|
|
214
|
+
watcher = fsSync.watch(projectSkillDir, { recursive: true }, handleWatchEvent);
|
|
193
215
|
console.log(`[SkillTools] Watching project skill dir: ${projectSkillDir}`);
|
|
194
216
|
watcher.on("close", () => {
|
|
217
|
+
watcher = null;
|
|
218
|
+
if (disposed)
|
|
219
|
+
return;
|
|
195
220
|
console.log(`[SkillTools] Watch closed, re-establishing on: ${projectSkillDir}`);
|
|
196
221
|
startWatcher();
|
|
197
222
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/tools/skills.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAa,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,MAAM,MAAM,IAAI,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/tools/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
-
import { McpServer } from
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
export declare function getHttpAuthToken(token?: string): string | undefined;
|
|
3
|
-
export declare
|
|
3
|
+
export declare const HTTP_MAX_SESSIONS = 64;
|
|
4
|
+
export declare const HTTP_SESSION_IDLE_MS: number;
|
|
5
|
+
export interface HttpSessionPolicy {
|
|
6
|
+
maxSessions?: number;
|
|
7
|
+
idleTimeoutMs?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function resolveHttpSessionPolicy(policy?: HttpSessionPolicy): {
|
|
10
|
+
maxSessions: number;
|
|
11
|
+
idleTimeoutMs: number;
|
|
12
|
+
};
|
|
13
|
+
export declare function startHttpServer(serverFactory: () => McpServer, port: number, host?: string, token?: string, policy?: HttpSessionPolicy): Promise<{
|
|
14
|
+
port: number;
|
|
15
|
+
stop: () => Promise<void>;
|
|
16
|
+
}>;
|
|
@@ -1,103 +1,282 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { HttpDataSession } from '../data/HttpDataSession.js';
|
|
2
|
+
import { handleNodeRequest } from '../data/node.js';
|
|
3
|
+
import { configureExtensionData } from '../extensions/runtime.js';
|
|
4
|
+
import { hasServerActivity } from '../utils/server-activity.js';
|
|
5
|
+
import express from 'express';
|
|
6
|
+
import cors from 'cors';
|
|
7
|
+
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
8
|
+
import { isInitializeRequest, isJSONRPCRequest, } from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
import { randomUUID, timingSafeEqual } from 'node:crypto';
|
|
5
10
|
export function getHttpAuthToken(token) {
|
|
6
11
|
if (token === undefined)
|
|
7
12
|
return undefined;
|
|
8
13
|
if (!token || /\s/.test(token)) {
|
|
9
|
-
throw new Error(
|
|
14
|
+
throw new Error('--http-token must be non-empty and contain no whitespace when provided.');
|
|
10
15
|
}
|
|
11
16
|
return token;
|
|
12
17
|
}
|
|
13
|
-
export
|
|
18
|
+
export const HTTP_MAX_SESSIONS = 64;
|
|
19
|
+
export const HTTP_SESSION_IDLE_MS = 30 * 60 * 1000;
|
|
20
|
+
export function resolveHttpSessionPolicy(policy = {}) {
|
|
21
|
+
const maxSessions = policy.maxSessions ?? HTTP_MAX_SESSIONS;
|
|
22
|
+
const idleTimeoutMs = policy.idleTimeoutMs ?? HTTP_SESSION_IDLE_MS;
|
|
23
|
+
if (!Number.isSafeInteger(maxSessions) || maxSessions <= 0)
|
|
24
|
+
throw new Error('HTTP max sessions must be a positive safe integer.');
|
|
25
|
+
if (!Number.isInteger(idleTimeoutMs) ||
|
|
26
|
+
idleTimeoutMs <= 0 ||
|
|
27
|
+
idleTimeoutMs > 2_147_483_647)
|
|
28
|
+
throw new Error('HTTP session idle timeout must be 1..2147483647 ms.');
|
|
29
|
+
return { maxSessions, idleTimeoutMs };
|
|
30
|
+
}
|
|
31
|
+
export async function startHttpServer(serverFactory, port, host = '0.0.0.0', token, policy = {}) {
|
|
32
|
+
const { maxSessions, idleTimeoutMs } = resolveHttpSessionPolicy(policy);
|
|
14
33
|
const authToken = getHttpAuthToken(token);
|
|
15
34
|
const app = express();
|
|
35
|
+
let stopping = false;
|
|
36
|
+
const sessions = new Map();
|
|
37
|
+
const dataSessions = new Map();
|
|
38
|
+
const closeSession = (id, session) => {
|
|
39
|
+
session.closing ??= Promise.resolve()
|
|
40
|
+
.then(() => session.server.close())
|
|
41
|
+
.then(() => {
|
|
42
|
+
if (sessions.get(id) === session)
|
|
43
|
+
sessions.delete(id);
|
|
44
|
+
});
|
|
45
|
+
return session.closing;
|
|
46
|
+
};
|
|
47
|
+
const observeClose = (id, session) => {
|
|
48
|
+
void closeSession(id, session).catch(() => console.error('[staff-mcp] HTTP session cleanup failed.'));
|
|
49
|
+
};
|
|
50
|
+
const sweepIdle = () => {
|
|
51
|
+
const now = performance.now();
|
|
52
|
+
for (const [id, session] of sessions) {
|
|
53
|
+
if (session.closing)
|
|
54
|
+
continue;
|
|
55
|
+
if (session.initializing || hasServerActivity(session.server)) {
|
|
56
|
+
session.idleSince = undefined;
|
|
57
|
+
}
|
|
58
|
+
else if (session.idleSince === undefined) {
|
|
59
|
+
session.idleSince = now;
|
|
60
|
+
}
|
|
61
|
+
else if (now - session.idleSince >= idleTimeoutMs) {
|
|
62
|
+
// Fence synchronously; cleanup keeps its slot until it succeeds.
|
|
63
|
+
observeClose(id, session);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const reject = (res, status, message) => {
|
|
68
|
+
if (!res.headersSent && !res.destroyed) {
|
|
69
|
+
res.status(status).json({
|
|
70
|
+
jsonrpc: '2.0',
|
|
71
|
+
id: null,
|
|
72
|
+
error: {
|
|
73
|
+
code: status === 404
|
|
74
|
+
? -32001
|
|
75
|
+
: status === 429
|
|
76
|
+
? -32000
|
|
77
|
+
: -32600,
|
|
78
|
+
message,
|
|
79
|
+
},
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
};
|
|
16
83
|
// CORS preflight is public and never reaches MCP session handling.
|
|
17
84
|
app.use(cors());
|
|
85
|
+
app.use((_req, res, next) => {
|
|
86
|
+
if (stopping)
|
|
87
|
+
return reject(res, 503, 'Server is stopping');
|
|
88
|
+
next();
|
|
89
|
+
});
|
|
90
|
+
// Session-owned public data endpoints must bypass the MCP JSON parser.
|
|
91
|
+
app.use((req, res, next) => {
|
|
92
|
+
const match = /^\/mcp\/data\/([A-Za-z0-9_-]{16,256})(?:\/|$)/.exec(req.url);
|
|
93
|
+
if (!match)
|
|
94
|
+
return next();
|
|
95
|
+
const session = dataSessions.get(match[1]);
|
|
96
|
+
if (!session) {
|
|
97
|
+
res.status(404).end();
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
void handleNodeRequest(session, req, res).then((handled) => {
|
|
101
|
+
if (!handled && !res.headersSent)
|
|
102
|
+
res.status(404).end();
|
|
103
|
+
}, () => {
|
|
104
|
+
console.error('[staff-mcp] HTTP data request failed.');
|
|
105
|
+
if (!res.headersSent)
|
|
106
|
+
res.status(500).end();
|
|
107
|
+
else
|
|
108
|
+
res.destroy();
|
|
109
|
+
});
|
|
110
|
+
});
|
|
18
111
|
// When configured, authenticate before parsing bodies or accessing sessions.
|
|
19
112
|
if (authToken !== undefined) {
|
|
20
113
|
const expectedToken = Buffer.from(authToken);
|
|
21
|
-
app.use([
|
|
22
|
-
const match = /^Bearer +(\S+)$/i.exec(req.headers.authorization ??
|
|
23
|
-
const
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
res.
|
|
114
|
+
app.use(['/mcp', '/sse', '/messages'], (req, res, next) => {
|
|
115
|
+
const match = /^Bearer +(\S+)$/i.exec(req.headers.authorization ?? '');
|
|
116
|
+
const providedToken = Buffer.from(match?.[1] ?? '');
|
|
117
|
+
if (providedToken.length !== expectedToken.length ||
|
|
118
|
+
!timingSafeEqual(providedToken, expectedToken)) {
|
|
119
|
+
res.setHeader('WWW-Authenticate', 'Bearer realm="staff-mcp"');
|
|
120
|
+
res.status(401).json({ error: 'Unauthorized' });
|
|
27
121
|
return;
|
|
28
122
|
}
|
|
29
123
|
next();
|
|
30
124
|
});
|
|
31
125
|
}
|
|
32
|
-
//
|
|
33
|
-
// Large limit required to support MCP File Transfer Extension (FTE)
|
|
34
|
-
// which sends base64-encoded file chunks up to 2 MiB (~2.67 MiB JSON).
|
|
126
|
+
// Preserve ordinary tool payloads; binary data bypasses this parser.
|
|
35
127
|
app.use(express.json({ limit: '50mb' }));
|
|
36
|
-
// === Session Pool ===
|
|
37
|
-
const sessions = new Map();
|
|
38
128
|
const mcpHandler = async (req, res) => {
|
|
39
|
-
const sessionId = req.headers[
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
129
|
+
const sessionId = req.headers['mcp-session-id'];
|
|
130
|
+
if (sessionId !== undefined) {
|
|
131
|
+
if (typeof sessionId !== 'string' || !sessionId) {
|
|
132
|
+
return reject(res, 400, 'Invalid MCP session ID');
|
|
133
|
+
}
|
|
134
|
+
const session = sessions.get(sessionId);
|
|
135
|
+
if (!session || session.closing) {
|
|
136
|
+
return reject(res, 404, 'Session not found');
|
|
137
|
+
}
|
|
43
138
|
try {
|
|
44
|
-
await
|
|
139
|
+
await session.transport.handleRequest(req, res, req.body);
|
|
45
140
|
}
|
|
46
|
-
catch
|
|
47
|
-
console.error(
|
|
48
|
-
|
|
49
|
-
res.status(500).json({
|
|
50
|
-
error: "Internal Server Error",
|
|
51
|
-
message: error instanceof Error ? error.message : String(error)
|
|
52
|
-
});
|
|
53
|
-
}
|
|
141
|
+
catch {
|
|
142
|
+
console.error('[staff-mcp] HTTP control request failed.');
|
|
143
|
+
reject(res, 500, 'Internal Server Error');
|
|
54
144
|
}
|
|
55
145
|
return;
|
|
56
146
|
}
|
|
57
|
-
//
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (sessionId) {
|
|
63
|
-
delete req.headers["mcp-session-id"];
|
|
64
|
-
delete req.headers["last-event-id"];
|
|
147
|
+
// A stale ID, GET, DELETE or malformed request cannot allocate resources.
|
|
148
|
+
if (req.method !== 'POST' ||
|
|
149
|
+
!isJSONRPCRequest(req.body) ||
|
|
150
|
+
!isInitializeRequest(req.body)) {
|
|
151
|
+
return reject(res, 400, 'A new session requires initialization');
|
|
65
152
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
153
|
+
// JSON body parsing can finish after shutdown has started.
|
|
154
|
+
if (stopping)
|
|
155
|
+
return reject(res, 503, 'Server is stopping');
|
|
156
|
+
sweepIdle();
|
|
157
|
+
if (sessions.size >= maxSessions)
|
|
158
|
+
return reject(res, 429, 'HTTP session capacity reached');
|
|
159
|
+
const id = randomUUID();
|
|
160
|
+
let session;
|
|
161
|
+
const disconnected = () => {
|
|
162
|
+
if (!res.writableFinished && session)
|
|
163
|
+
observeClose(id, session);
|
|
74
164
|
};
|
|
75
|
-
await server.connect(t);
|
|
76
|
-
sessions.set(newSessionId, t);
|
|
77
165
|
try {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
166
|
+
const server = serverFactory();
|
|
167
|
+
const transport = new StreamableHTTPServerTransport({
|
|
168
|
+
sessionIdGenerator: () => id,
|
|
169
|
+
enableJsonResponse: true,
|
|
170
|
+
});
|
|
171
|
+
session = { server, transport, initializing: true };
|
|
172
|
+
const owned = session;
|
|
173
|
+
// The SDK calls this only after parsing/validating the control message.
|
|
174
|
+
// Neither an idle GET SSE stream nor invalid HTTP/data traffic renews it.
|
|
175
|
+
transport.onmessage = () => {
|
|
176
|
+
owned.idleSince = undefined;
|
|
177
|
+
};
|
|
178
|
+
// Include starting sessions in shutdown ownership before the first await.
|
|
179
|
+
sessions.set(id, session);
|
|
180
|
+
transport.onclose = () => observeClose(id, owned);
|
|
181
|
+
res.once('close', disconnected);
|
|
182
|
+
configureExtensionData(server, (binding, accept, signal, origin, supportsPurpose) => {
|
|
183
|
+
signal.throwIfAborted();
|
|
184
|
+
if (stopping || owned.closing)
|
|
185
|
+
throw new Error('HTTP session is closing.');
|
|
186
|
+
if (dataSessions.has(binding))
|
|
187
|
+
throw new Error('Data binding already exists.');
|
|
188
|
+
const authority = req.get('host');
|
|
189
|
+
if (!authority)
|
|
190
|
+
throw new Error('MCP HTTP Host header is required.');
|
|
191
|
+
const endpoint = new URL(`/mcp/data/${binding}`, origin ?? `${req.protocol}://${authority}`).href;
|
|
192
|
+
const data = new HttpDataSession({
|
|
193
|
+
role: 'remote',
|
|
194
|
+
binding,
|
|
195
|
+
endpoint,
|
|
196
|
+
accept,
|
|
197
|
+
supportsPurpose,
|
|
198
|
+
fetch: async () => {
|
|
199
|
+
throw new Error('Outbound data is unavailable in HTTP listener mode');
|
|
200
|
+
},
|
|
201
|
+
validateEndpoint: () => {
|
|
202
|
+
throw new Error('Outbound data endpoint is unavailable in HTTP listener mode');
|
|
203
|
+
},
|
|
86
204
|
});
|
|
205
|
+
dataSessions.set(binding, data);
|
|
206
|
+
return {
|
|
207
|
+
session: data,
|
|
208
|
+
endpoint,
|
|
209
|
+
close: () => {
|
|
210
|
+
if (dataSessions.get(binding) === data)
|
|
211
|
+
dataSessions.delete(binding);
|
|
212
|
+
},
|
|
213
|
+
};
|
|
214
|
+
});
|
|
215
|
+
await server.connect(transport);
|
|
216
|
+
if (stopping || session.closing) {
|
|
217
|
+
await closeSession(id, session);
|
|
218
|
+
return reject(res, 503, 'Server is stopping');
|
|
219
|
+
}
|
|
220
|
+
await transport.handleRequest(req, res, req.body);
|
|
221
|
+
if (!transport.sessionId ||
|
|
222
|
+
res.statusCode >= 400 ||
|
|
223
|
+
(res.destroyed && !res.writableFinished)) {
|
|
224
|
+
await closeSession(id, session);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch {
|
|
228
|
+
if (session) {
|
|
229
|
+
await closeSession(id, session).catch(() => console.error('[staff-mcp] HTTP session cleanup failed.'));
|
|
87
230
|
}
|
|
231
|
+
console.error('[staff-mcp] HTTP initialization failed.');
|
|
232
|
+
reject(res, 500, 'Internal Server Error');
|
|
233
|
+
}
|
|
234
|
+
finally {
|
|
235
|
+
if (session) {
|
|
236
|
+
session.initializing = false;
|
|
237
|
+
session.idleSince = undefined;
|
|
238
|
+
}
|
|
239
|
+
res.removeListener('close', disconnected);
|
|
88
240
|
}
|
|
89
241
|
};
|
|
90
|
-
|
|
91
|
-
app.
|
|
92
|
-
|
|
93
|
-
app.
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
console.error(`[MCP HTTP] JSON Response enabled: true`);
|
|
242
|
+
app.all('/mcp', mcpHandler);
|
|
243
|
+
app.get('/sse', mcpHandler);
|
|
244
|
+
app.post('/messages', mcpHandler);
|
|
245
|
+
const listener = app.listen(port, host);
|
|
246
|
+
await new Promise((resolve, reject) => {
|
|
247
|
+
listener.once('error', reject);
|
|
248
|
+
listener.once('listening', () => {
|
|
249
|
+
listener.removeListener('error', reject);
|
|
99
250
|
resolve();
|
|
100
251
|
});
|
|
101
252
|
});
|
|
253
|
+
const address = listener.address();
|
|
254
|
+
console.error(`[MCP HTTP] Server listening on http://${host}:${address.port}/mcp`);
|
|
255
|
+
// One bounded sweep per listener; no per-session timers or resource lease changes.
|
|
256
|
+
const idleTimer = setInterval(sweepIdle, Math.min(idleTimeoutMs, 60_000));
|
|
257
|
+
idleTimer.unref();
|
|
258
|
+
let stopped;
|
|
259
|
+
return {
|
|
260
|
+
port: address.port,
|
|
261
|
+
stop: () => {
|
|
262
|
+
if (stopped)
|
|
263
|
+
return stopped;
|
|
264
|
+
stopping = true;
|
|
265
|
+
clearInterval(idleTimer);
|
|
266
|
+
// Stop accepting first, but keep the listener alive until owned cleanup settles.
|
|
267
|
+
const listenerClosed = new Promise((resolve, reject) => {
|
|
268
|
+
listener.close((error) => (error ? reject(error) : resolve()));
|
|
269
|
+
});
|
|
270
|
+
stopped = (async () => {
|
|
271
|
+
const results = await Promise.allSettled([...sessions].map(([id, session]) => closeSession(id, session)));
|
|
272
|
+
listener.closeAllConnections();
|
|
273
|
+
await listenerClosed;
|
|
274
|
+
const failed = results.filter((result) => result.status === 'rejected');
|
|
275
|
+
if (failed.length)
|
|
276
|
+
throw new AggregateError(failed.map((result) => result.reason), 'HTTP session cleanup failed');
|
|
277
|
+
})();
|
|
278
|
+
return stopped;
|
|
279
|
+
},
|
|
280
|
+
};
|
|
102
281
|
}
|
|
103
282
|
//# sourceMappingURL=http.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/transports/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/transports/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
import { McpServer } from
|
|
2
|
-
|
|
3
|
-
import { ReverseMCPClient } from "mcp-reverse/client";
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
export { reverseProxyUrl, validateReverseUrl } from '../reverse/http.js';
|
|
4
3
|
export interface ReverseServerOptions {
|
|
5
|
-
|
|
4
|
+
proxy?: string;
|
|
6
5
|
connectTimeout?: number;
|
|
7
|
-
/** Deadline for MCP initialization after the SSE transport opens. */
|
|
8
6
|
initializationTimeout?: number;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
reconnect?:
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
heartbeat?: {
|
|
8
|
+
readTimeout?: number;
|
|
9
|
+
};
|
|
10
|
+
reconnect?: {
|
|
11
|
+
enabled?: boolean;
|
|
12
|
+
initialDelay?: number;
|
|
13
|
+
maxDelay?: number;
|
|
14
|
+
stableConnectionMs?: number;
|
|
15
|
+
};
|
|
16
|
+
logger?: {
|
|
17
|
+
info(message: string): void;
|
|
18
|
+
warn(message: string): void;
|
|
19
|
+
error(message: string): void;
|
|
20
|
+
};
|
|
15
21
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
*/
|
|
23
|
-
export declare function startReverseServer(server: McpServer, url: string, token: string, name: string, options?: ReverseServerOptions): Promise<ReverseMCPClient>;
|
|
22
|
+
export interface ReverseController {
|
|
23
|
+
stop(): Promise<void>;
|
|
24
|
+
readonly closed: Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
/** New HTTP pool, SDK transport and data resources per attempt; never replay requests or input. */
|
|
27
|
+
export declare function startReverseServer(serverFactory: () => McpServer, value: string, token: string, name: string, options?: ReverseServerOptions): Promise<ReverseController>;
|