sequentum-mcp 1.1.4 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +100 -0
- package/README.md +104 -3
- package/dist/{api-client.d.ts → api/api-client.d.ts} +106 -4
- package/dist/api/api-client.d.ts.map +1 -0
- package/dist/{api-client.js → api/api-client.js} +345 -99
- package/dist/api/api-client.js.map +1 -0
- package/dist/{types.d.ts → api/types.d.ts} +122 -12
- package/dist/api/types.d.ts.map +1 -0
- package/dist/{types.js → api/types.js} +57 -0
- package/dist/api/types.js.map +1 -0
- package/dist/index.js +11 -1737
- package/dist/index.js.map +1 -1
- package/dist/server/cors.d.ts +33 -0
- package/dist/server/cors.d.ts.map +1 -0
- package/dist/server/cors.js +72 -0
- package/dist/server/cors.js.map +1 -0
- package/dist/server/handlers.d.ts +49 -0
- package/dist/server/handlers.d.ts.map +1 -0
- package/dist/server/handlers.js +1031 -0
- package/dist/server/handlers.js.map +1 -0
- package/dist/server/http-server.d.ts +13 -0
- package/dist/server/http-server.d.ts.map +1 -0
- package/dist/server/http-server.js +393 -0
- package/dist/server/http-server.js.map +1 -0
- package/dist/server/policies.d.ts +19 -0
- package/dist/server/policies.d.ts.map +1 -0
- package/dist/server/policies.js +32 -0
- package/dist/server/policies.js.map +1 -0
- package/dist/server/prompts.d.ts +19 -0
- package/dist/server/prompts.d.ts.map +1 -0
- package/dist/server/prompts.js +464 -0
- package/dist/server/prompts.js.map +1 -0
- package/dist/server/resources.d.ts +26 -0
- package/dist/server/resources.d.ts.map +1 -0
- package/dist/server/resources.js +348 -0
- package/dist/server/resources.js.map +1 -0
- package/dist/server/tools.d.ts +9 -0
- package/dist/server/tools.d.ts.map +1 -0
- package/dist/server/tools.js +977 -0
- package/dist/server/tools.js.map +1 -0
- package/dist/utils/oauth-metadata.d.ts.map +1 -0
- package/dist/utils/oauth-metadata.js.map +1 -0
- package/dist/{validation.d.ts → utils/validation.d.ts} +25 -2
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/{validation.js → utils/validation.js} +43 -3
- package/dist/utils/validation.js.map +1 -0
- package/docs/prompts-reference.md +370 -0
- package/docs/resources-reference.md +300 -0
- package/docs/tool-reference.md +244 -2
- package/package.json +4 -3
- package/dist/api-client.d.ts.map +0 -1
- package/dist/api-client.js.map +0 -1
- package/dist/oauth-metadata.d.ts.map +0 -1
- package/dist/oauth-metadata.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js.map +0 -1
- /package/dist/{oauth-metadata.d.ts → utils/oauth-metadata.d.ts} +0 -0
- /package/dist/{oauth-metadata.js → utils/oauth-metadata.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/server/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Server for Sequentum MCP
|
|
3
|
+
*
|
|
4
|
+
* Implements the Streamable HTTP transport for Claude Connectors.
|
|
5
|
+
* Handles session management, OAuth2 discovery, rate limiting, and graceful shutdown.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Start the MCP server in HTTP mode (for Claude Connectors)
|
|
9
|
+
* Uses Streamable HTTP transport as required by Claude Connectors Directory
|
|
10
|
+
* Creates a new Server instance per session for proper isolation.
|
|
11
|
+
*/
|
|
12
|
+
export declare function startHttpServer(apiBaseUrl: string, version: string, httpPort: number, httpHost: string): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=http-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.d.ts","sourceRoot":"","sources":["../../src/server/http-server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoCH;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA+Zf"}
|
|
@@ -0,0 +1,393 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Server for Sequentum MCP
|
|
3
|
+
*
|
|
4
|
+
* Implements the Streamable HTTP transport for Claude Connectors.
|
|
5
|
+
* Handles session management, OAuth2 discovery, rate limiting, and graceful shutdown.
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from "crypto";
|
|
8
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
9
|
+
import express from "express";
|
|
10
|
+
import rateLimit from "express-rate-limit";
|
|
11
|
+
import { SequentumApiClient } from "../api/api-client.js";
|
|
12
|
+
import { createMcpServer } from "./handlers.js";
|
|
13
|
+
import { buildOAuthMetadata, SUPPORTED_SCOPES } from "../utils/oauth-metadata.js";
|
|
14
|
+
import { buildAllowedOrigins, isAllowedOrigin } from "./cors.js";
|
|
15
|
+
const DEBUG = process.env.DEBUG === '1';
|
|
16
|
+
/**
|
|
17
|
+
* Extract Bearer token from the Authorization header, or return null.
|
|
18
|
+
*/
|
|
19
|
+
function extractBearerToken(req) {
|
|
20
|
+
const authHeader = req.headers.authorization;
|
|
21
|
+
if (authHeader && authHeader.startsWith("Bearer ")) {
|
|
22
|
+
return authHeader.substring(7);
|
|
23
|
+
}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Start the MCP server in HTTP mode (for Claude Connectors)
|
|
28
|
+
* Uses Streamable HTTP transport as required by Claude Connectors Directory
|
|
29
|
+
* Creates a new Server instance per session for proper isolation.
|
|
30
|
+
*/
|
|
31
|
+
export async function startHttpServer(apiBaseUrl, version, httpPort, httpHost) {
|
|
32
|
+
const app = express();
|
|
33
|
+
// Trust X-Forwarded-Proto from reverse proxies (cloudflared, ngrok, etc.)
|
|
34
|
+
// This ensures req.protocol returns 'https' when behind a TLS-terminating proxy
|
|
35
|
+
// WARNING: Only safe if direct access to this server is blocked at the network level
|
|
36
|
+
app.set('trust proxy', process.env.TRUST_PROXY !== 'false');
|
|
37
|
+
// Parse JSON bodies
|
|
38
|
+
app.use(express.json());
|
|
39
|
+
const ALLOWED_ORIGINS = buildAllowedOrigins(process.env, DEBUG);
|
|
40
|
+
// CORS middleware - required for browser-based clients like MCP Inspector.
|
|
41
|
+
// Reflects allowlisted origins; blocks /mcp requests from non-allowlisted browser origins.
|
|
42
|
+
app.use((req, res, next) => {
|
|
43
|
+
// We consult the Origin header on every request to decide what CORS headers
|
|
44
|
+
// to set, so every response varies by Origin. Setting Vary unconditionally
|
|
45
|
+
// prevents intermediate caches (CDN, proxy) from serving a response cached
|
|
46
|
+
// for one origin to a different origin. res.vary() appends and dedupes, so
|
|
47
|
+
// it is safe even if another middleware also sets Vary.
|
|
48
|
+
res.vary("Origin");
|
|
49
|
+
const origin = req.headers.origin;
|
|
50
|
+
if (origin) {
|
|
51
|
+
if (isAllowedOrigin(origin, ALLOWED_ORIGINS)) {
|
|
52
|
+
res.setHeader("Access-Control-Allow-Origin", origin);
|
|
53
|
+
}
|
|
54
|
+
else if ((req.path === "/mcp" || req.path.startsWith("/mcp/")) && req.method !== "OPTIONS") {
|
|
55
|
+
// Reject MCP requests from non-allowlisted browser origins.
|
|
56
|
+
// OPTIONS preflights are handled below (browser will block the actual request).
|
|
57
|
+
res.status(403).json({
|
|
58
|
+
jsonrpc: "2.0",
|
|
59
|
+
error: { code: -32000, message: "Forbidden: origin not allowed" },
|
|
60
|
+
id: null,
|
|
61
|
+
});
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
|
|
66
|
+
res.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, Authorization, mcp-session-id");
|
|
67
|
+
res.setHeader("Access-Control-Expose-Headers", "mcp-session-id");
|
|
68
|
+
// Handle preflight requests
|
|
69
|
+
if (req.method === "OPTIONS") {
|
|
70
|
+
res.status(204).end();
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
next();
|
|
74
|
+
});
|
|
75
|
+
// Rate limiting middleware — protects the MCP server from being flooded.
|
|
76
|
+
// Applied to /mcp endpoints only (health, well-known are not rate-limited).
|
|
77
|
+
const mcpRateLimiter = rateLimit({
|
|
78
|
+
windowMs: 60 * 1000, // 1-minute window
|
|
79
|
+
max: 100, // max 100 requests per window per IP
|
|
80
|
+
standardHeaders: true, // Return rate limit info in RateLimit-* headers
|
|
81
|
+
legacyHeaders: false,
|
|
82
|
+
message: {
|
|
83
|
+
jsonrpc: "2.0",
|
|
84
|
+
error: { code: -32029, message: "Too many requests. Please slow down." },
|
|
85
|
+
id: null,
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
app.use("/mcp", mcpRateLimiter);
|
|
89
|
+
// Store sessions by session ID - each session has its own server, transport, and API client
|
|
90
|
+
const sessions = new Map();
|
|
91
|
+
// Maximum number of concurrent sessions to prevent memory exhaustion
|
|
92
|
+
const MAX_SESSIONS = parseInt(process.env.MAX_SESSIONS || "1000", 10);
|
|
93
|
+
// Tracks sessions being created (between capacity check and sessions.set()).
|
|
94
|
+
// Prevents concurrent requests from all passing the check before any session is stored.
|
|
95
|
+
let pendingSessions = 0;
|
|
96
|
+
// Clean up stale sessions every 15 minutes
|
|
97
|
+
// Sessions are removed if they haven't had activity in over 1 hour
|
|
98
|
+
const SESSION_MAX_AGE_MS = 60 * 60 * 1000; // 1 hour
|
|
99
|
+
const SESSION_CLEANUP_INTERVAL_MS = 15 * 60 * 1000; // 15 minutes
|
|
100
|
+
const cleanupIntervalId = setInterval(() => {
|
|
101
|
+
const now = Date.now();
|
|
102
|
+
let cleanedCount = 0;
|
|
103
|
+
for (const [sessionId, session] of sessions) {
|
|
104
|
+
if (now - session.lastActivityAt > SESSION_MAX_AGE_MS) {
|
|
105
|
+
sessions.delete(sessionId);
|
|
106
|
+
cleanedCount++;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (cleanedCount > 0 || DEBUG) {
|
|
110
|
+
console.error(`[MCP] Session cleanup: removed ${cleanedCount} stale sessions, ${sessions.size} active`);
|
|
111
|
+
}
|
|
112
|
+
}, SESSION_CLEANUP_INTERVAL_MS);
|
|
113
|
+
cleanupIntervalId.unref();
|
|
114
|
+
/**
|
|
115
|
+
* Create a new HTTP session with MCP server, transport, and API client
|
|
116
|
+
*/
|
|
117
|
+
async function createSession(token) {
|
|
118
|
+
const sessionApiClient = new SequentumApiClient(apiBaseUrl, null);
|
|
119
|
+
if (token) {
|
|
120
|
+
sessionApiClient.setAccessToken(token);
|
|
121
|
+
}
|
|
122
|
+
const server = createMcpServer(sessionApiClient, version);
|
|
123
|
+
const transport = new StreamableHTTPServerTransport({
|
|
124
|
+
sessionIdGenerator: () => randomUUID(),
|
|
125
|
+
});
|
|
126
|
+
await server.connect(transport);
|
|
127
|
+
const now = Date.now();
|
|
128
|
+
return {
|
|
129
|
+
server,
|
|
130
|
+
transport,
|
|
131
|
+
apiClient: sessionApiClient,
|
|
132
|
+
createdAt: now,
|
|
133
|
+
lastActivityAt: now
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
// Health check endpoint
|
|
137
|
+
app.get("/health", (_req, res) => {
|
|
138
|
+
res.json({ status: "ok", version, transport: "streamable-http" });
|
|
139
|
+
});
|
|
140
|
+
// OAuth2 Authorization Server Metadata (RFC 8414)
|
|
141
|
+
// This enables MCP clients to discover OAuth2 endpoints automatically
|
|
142
|
+
// OAuth URLs are derived from the API base URL (same server hosts both API and OAuth)
|
|
143
|
+
// RFC 8414 standard path - Authorization Server Metadata
|
|
144
|
+
app.get("/.well-known/oauth-authorization-server", (_req, res) => {
|
|
145
|
+
const metadata = buildOAuthMetadata(apiBaseUrl);
|
|
146
|
+
res.json(metadata);
|
|
147
|
+
});
|
|
148
|
+
// RFC 9728 - Protected Resource Metadata (required by MCP spec 2025-06-18)
|
|
149
|
+
// This tells MCP clients which authorization server to use for this resource.
|
|
150
|
+
// Per MCP spec, the resource MUST be the MCP server's own canonical URL,
|
|
151
|
+
// as MCP clients compute the expected resource from the URL they connect to.
|
|
152
|
+
app.get("/.well-known/oauth-protected-resource", async (req, res) => {
|
|
153
|
+
// The resource is this MCP server's own URL (origin)
|
|
154
|
+
// MCP clients (e.g., Cursor) validate this matches the URL they connected to
|
|
155
|
+
const resourceUrl = new URL(`${req.protocol}://${req.get("host")}`).origin;
|
|
156
|
+
const protectedResourceMetadata = {
|
|
157
|
+
// The canonical URI of this MCP server (the protected resource)
|
|
158
|
+
resource: resourceUrl,
|
|
159
|
+
// Authorization servers that can issue tokens for this resource
|
|
160
|
+
authorization_servers: [apiBaseUrl],
|
|
161
|
+
// Scopes supported by this resource
|
|
162
|
+
scopes_supported: [...SUPPORTED_SCOPES],
|
|
163
|
+
// Bearer token is required
|
|
164
|
+
bearer_methods_supported: ["header"],
|
|
165
|
+
};
|
|
166
|
+
res.json(protectedResourceMetadata);
|
|
167
|
+
});
|
|
168
|
+
// Log incoming requests for debugging (only when DEBUG is enabled)
|
|
169
|
+
if (DEBUG) {
|
|
170
|
+
app.use("/mcp", (req, _res, next) => {
|
|
171
|
+
console.error(`[MCP] ${req.method} ${req.url}`);
|
|
172
|
+
// Redact sensitive headers before logging
|
|
173
|
+
const safeHeaders = { ...req.headers };
|
|
174
|
+
const sensitiveHeaders = ['authorization', 'cookie', 'x-api-key'];
|
|
175
|
+
for (const header of sensitiveHeaders) {
|
|
176
|
+
if (safeHeaders[header]) {
|
|
177
|
+
safeHeaders[header] = '[REDACTED]';
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
console.error(`[MCP] Headers: ${JSON.stringify(safeHeaders)}`);
|
|
181
|
+
if (req.body && Object.keys(req.body).length > 0) {
|
|
182
|
+
console.error(`[MCP] Body: ${JSON.stringify(req.body)}`);
|
|
183
|
+
}
|
|
184
|
+
next();
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
// Handle POST requests for client-to-server messages
|
|
188
|
+
app.post("/mcp", async (req, res) => {
|
|
189
|
+
try {
|
|
190
|
+
// Get session ID from header
|
|
191
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
192
|
+
let session;
|
|
193
|
+
if (sessionId) {
|
|
194
|
+
session = sessions.get(sessionId);
|
|
195
|
+
}
|
|
196
|
+
// If no existing session, create a new one
|
|
197
|
+
if (!session) {
|
|
198
|
+
const token = extractBearerToken(req);
|
|
199
|
+
if (DEBUG && token) {
|
|
200
|
+
console.error("[DEBUG] Bearer token received for new session");
|
|
201
|
+
}
|
|
202
|
+
// Require authentication for new sessions (unless REQUIRE_AUTH=false for testing)
|
|
203
|
+
const requireAuth = process.env.REQUIRE_AUTH !== "false";
|
|
204
|
+
if (requireAuth && !token) {
|
|
205
|
+
// Return 401 with WWW-Authenticate header per RFC 9728 Section 5.1
|
|
206
|
+
// The resource is this MCP server's own URL (the protected resource)
|
|
207
|
+
const mcpServerUrl = new URL(`${req.protocol}://${req.get("host")}`).origin;
|
|
208
|
+
const wwwAuth = `Bearer resource="${mcpServerUrl}"`;
|
|
209
|
+
const prmUrl = `${mcpServerUrl}/.well-known/oauth-protected-resource`;
|
|
210
|
+
res.setHeader("WWW-Authenticate", wwwAuth);
|
|
211
|
+
const responseBody = {
|
|
212
|
+
jsonrpc: "2.0",
|
|
213
|
+
error: {
|
|
214
|
+
code: -32001,
|
|
215
|
+
message: "Authentication required",
|
|
216
|
+
data: {
|
|
217
|
+
// Point to Protected Resource Metadata on this MCP server
|
|
218
|
+
protectedResourceMetadata: prmUrl,
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
id: null,
|
|
222
|
+
};
|
|
223
|
+
res.status(401).json(responseBody);
|
|
224
|
+
console.error("[MCP] 401 - Authentication required, no Bearer token provided");
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
// Reject if at session capacity to prevent memory exhaustion.
|
|
228
|
+
// pendingSessions counts sessions being created but not yet stored, so
|
|
229
|
+
// concurrent requests all see the updated count before any await completes.
|
|
230
|
+
if (sessions.size + pendingSessions >= MAX_SESSIONS) {
|
|
231
|
+
res.status(503).json({
|
|
232
|
+
jsonrpc: "2.0",
|
|
233
|
+
error: { code: -32000, message: "Server at capacity. Please try again later." },
|
|
234
|
+
id: null,
|
|
235
|
+
});
|
|
236
|
+
console.error(`[MCP] 503 - Session limit reached (${MAX_SESSIONS}), rejecting new session`);
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
// Reserve a slot before the first await so concurrent requests see it.
|
|
240
|
+
pendingSessions++;
|
|
241
|
+
try {
|
|
242
|
+
session = await createSession(token);
|
|
243
|
+
}
|
|
244
|
+
finally {
|
|
245
|
+
pendingSessions--;
|
|
246
|
+
}
|
|
247
|
+
// We'll store the session after handleRequest sets the session ID
|
|
248
|
+
}
|
|
249
|
+
// Update last activity timestamp for session keep-alive
|
|
250
|
+
session.lastActivityAt = Date.now();
|
|
251
|
+
// Update token if provided (in case of token refresh)
|
|
252
|
+
const refreshedToken = extractBearerToken(req);
|
|
253
|
+
if (refreshedToken) {
|
|
254
|
+
session.apiClient.setAccessToken(refreshedToken);
|
|
255
|
+
}
|
|
256
|
+
// Handle the request
|
|
257
|
+
await session.transport.handleRequest(req, res, req.body);
|
|
258
|
+
// Store session if it's new (get session ID from response header)
|
|
259
|
+
if (!sessionId) {
|
|
260
|
+
const newSessionId = res.getHeader("mcp-session-id");
|
|
261
|
+
if (newSessionId && !sessions.has(newSessionId)) {
|
|
262
|
+
sessions.set(newSessionId, session);
|
|
263
|
+
}
|
|
264
|
+
else if (!newSessionId) {
|
|
265
|
+
// Cleanup orphaned session to prevent memory leaks
|
|
266
|
+
// This can happen if handleRequest fails to set a session ID
|
|
267
|
+
console.error(`[MCP] Warning: No session ID returned, cleaning up orphaned session`);
|
|
268
|
+
try {
|
|
269
|
+
await session.server.close();
|
|
270
|
+
}
|
|
271
|
+
catch (closeError) {
|
|
272
|
+
console.error(`[MCP] Error closing orphaned session:`, closeError);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
console.error("Error handling MCP POST request:", error);
|
|
279
|
+
if (!res.headersSent) {
|
|
280
|
+
// Sanitize error messages in production to avoid exposing internal details
|
|
281
|
+
const errorMessage = DEBUG
|
|
282
|
+
? (error instanceof Error ? error.message : "Internal server error")
|
|
283
|
+
: "Internal server error";
|
|
284
|
+
res.status(500).json({
|
|
285
|
+
jsonrpc: "2.0",
|
|
286
|
+
error: {
|
|
287
|
+
code: -32603,
|
|
288
|
+
message: errorMessage
|
|
289
|
+
},
|
|
290
|
+
id: null
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
// Handle GET requests for SSE streams
|
|
296
|
+
app.get("/mcp", async (req, res) => {
|
|
297
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
298
|
+
if (!sessionId) {
|
|
299
|
+
res.status(400).json({
|
|
300
|
+
jsonrpc: "2.0",
|
|
301
|
+
error: { code: -32000, message: "Missing session ID for SSE stream" },
|
|
302
|
+
id: null
|
|
303
|
+
});
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
const session = sessions.get(sessionId);
|
|
307
|
+
if (!session) {
|
|
308
|
+
res.status(400).json({
|
|
309
|
+
jsonrpc: "2.0",
|
|
310
|
+
error: { code: -32000, message: "Invalid or expired session" },
|
|
311
|
+
id: null
|
|
312
|
+
});
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
// Update last activity timestamp for session keep-alive
|
|
316
|
+
session.lastActivityAt = Date.now();
|
|
317
|
+
try {
|
|
318
|
+
await session.transport.handleRequest(req, res);
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
console.error("Error handling MCP GET request:", error);
|
|
322
|
+
if (!res.headersSent) {
|
|
323
|
+
res.status(500).json({
|
|
324
|
+
jsonrpc: "2.0",
|
|
325
|
+
error: { code: -32603, message: "SSE stream error" },
|
|
326
|
+
id: null
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
});
|
|
331
|
+
// Handle DELETE requests for session termination
|
|
332
|
+
app.delete("/mcp", async (req, res) => {
|
|
333
|
+
const sessionId = req.headers["mcp-session-id"];
|
|
334
|
+
if (sessionId && sessions.has(sessionId)) {
|
|
335
|
+
const session = sessions.get(sessionId);
|
|
336
|
+
sessions.delete(sessionId);
|
|
337
|
+
try {
|
|
338
|
+
await session?.server.close();
|
|
339
|
+
}
|
|
340
|
+
catch (e) {
|
|
341
|
+
if (DEBUG) {
|
|
342
|
+
console.error(`[DEBUG] Error closing session on DELETE:`, e);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
if (DEBUG) {
|
|
346
|
+
console.error(`[DEBUG] Session terminated: ${sessionId}`);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
res.status(200).json({ message: "Session terminated" });
|
|
350
|
+
});
|
|
351
|
+
// Start the HTTP server
|
|
352
|
+
const httpServer = app.listen(httpPort, httpHost, () => {
|
|
353
|
+
console.error(`Sequentum MCP Server running on HTTP at http://${httpHost}:${httpPort}/mcp ` +
|
|
354
|
+
`(transport=streamable-http, health=http://${httpHost}:${httpPort}/health, maxSessions=${MAX_SESSIONS})`);
|
|
355
|
+
if (DEBUG) {
|
|
356
|
+
console.error(`Connected to: ${apiBaseUrl}`);
|
|
357
|
+
}
|
|
358
|
+
});
|
|
359
|
+
// Graceful shutdown handler — closes all sessions, stops accepting
|
|
360
|
+
// connections, and clears the cleanup interval for a clean process exit.
|
|
361
|
+
// Important for Docker/K8s deployments where pods receive SIGTERM.
|
|
362
|
+
let isShuttingDown = false;
|
|
363
|
+
async function gracefulShutdown(signal) {
|
|
364
|
+
if (isShuttingDown)
|
|
365
|
+
return; // Prevent double-shutdown
|
|
366
|
+
isShuttingDown = true;
|
|
367
|
+
console.error(`\n[MCP] ${signal} received, shutting down gracefully...`);
|
|
368
|
+
// Force exit after 10 seconds if cleanup hangs
|
|
369
|
+
const forceExitTimer = setTimeout(() => {
|
|
370
|
+
console.error("[MCP] Graceful shutdown timed out after 10s, forcing exit");
|
|
371
|
+
process.exit(1);
|
|
372
|
+
}, 10_000);
|
|
373
|
+
forceExitTimer.unref();
|
|
374
|
+
// Stop accepting new connections
|
|
375
|
+
httpServer.close(() => {
|
|
376
|
+
console.error("[MCP] HTTP server closed, no longer accepting connections");
|
|
377
|
+
});
|
|
378
|
+
// Clear the session cleanup interval so it doesn't keep the process alive
|
|
379
|
+
clearInterval(cleanupIntervalId);
|
|
380
|
+
// Close all active MCP sessions
|
|
381
|
+
const closePromises = [];
|
|
382
|
+
for (const [sessionId, session] of sessions) {
|
|
383
|
+
closePromises.push(session.server.close().catch((err) => console.error(`[MCP] Error closing session ${sessionId}:`, err)));
|
|
384
|
+
}
|
|
385
|
+
await Promise.allSettled(closePromises);
|
|
386
|
+
sessions.clear();
|
|
387
|
+
console.error(`[MCP] All ${closePromises.length} sessions closed. Shutdown complete.`);
|
|
388
|
+
process.exit(0);
|
|
389
|
+
}
|
|
390
|
+
process.on("SIGTERM", () => gracefulShutdown("SIGTERM"));
|
|
391
|
+
process.on("SIGINT", () => gracefulShutdown("SIGINT"));
|
|
392
|
+
}
|
|
393
|
+
//# sourceMappingURL=http-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../../src/server/http-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared LLM Policy Strings
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for guidance text that is injected into multiple
|
|
5
|
+
* surfaces (tool descriptions, prompt templates, server instructions).
|
|
6
|
+
* Centralizing here prevents the surfaces from silently drifting apart.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Governs how the model should populate the `prompt` argument of
|
|
10
|
+
* `start_agent_build`. Referenced by the tool description in tools.ts
|
|
11
|
+
* and inlined into the build-agent-from-prompt template in prompts.ts.
|
|
12
|
+
*/
|
|
13
|
+
export declare const PROMPT_HANDLING_POLICY: string;
|
|
14
|
+
/**
|
|
15
|
+
* Server-level instruction injected via the MCP `instructions` field in handlers.ts.
|
|
16
|
+
* Governs when the model must ask for clarification before invoking any build/run tool.
|
|
17
|
+
*/
|
|
18
|
+
export declare const SUFFICIENCY_POLICY: string;
|
|
19
|
+
//# sourceMappingURL=policies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policies.d.ts","sourceRoot":"","sources":["../../src/server/policies.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAMsF,CAAC;AAE1H;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QASqH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared LLM Policy Strings
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for guidance text that is injected into multiple
|
|
5
|
+
* surfaces (tool descriptions, prompt templates, server instructions).
|
|
6
|
+
* Centralizing here prevents the surfaces from silently drifting apart.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Governs how the model should populate the `prompt` argument of
|
|
10
|
+
* `start_agent_build`. Referenced by the tool description in tools.ts
|
|
11
|
+
* and inlined into the build-agent-from-prompt template in prompts.ts.
|
|
12
|
+
*/
|
|
13
|
+
export const PROMPT_HANDLING_POLICY = "PROMPT-HANDLING POLICY: " +
|
|
14
|
+
"(1) Pass the user's wording (and any clarification answers from earlier in the conversation) through verbatim. " +
|
|
15
|
+
"(2) Trivial normalizations (adding 'https://', fixing an obvious URL typo) are fine. " +
|
|
16
|
+
"(3) Do NOT invent details the user did not state — extra fields, output formats, price-handling rules, " +
|
|
17
|
+
"lazy-load instructions, pagination strategies, etc. The upstream Sequentum Agent Builder pipeline will infer these on its own from the page; do not pre-empt it. " +
|
|
18
|
+
"If a detail feels essential to include, that is a sufficiency gap — ask one clarifying question instead of inventing.";
|
|
19
|
+
/**
|
|
20
|
+
* Server-level instruction injected via the MCP `instructions` field in handlers.ts.
|
|
21
|
+
* Governs when the model must ask for clarification before invoking any build/run tool.
|
|
22
|
+
*/
|
|
23
|
+
export const SUFFICIENCY_POLICY = "SUFFICIENCY POLICY — applies to all build and run requests:\n" +
|
|
24
|
+
"Before invoking any tool that builds or runs an agent in response to a scrape or automation request, " +
|
|
25
|
+
"you MUST ensure the following are unambiguous: (1) the target URL or domain, (2) the data the user wants extracted, " +
|
|
26
|
+
"(3) any qualifiers that affect scope (section, filters, language, etc.).\n\n" +
|
|
27
|
+
"You MAY resolve missing details from explicit conversational context when the context makes the answer clearly unambiguous.\n\n" +
|
|
28
|
+
"You MUST NOT silently extrapolate by analogy. " +
|
|
29
|
+
"This includes copying details from one site onto a different site, or reusing a prior request's data schema for a conceptually different request — even when prior inferences were accepted.\n\n" +
|
|
30
|
+
"When the request is genuinely underspecified, you MUST ask one consolidated clarifying question covering all gaps before any tool call — ask everything you need in one round-trip, not sequentially. " +
|
|
31
|
+
"When you would need to extrapolate by analogy, you MUST state your inference in one short line and ask the user to confirm before any tool call.";
|
|
32
|
+
//# sourceMappingURL=policies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policies.js","sourceRoot":"","sources":["../../src/server/policies.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GACjC,0BAA0B;IAC1B,iHAAiH;IACjH,uFAAuF;IACvF,yGAAyG;IACzG,mKAAmK;IACnK,uHAAuH,CAAC;AAE1H;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAC7B,+DAA+D;IAC/D,uGAAuG;IACvG,sHAAsH;IACtH,8EAA8E;IAC9E,iIAAiI;IACjI,gDAAgD;IAChD,kMAAkM;IAClM,wMAAwM;IACxM,kJAAkJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Prompt Definitions
|
|
3
|
+
*
|
|
4
|
+
* Reusable instruction templates that guide the AI through common
|
|
5
|
+
* multi-step workflows. Prompts are explicitly invoked by the user
|
|
6
|
+
* or client and reference the server's existing tools.
|
|
7
|
+
*/
|
|
8
|
+
import { Prompt, PromptMessage } from "@modelcontextprotocol/sdk/types.js";
|
|
9
|
+
export declare const prompts: Prompt[];
|
|
10
|
+
/**
|
|
11
|
+
* Build the messages array for a given prompt invocation.
|
|
12
|
+
*
|
|
13
|
+
* @param name - The prompt name
|
|
14
|
+
* @param args - The arguments provided by the caller
|
|
15
|
+
* @returns Array of PromptMessage objects
|
|
16
|
+
* @throws Error if the prompt name is unknown
|
|
17
|
+
*/
|
|
18
|
+
export declare function getPromptMessages(name: string, args: Record<string, string> | undefined): PromptMessage[];
|
|
19
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/server/prompts.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAO3E,eAAO,MAAM,OAAO,EAAE,MAAM,EAyK3B,CAAC;AAoCF;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GACvC,aAAa,EAAE,CAyRjB"}
|