couchloop-eq-mcp 1.1.3 → 1.1.6
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 +6 -0
- package/dist/clients/shrinkChatClient.d.ts +4 -4
- package/dist/index.js +168 -6
- package/dist/index.js.map +1 -1
- package/dist/server/chatgpt-mcp.d.ts.map +1 -1
- package/dist/server/chatgpt-mcp.js +112 -2
- package/dist/server/chatgpt-mcp.js.map +1 -1
- package/dist/server/http-mcp.d.ts +11 -0
- package/dist/server/http-mcp.d.ts.map +1 -0
- package/dist/server/http-mcp.js +431 -0
- package/dist/server/http-mcp.js.map +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +28 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/sse.d.ts +1 -1
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +320 -69
- package/dist/server/sse.js.map +1 -1
- package/dist/tools/check-versions.d.ts +7 -7
- package/dist/tools/check-versions.d.ts.map +1 -1
- package/dist/tools/check-versions.js +17 -22
- package/dist/tools/check-versions.js.map +1 -1
- package/dist/tools/checkpoint.d.ts +4 -18
- package/dist/tools/checkpoint.d.ts.map +1 -1
- package/dist/tools/checkpoint.js +85 -11
- package/dist/tools/checkpoint.js.map +1 -1
- package/dist/tools/comprehensive-code-review.d.ts +78 -0
- package/dist/tools/comprehensive-code-review.d.ts.map +1 -0
- package/dist/tools/comprehensive-code-review.js +177 -0
- package/dist/tools/comprehensive-code-review.js.map +1 -0
- package/dist/tools/comprehensive-package-audit.d.ts +75 -0
- package/dist/tools/comprehensive-package-audit.d.ts.map +1 -0
- package/dist/tools/comprehensive-package-audit.js +151 -0
- package/dist/tools/comprehensive-package-audit.js.map +1 -0
- package/dist/tools/detect-build-context.d.ts +59 -0
- package/dist/tools/detect-build-context.d.ts.map +1 -0
- package/dist/tools/detect-build-context.js +80 -0
- package/dist/tools/detect-build-context.js.map +1 -0
- package/dist/tools/generate-upgrade-report.d.ts +85 -0
- package/dist/tools/generate-upgrade-report.d.ts.map +1 -0
- package/dist/tools/generate-upgrade-report.js +102 -0
- package/dist/tools/generate-upgrade-report.js.map +1 -0
- package/dist/tools/index-full.d.ts +1355 -0
- package/dist/tools/index-full.d.ts.map +1 -0
- package/dist/tools/index-full.js +611 -0
- package/dist/tools/index-full.js.map +1 -0
- package/dist/tools/index.d.ts +27 -968
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +29 -531
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/insight.d.ts +25 -6
- package/dist/tools/insight.d.ts.map +1 -1
- package/dist/tools/insight.js +2 -1
- package/dist/tools/insight.js.map +1 -1
- package/dist/tools/prevent-ai-errors.d.ts +85 -0
- package/dist/tools/prevent-ai-errors.d.ts.map +1 -0
- package/dist/tools/prevent-ai-errors.js +97 -0
- package/dist/tools/prevent-ai-errors.js.map +1 -0
- package/dist/tools/primary-tools.d.ts +430 -0
- package/dist/tools/primary-tools.d.ts.map +1 -0
- package/dist/tools/primary-tools.js +294 -0
- package/dist/tools/primary-tools.js.map +1 -0
- package/dist/tools/sendMessage.d.ts +3 -5
- package/dist/tools/sendMessage.d.ts.map +1 -1
- package/dist/tools/sendMessage.js +47 -22
- package/dist/tools/sendMessage.js.map +1 -1
- package/dist/tools/session-manager.d.ts +32 -0
- package/dist/tools/session-manager.d.ts.map +1 -0
- package/dist/tools/session-manager.js +184 -0
- package/dist/tools/session-manager.js.map +1 -0
- package/dist/tools/smart-context.d.ts +66 -0
- package/dist/tools/smart-context.d.ts.map +1 -0
- package/dist/tools/smart-context.js +167 -0
- package/dist/tools/smart-context.js.map +1 -0
- package/dist/tools/validate_packages.d.ts.map +1 -1
- package/dist/tools/validate_packages.js +6 -4
- package/dist/tools/validate_packages.js.map +1 -1
- package/dist/types/checkpoint.d.ts +59 -4
- package/dist/types/checkpoint.d.ts.map +1 -1
- package/dist/types/checkpoint.js +20 -1
- package/dist/types/checkpoint.js.map +1 -1
- package/dist/types/journey.d.ts +6 -6
- package/dist/types/session.d.ts +3 -3
- package/dist/utils/sanitize.d.ts +24 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +117 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/workflows/index.d.ts +1 -1
- package/package.json +2 -2
package/dist/server/sse.js
CHANGED
|
@@ -2,28 +2,29 @@
|
|
|
2
2
|
* Streamable HTTP Transport for MCP Server
|
|
3
3
|
* Enables ChatGPT to connect via SSE and HTTP
|
|
4
4
|
*/
|
|
5
|
-
import { Server } from
|
|
6
|
-
import { StreamableHTTPServerTransport } from
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
12
|
-
// Store active transports and servers by session ID
|
|
5
|
+
import { Server } from "@modelcontextprotocol/sdk/server";
|
|
6
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
7
|
+
import { CallToolRequestSchema, GetPromptRequestSchema, ListPromptsRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
8
|
+
import crypto from "crypto";
|
|
9
|
+
import { setupResources } from "../resources/index.js";
|
|
10
|
+
import { setupTools } from "../tools/index.js";
|
|
11
|
+
import { logger } from "../utils/logger.js";
|
|
13
12
|
const activeSessions = new Map();
|
|
13
|
+
const SESSION_TTL_MS = parseInt(process.env.SESSION_TTL_MS || '1800000'); // 30 minutes
|
|
14
14
|
/**
|
|
15
15
|
* Create and configure an MCP server instance
|
|
16
16
|
*/
|
|
17
17
|
async function createMCPServer() {
|
|
18
18
|
// Create MCP server instance
|
|
19
19
|
const server = new Server({
|
|
20
|
-
name:
|
|
21
|
-
version:
|
|
20
|
+
name: "couchloop-mcp",
|
|
21
|
+
version: "1.1.3",
|
|
22
22
|
}, {
|
|
23
23
|
capabilities: {
|
|
24
24
|
tools: {},
|
|
25
25
|
resources: {},
|
|
26
|
-
|
|
26
|
+
prompts: {},
|
|
27
|
+
experimental: {}, // Support experimental features for ChatGPT
|
|
27
28
|
},
|
|
28
29
|
});
|
|
29
30
|
// Set up tools and resources
|
|
@@ -31,31 +32,273 @@ async function createMCPServer() {
|
|
|
31
32
|
const resources = await setupResources();
|
|
32
33
|
// Set up tool handlers
|
|
33
34
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
34
|
-
tools: tools.map(t => t.definition)
|
|
35
|
+
tools: tools.map((t) => t.definition),
|
|
35
36
|
}));
|
|
36
37
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
37
|
-
const tool = tools.find(t => t.definition.name === request.params.name);
|
|
38
|
+
const tool = tools.find((t) => t.definition.name === request.params.name);
|
|
38
39
|
if (!tool) {
|
|
39
40
|
throw new Error(`Tool not found: ${request.params.name}`);
|
|
40
41
|
}
|
|
41
|
-
|
|
42
|
+
const result = await tool.handler(request.params.arguments || {});
|
|
43
|
+
return result;
|
|
42
44
|
});
|
|
43
45
|
// Set up resource handlers
|
|
44
46
|
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
|
|
45
|
-
resources: resources.map(r => r.definition)
|
|
47
|
+
resources: resources.map((r) => r.definition),
|
|
46
48
|
}));
|
|
47
49
|
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
48
|
-
const resource = resources.find(r => r.definition.uri === request.params.uri);
|
|
50
|
+
const resource = resources.find((r) => r.definition.uri === request.params.uri);
|
|
49
51
|
if (!resource) {
|
|
50
52
|
throw new Error(`Resource not found: ${request.params.uri}`);
|
|
51
53
|
}
|
|
52
54
|
const content = await resource.handler();
|
|
53
55
|
return {
|
|
54
|
-
contents: [
|
|
56
|
+
contents: [
|
|
57
|
+
{
|
|
55
58
|
uri: request.params.uri,
|
|
56
|
-
mimeType: resource.definition.mimeType ||
|
|
57
|
-
text: content
|
|
58
|
-
}
|
|
59
|
+
mimeType: resource.definition.mimeType || "application/json",
|
|
60
|
+
text: content,
|
|
61
|
+
},
|
|
62
|
+
],
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
// Set up prompt handlers
|
|
66
|
+
const prompts = [
|
|
67
|
+
{
|
|
68
|
+
name: "daily-reflection",
|
|
69
|
+
description: "Start a guided daily reflection session to process your day",
|
|
70
|
+
arguments: [
|
|
71
|
+
{
|
|
72
|
+
name: "mood",
|
|
73
|
+
description: "Your current mood (optional)",
|
|
74
|
+
required: false,
|
|
75
|
+
},
|
|
76
|
+
],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
name: "code-review",
|
|
80
|
+
description: "Review code for security issues, code smells, and best practices",
|
|
81
|
+
arguments: [
|
|
82
|
+
{ name: "code", description: "The code to review", required: true },
|
|
83
|
+
{
|
|
84
|
+
name: "language",
|
|
85
|
+
description: "Programming language",
|
|
86
|
+
required: false,
|
|
87
|
+
},
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "validate-dependencies",
|
|
92
|
+
description: "Validate package dependencies for hallucinated or vulnerable packages",
|
|
93
|
+
arguments: [
|
|
94
|
+
{
|
|
95
|
+
name: "packages",
|
|
96
|
+
description: "Comma-separated list of packages to validate",
|
|
97
|
+
required: true,
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
name: "sprint-kickoff",
|
|
103
|
+
description: "Start a new sprint session to capture context and decisions",
|
|
104
|
+
arguments: [
|
|
105
|
+
{
|
|
106
|
+
name: "sprint_name",
|
|
107
|
+
description: "Name or identifier for the sprint",
|
|
108
|
+
required: true,
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
name: "security-audit",
|
|
114
|
+
description: "Comprehensive security scan of code for vulnerabilities",
|
|
115
|
+
arguments: [
|
|
116
|
+
{ name: "code", description: "The code to audit", required: true },
|
|
117
|
+
{
|
|
118
|
+
name: "language",
|
|
119
|
+
description: "Programming language",
|
|
120
|
+
required: false,
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "pre-commit-check",
|
|
126
|
+
description: "Full code quality check before committing - security, smells, and review",
|
|
127
|
+
arguments: [
|
|
128
|
+
{ name: "code", description: "The code to check", required: true },
|
|
129
|
+
{
|
|
130
|
+
name: "language",
|
|
131
|
+
description: "Programming language",
|
|
132
|
+
required: false,
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: "check-outdated-deps",
|
|
138
|
+
description: "Find outdated or deprecated dependencies in your project",
|
|
139
|
+
arguments: [
|
|
140
|
+
{
|
|
141
|
+
name: "packages",
|
|
142
|
+
description: "Comma-separated list of packages to check",
|
|
143
|
+
required: true,
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: "registry",
|
|
147
|
+
description: "Package registry (npm, pypi, maven)",
|
|
148
|
+
required: false,
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
name: "save-architecture",
|
|
154
|
+
description: "Store current architecture decisions and technical patterns for future reference",
|
|
155
|
+
arguments: [
|
|
156
|
+
{
|
|
157
|
+
name: "content",
|
|
158
|
+
description: "Architecture decision or pattern to preserve",
|
|
159
|
+
required: true,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: "category",
|
|
163
|
+
description: "Category: architecture, requirements, constraints, decisions, technical-patterns",
|
|
164
|
+
required: false,
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: "retrieve-context",
|
|
170
|
+
description: "Retrieve stored context - either recent context or search for specific topic",
|
|
171
|
+
arguments: [
|
|
172
|
+
{
|
|
173
|
+
name: "search_term",
|
|
174
|
+
description: 'Optional search term (e.g., "email persistence issue")',
|
|
175
|
+
required: false,
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: "category",
|
|
179
|
+
description: "Filter by category: architecture, requirements, constraints, decisions, technical-patterns",
|
|
180
|
+
required: false,
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
];
|
|
185
|
+
server.setRequestHandler(ListPromptsRequestSchema, async () => ({
|
|
186
|
+
prompts,
|
|
187
|
+
}));
|
|
188
|
+
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
189
|
+
const prompt = prompts.find((p) => p.name === request.params.name);
|
|
190
|
+
if (!prompt) {
|
|
191
|
+
throw new Error(`Prompt not found: ${request.params.name}`);
|
|
192
|
+
}
|
|
193
|
+
const args = request.params.arguments || {};
|
|
194
|
+
// Generate prompt messages based on the prompt type
|
|
195
|
+
let messages = [];
|
|
196
|
+
switch (prompt.name) {
|
|
197
|
+
case "daily-reflection":
|
|
198
|
+
messages = [
|
|
199
|
+
{
|
|
200
|
+
role: "user",
|
|
201
|
+
content: {
|
|
202
|
+
type: "text",
|
|
203
|
+
text: `Start a daily reflection session${args.mood ? ` (current mood: ${args.mood})` : ""}. Use the create_session tool with journey_slug "daily-reflection".`,
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
];
|
|
207
|
+
break;
|
|
208
|
+
case "code-review":
|
|
209
|
+
messages = [
|
|
210
|
+
{
|
|
211
|
+
role: "user",
|
|
212
|
+
content: {
|
|
213
|
+
type: "text",
|
|
214
|
+
text: `Review this code for issues:\n\n\`\`\`${args.language || ""}\n${args.code}\n\`\`\`\n\nUse scan_security, pre_review_code, and detect_code_smell tools to analyze.`,
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
];
|
|
218
|
+
break;
|
|
219
|
+
case "validate-dependencies":
|
|
220
|
+
messages = [
|
|
221
|
+
{
|
|
222
|
+
role: "user",
|
|
223
|
+
content: {
|
|
224
|
+
type: "text",
|
|
225
|
+
text: `Validate these packages: ${args.packages}\n\nUse the validate_packages tool to check if they exist and are safe.`,
|
|
226
|
+
},
|
|
227
|
+
},
|
|
228
|
+
];
|
|
229
|
+
break;
|
|
230
|
+
case "sprint-kickoff":
|
|
231
|
+
messages = [
|
|
232
|
+
{
|
|
233
|
+
role: "user",
|
|
234
|
+
content: {
|
|
235
|
+
type: "text",
|
|
236
|
+
text: `Start a new sprint session for "${args.sprint_name}". Use create_session to establish context, then use preserve_context to store the sprint goals.`,
|
|
237
|
+
},
|
|
238
|
+
},
|
|
239
|
+
];
|
|
240
|
+
break;
|
|
241
|
+
case "security-audit":
|
|
242
|
+
messages = [
|
|
243
|
+
{
|
|
244
|
+
role: "user",
|
|
245
|
+
content: {
|
|
246
|
+
type: "text",
|
|
247
|
+
text: `Perform a comprehensive security audit on this code:\n\n\`\`\`${args.language || ""}\n${args.code}\n\`\`\`\n\nUse scan_security with scanType "thorough" to detect SQL injection, XSS, hardcoded secrets, and other vulnerabilities.`,
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
];
|
|
251
|
+
break;
|
|
252
|
+
case "pre-commit-check":
|
|
253
|
+
messages = [
|
|
254
|
+
{
|
|
255
|
+
role: "user",
|
|
256
|
+
content: {
|
|
257
|
+
type: "text",
|
|
258
|
+
text: `Run a full pre-commit quality check on this code:\n\n\`\`\`${args.language || ""}\n${args.code}\n\`\`\`\n\nUse all three tools:\n1. scan_security - check for vulnerabilities\n2. pre_review_code - catch console.logs, TODOs, missing error handling\n3. detect_code_smell - find over-engineering and bloat\n\nProvide a summary of issues found.`,
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
];
|
|
262
|
+
break;
|
|
263
|
+
case "check-outdated-deps":
|
|
264
|
+
messages = [
|
|
265
|
+
{
|
|
266
|
+
role: "user",
|
|
267
|
+
content: {
|
|
268
|
+
type: "text",
|
|
269
|
+
text: `Check these packages for outdated versions and deprecated APIs: ${args.packages}${args.registry ? ` (registry: ${args.registry})` : ""}\n\nUse check_versions tool with checkDeprecated=true and includeUpgradePath=true to identify outdated dependencies and migration paths.`,
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
];
|
|
273
|
+
break;
|
|
274
|
+
case "save-architecture":
|
|
275
|
+
messages = [
|
|
276
|
+
{
|
|
277
|
+
role: "user",
|
|
278
|
+
content: {
|
|
279
|
+
type: "text",
|
|
280
|
+
text: `Save this architecture decision for future reference:\n\n${args.content}\n\nUse preserve_context with action "store" and category "${args.category || "architecture"}" to preserve this context.`,
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
];
|
|
284
|
+
break;
|
|
285
|
+
case "retrieve-context":
|
|
286
|
+
messages = [
|
|
287
|
+
{
|
|
288
|
+
role: "user",
|
|
289
|
+
content: {
|
|
290
|
+
type: "text",
|
|
291
|
+
text: args.search_term
|
|
292
|
+
? `Retrieve stored context matching: "${args.search_term}"${args.category ? ` in category "${args.category}"` : ""}.\n\nUse preserve_context with action "retrieve" and search_term "${args.search_term}".`
|
|
293
|
+
: `Retrieve recent stored context${args.category ? ` from category "${args.category}"` : ""}.\n\nUse preserve_context with action "retrieve" to get the most recent context.`,
|
|
294
|
+
},
|
|
295
|
+
},
|
|
296
|
+
];
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
return {
|
|
300
|
+
description: prompt.description,
|
|
301
|
+
messages,
|
|
59
302
|
};
|
|
60
303
|
});
|
|
61
304
|
return server;
|
|
@@ -67,12 +310,13 @@ async function createMCPServer() {
|
|
|
67
310
|
export async function handleSSE(req, res) {
|
|
68
311
|
try {
|
|
69
312
|
// Get or generate session ID
|
|
70
|
-
let sessionId = req.headers[
|
|
313
|
+
let sessionId = req.headers["x-session-id"];
|
|
71
314
|
// Check if this is an existing session
|
|
72
315
|
let session = activeSessions.get(sessionId);
|
|
73
316
|
if (!session) {
|
|
74
317
|
// Create new session
|
|
75
|
-
sessionId =
|
|
318
|
+
sessionId =
|
|
319
|
+
sessionId || `session_${crypto.randomBytes(16).toString("hex")}`;
|
|
76
320
|
// Create transport with stateful mode (session management)
|
|
77
321
|
const transport = new StreamableHTTPServerTransport({
|
|
78
322
|
sessionIdGenerator: () => sessionId,
|
|
@@ -82,23 +326,22 @@ export async function handleSSE(req, res) {
|
|
|
82
326
|
// Connect transport to server
|
|
83
327
|
await server.connect(transport);
|
|
84
328
|
// Store session
|
|
85
|
-
session = { transport, server };
|
|
329
|
+
session = { transport, server, lastActivity: Date.now() };
|
|
86
330
|
activeSessions.set(sessionId, session);
|
|
87
331
|
logger.info(`New MCP session created: ${sessionId}`);
|
|
88
332
|
}
|
|
333
|
+
// Update activity timestamp
|
|
334
|
+
session.lastActivity = Date.now();
|
|
89
335
|
// Handle the request through the transport
|
|
90
336
|
await session.transport.handleRequest(req, res, req.body);
|
|
91
337
|
}
|
|
92
338
|
catch (error) {
|
|
93
|
-
logger.error(
|
|
94
|
-
logger.error('Error stack:', error instanceof Error ? error.stack : 'No stack');
|
|
95
|
-
logger.error('Request body was:', req.body);
|
|
96
|
-
// Send appropriate error response if not already sent
|
|
339
|
+
logger.error("SSE/HTTP handler error:", error);
|
|
97
340
|
if (!res.headersSent) {
|
|
98
341
|
res.status(500).json({
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
342
|
+
jsonrpc: "2.0",
|
|
343
|
+
error: { code: -32603, message: "Internal server error" },
|
|
344
|
+
id: req.body?.id || null,
|
|
102
345
|
});
|
|
103
346
|
}
|
|
104
347
|
}
|
|
@@ -108,35 +351,36 @@ export async function handleSSE(req, res) {
|
|
|
108
351
|
* This endpoint is more forgiving with Accept headers
|
|
109
352
|
*/
|
|
110
353
|
export async function handleMCPLenient(req, res) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
354
|
+
logger.debug("handleMCPLenient called", {
|
|
355
|
+
method: req.method,
|
|
356
|
+
sessionId: req.headers["x-session-id"],
|
|
357
|
+
});
|
|
115
358
|
try {
|
|
116
359
|
// Log incoming headers for debugging
|
|
117
|
-
logger.info(
|
|
360
|
+
logger.info("MCP Request Headers:", {
|
|
118
361
|
accept: req.headers.accept,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
362
|
+
"content-type": req.headers["content-type"],
|
|
363
|
+
"user-agent": req.headers["user-agent"],
|
|
364
|
+
"x-session-id": req.headers["x-session-id"],
|
|
122
365
|
});
|
|
123
366
|
// Normalize Accept header for compatibility
|
|
124
|
-
const originalAccept = req.headers.accept ||
|
|
125
|
-
if (originalAccept ===
|
|
126
|
-
originalAccept ===
|
|
127
|
-
originalAccept ===
|
|
367
|
+
const originalAccept = req.headers.accept || "";
|
|
368
|
+
if (originalAccept === "*/*" ||
|
|
369
|
+
originalAccept === "application/json" ||
|
|
370
|
+
originalAccept === "application/*" ||
|
|
128
371
|
!originalAccept) {
|
|
129
372
|
// Set the required Accept header for MCP
|
|
130
|
-
req.headers.accept =
|
|
373
|
+
req.headers.accept = "application/json, text/event-stream";
|
|
131
374
|
logger.info(`Normalized Accept header from "${originalAccept}" to "${req.headers.accept}"`);
|
|
132
375
|
}
|
|
133
376
|
// Get or generate session ID
|
|
134
|
-
let sessionId = req.headers[
|
|
377
|
+
let sessionId = req.headers["x-session-id"];
|
|
135
378
|
// Check if this is an existing session
|
|
136
379
|
let session = activeSessions.get(sessionId);
|
|
137
380
|
if (!session) {
|
|
138
381
|
// Create new session
|
|
139
|
-
sessionId =
|
|
382
|
+
sessionId =
|
|
383
|
+
sessionId || `session_${crypto.randomBytes(16).toString("hex")}`;
|
|
140
384
|
// Create transport with lenient options
|
|
141
385
|
const transport = new StreamableHTTPServerTransport({
|
|
142
386
|
sessionIdGenerator: () => sessionId,
|
|
@@ -148,59 +392,66 @@ export async function handleMCPLenient(req, res) {
|
|
|
148
392
|
// Connect transport to server
|
|
149
393
|
await server.connect(transport);
|
|
150
394
|
// Store session
|
|
151
|
-
session = { transport, server };
|
|
395
|
+
session = { transport, server, lastActivity: Date.now() };
|
|
152
396
|
activeSessions.set(sessionId, session);
|
|
153
397
|
logger.info(`New lenient MCP session created: ${sessionId}`);
|
|
154
398
|
}
|
|
399
|
+
// Update activity timestamp
|
|
400
|
+
session.lastActivity = Date.now();
|
|
155
401
|
// Log request details
|
|
156
402
|
if (req.body) {
|
|
157
|
-
logger.info(
|
|
403
|
+
logger.info("MCP Request:", {
|
|
158
404
|
method: req.body.method,
|
|
159
405
|
id: req.body.id,
|
|
160
|
-
params: req.body.params
|
|
406
|
+
params: req.body.params,
|
|
161
407
|
});
|
|
162
408
|
}
|
|
163
409
|
// Handle the request through the transport
|
|
164
410
|
// Create a modified request object with normalized headers
|
|
165
411
|
const modifiedReq = Object.assign({}, req, {
|
|
166
|
-
headers: Object.assign({}, req.headers)
|
|
412
|
+
headers: Object.assign({}, req.headers),
|
|
167
413
|
});
|
|
168
414
|
await session.transport.handleRequest(modifiedReq, res, req.body);
|
|
169
415
|
}
|
|
170
416
|
catch (error) {
|
|
171
|
-
logger.error(
|
|
172
|
-
logger.error('Error stack:', error instanceof Error ? error.stack : 'No stack');
|
|
173
|
-
logger.error('Request body was:', req.body);
|
|
174
|
-
// Send appropriate error response if not already sent
|
|
417
|
+
logger.error("Lenient MCP handler error:", error);
|
|
175
418
|
if (!res.headersSent) {
|
|
176
419
|
res.status(500).json({
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
420
|
+
jsonrpc: "2.0",
|
|
421
|
+
error: { code: -32603, message: "Internal server error" },
|
|
422
|
+
id: req.body?.id || null,
|
|
180
423
|
});
|
|
181
424
|
}
|
|
182
425
|
}
|
|
183
426
|
}
|
|
184
427
|
/**
|
|
185
428
|
* Clean up inactive sessions periodically
|
|
186
|
-
* TODO: Implement session activity tracking and cleanup
|
|
187
429
|
*/
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
430
|
+
function cleanupExpiredSessions() {
|
|
431
|
+
const now = Date.now();
|
|
432
|
+
let cleaned = 0;
|
|
433
|
+
for (const [sessionId, session] of activeSessions.entries()) {
|
|
434
|
+
if (now - session.lastActivity > SESSION_TTL_MS) {
|
|
435
|
+
try {
|
|
436
|
+
session.transport.close();
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
logger.error(`Error closing expired session ${sessionId}:`, error);
|
|
440
|
+
}
|
|
441
|
+
activeSessions.delete(sessionId);
|
|
442
|
+
cleaned++;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
if (cleaned > 0) {
|
|
446
|
+
logger.info(`Cleaned up ${cleaned} expired sessions. Active: ${activeSessions.size}`);
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
setInterval(cleanupExpiredSessions, 5 * 60 * 1000);
|
|
199
450
|
/**
|
|
200
451
|
* Graceful shutdown - clean up all sessions
|
|
201
452
|
*/
|
|
202
453
|
export async function cleanupSessions() {
|
|
203
|
-
logger.info(
|
|
454
|
+
logger.info("Cleaning up MCP sessions...");
|
|
204
455
|
for (const [sessionId, session] of activeSessions.entries()) {
|
|
205
456
|
try {
|
|
206
457
|
await session.transport.close();
|
package/dist/server/sse.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/server/sse.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,11 +13,11 @@ declare const CheckVersionsInputSchema: z.ZodObject<{
|
|
|
13
13
|
}, "strip", z.ZodTypeAny, {
|
|
14
14
|
name: string;
|
|
15
15
|
version?: string | undefined;
|
|
16
|
-
registry?: "npm" | "
|
|
16
|
+
registry?: "npm" | "maven" | "pypi" | "cargo" | "gem" | "nuget" | "go" | undefined;
|
|
17
17
|
}, {
|
|
18
18
|
name: string;
|
|
19
19
|
version?: string | undefined;
|
|
20
|
-
registry?: "npm" | "
|
|
20
|
+
registry?: "npm" | "maven" | "pypi" | "cargo" | "gem" | "nuget" | "go" | undefined;
|
|
21
21
|
}>, "many">>;
|
|
22
22
|
code: z.ZodOptional<z.ZodString>;
|
|
23
23
|
language: z.ZodOptional<z.ZodString>;
|
|
@@ -31,21 +31,21 @@ declare const CheckVersionsInputSchema: z.ZodObject<{
|
|
|
31
31
|
includeUpgradePath: boolean;
|
|
32
32
|
checkSecurity: boolean;
|
|
33
33
|
code?: string | undefined;
|
|
34
|
+
language?: string | undefined;
|
|
34
35
|
packages?: {
|
|
35
36
|
name: string;
|
|
36
37
|
version?: string | undefined;
|
|
37
|
-
registry?: "npm" | "
|
|
38
|
+
registry?: "npm" | "maven" | "pypi" | "cargo" | "gem" | "nuget" | "go" | undefined;
|
|
38
39
|
}[] | undefined;
|
|
39
|
-
language?: string | undefined;
|
|
40
40
|
}, {
|
|
41
41
|
code?: string | undefined;
|
|
42
|
+
language?: string | undefined;
|
|
43
|
+
format?: "json" | "summary" | "markdown" | undefined;
|
|
42
44
|
packages?: {
|
|
43
45
|
name: string;
|
|
44
46
|
version?: string | undefined;
|
|
45
|
-
registry?: "npm" | "
|
|
47
|
+
registry?: "npm" | "maven" | "pypi" | "cargo" | "gem" | "nuget" | "go" | undefined;
|
|
46
48
|
}[] | undefined;
|
|
47
|
-
language?: string | undefined;
|
|
48
|
-
format?: "json" | "summary" | "markdown" | undefined;
|
|
49
49
|
checkDeprecated?: boolean | undefined;
|
|
50
50
|
includeUpgradePath?: boolean | undefined;
|
|
51
51
|
checkSecurity?: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-versions.d.ts","sourceRoot":"","sources":["../../src/tools/check-versions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"check-versions.d.ts","sourceRoot":"","sources":["../../src/tools/check-versions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAmD1D,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB5B,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,iBAAiB,EAAE,IA2D/B,CAAC;AAEF,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAqFzE;AAoOD,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKtC"}
|