@jait/gateway 0.1.98 → 0.1.100
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/dist/routes/mcp-server.d.ts +25 -0
- package/dist/routes/mcp-server.d.ts.map +1 -1
- package/dist/routes/mcp-server.js +30 -6
- package/dist/routes/mcp-server.js.map +1 -1
- package/package.json +1 -1
- package/web-dist/assets/{index-CM8WcHQT.js → index-C8vvkjw6.js} +203 -203
- package/web-dist/dist/assets/{index-CM8WcHQT.js → index-C8vvkjw6.js} +203 -203
- package/web-dist/dist/index.html +1 -1
- package/web-dist/index.html +1 -1
|
@@ -14,10 +14,35 @@
|
|
|
14
14
|
import type { FastifyInstance } from "fastify";
|
|
15
15
|
import type { AppConfig } from "../config.js";
|
|
16
16
|
import type { ToolRegistry } from "../tools/registry.js";
|
|
17
|
+
import type { ToolDefinition } from "../tools/contracts.js";
|
|
17
18
|
interface McpDeps {
|
|
18
19
|
toolRegistry: ToolRegistry;
|
|
19
20
|
config: AppConfig;
|
|
20
21
|
}
|
|
22
|
+
interface McpRequest {
|
|
23
|
+
jsonrpc: "2.0";
|
|
24
|
+
id: number | string;
|
|
25
|
+
method: string;
|
|
26
|
+
params?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
interface McpResponse {
|
|
29
|
+
jsonrpc: "2.0";
|
|
30
|
+
id: number | string;
|
|
31
|
+
result?: unknown;
|
|
32
|
+
error?: {
|
|
33
|
+
code: number;
|
|
34
|
+
message: string;
|
|
35
|
+
data?: unknown;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
interface McpBaseUrlRequestLike {
|
|
39
|
+
headers: Record<string, unknown>;
|
|
40
|
+
protocol?: string;
|
|
41
|
+
hostname?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function resolveMcpBaseUrl(request: McpBaseUrlRequestLike, config: Pick<AppConfig, "host" | "port">): string;
|
|
44
|
+
export declare function listToolsForMcp(toolRegistry: ToolRegistry): ToolDefinition[];
|
|
21
45
|
export declare function registerMcpRoutes(app: FastifyInstance, deps: McpDeps): void;
|
|
46
|
+
export declare function handleMcpRequest(request: McpRequest, toolRegistry: ToolRegistry): Promise<McpResponse>;
|
|
22
47
|
export {};
|
|
23
48
|
//# sourceMappingURL=mcp-server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/routes/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../../src/routes/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGzE,UAAU,OAAO;IACf,YAAY,EAAE,YAAY,CAAC;IAC3B,MAAM,EAAE,SAAS,CAAC;CACnB;AAID,UAAU,UAAU;IAClB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,UAAU,WAAW;IACnB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D;AAYD,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,qBAAqB,EAC9B,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,GACvC,MAAM,CAoBR;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,cAAc,EAAE,CAM5E;AAID,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAgF3E;AAID,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,WAAW,CAAC,CA8FtB"}
|
|
@@ -13,9 +13,35 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { uuidv7 } from "../db/uuidv7.js";
|
|
15
15
|
const clients = new Map();
|
|
16
|
+
export function resolveMcpBaseUrl(request, config) {
|
|
17
|
+
const forwardedProto = request.headers["x-forwarded-proto"];
|
|
18
|
+
const proto = typeof forwardedProto === "string"
|
|
19
|
+
? forwardedProto.split(",")[0]?.trim()
|
|
20
|
+
: request.protocol;
|
|
21
|
+
const forwardedHost = request.headers["x-forwarded-host"];
|
|
22
|
+
const hostHeader = typeof forwardedHost === "string"
|
|
23
|
+
? forwardedHost.split(",")[0]?.trim()
|
|
24
|
+
: typeof request.headers.host === "string"
|
|
25
|
+
? request.headers.host
|
|
26
|
+
: undefined;
|
|
27
|
+
if (proto && hostHeader) {
|
|
28
|
+
return `${proto}://${hostHeader}`;
|
|
29
|
+
}
|
|
30
|
+
const host = config.host === "0.0.0.0"
|
|
31
|
+
? "127.0.0.1"
|
|
32
|
+
: request.hostname?.trim() || config.host;
|
|
33
|
+
return `${proto ?? "http"}://${host}:${config.port}`;
|
|
34
|
+
}
|
|
35
|
+
export function listToolsForMcp(toolRegistry) {
|
|
36
|
+
return toolRegistry.list().filter((tool) => {
|
|
37
|
+
const source = tool.source ?? "builtin";
|
|
38
|
+
const tier = tool.tier ?? "standard";
|
|
39
|
+
return source === "builtin" && tier !== "core";
|
|
40
|
+
});
|
|
41
|
+
}
|
|
16
42
|
// ── Route registration ───────────────────────────────────────────────
|
|
17
43
|
export function registerMcpRoutes(app, deps) {
|
|
18
|
-
const { toolRegistry } = deps;
|
|
44
|
+
const { toolRegistry, config } = deps;
|
|
19
45
|
/**
|
|
20
46
|
* GET /mcp/sse — SSE connection endpoint.
|
|
21
47
|
* Client connects here and receives:
|
|
@@ -41,7 +67,7 @@ export function registerMcpRoutes(app, deps) {
|
|
|
41
67
|
const client = { id: clientId, write, alive: true };
|
|
42
68
|
clients.set(clientId, client);
|
|
43
69
|
// Send the endpoint URL for the client to POST requests to
|
|
44
|
-
const baseUrl =
|
|
70
|
+
const baseUrl = resolveMcpBaseUrl(request, config);
|
|
45
71
|
write(`event: endpoint\ndata: ${baseUrl}/mcp/messages?clientId=${clientId}\n\n`);
|
|
46
72
|
// Keepalive
|
|
47
73
|
const interval = setInterval(() => {
|
|
@@ -82,7 +108,7 @@ export function registerMcpRoutes(app, deps) {
|
|
|
82
108
|
app.log.info("MCP SSE server routes registered at /mcp/sse and /mcp/messages");
|
|
83
109
|
}
|
|
84
110
|
// ── Request handler ──────────────────────────────────────────────────
|
|
85
|
-
async function handleMcpRequest(request, toolRegistry) {
|
|
111
|
+
export async function handleMcpRequest(request, toolRegistry) {
|
|
86
112
|
switch (request.method) {
|
|
87
113
|
case "initialize":
|
|
88
114
|
return {
|
|
@@ -104,9 +130,7 @@ async function handleMcpRequest(request, toolRegistry) {
|
|
|
104
130
|
jsonrpc: "2.0",
|
|
105
131
|
id: request.id,
|
|
106
132
|
result: {
|
|
107
|
-
tools: toolRegistry.
|
|
108
|
-
.filter((t) => (t.source ?? "builtin") === "builtin")
|
|
109
|
-
.map((tool) => ({
|
|
133
|
+
tools: listToolsForMcp(toolRegistry).map((tool) => ({
|
|
110
134
|
name: tool.name,
|
|
111
135
|
description: tool.description,
|
|
112
136
|
inputSchema: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/routes/mcp-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA+BzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../../src/routes/mcp-server.ts"],"names":[],"mappings":"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"}
|