@procedures/mcp-server 0.0.0-stage → 0.1.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 +5 -0
- package/LICENSE +21 -0
- package/README.md +366 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/module.d.ts +11 -0
- package/dist/module.d.ts.map +1 -0
- package/dist/module.js +16 -0
- package/dist/module.js.map +1 -0
- package/dist/procedures/mcp/index.d.ts +6 -0
- package/dist/procedures/mcp/index.d.ts.map +1 -0
- package/dist/procedures/mcp/index.js +6 -0
- package/dist/procedures/mcp/index.js.map +1 -0
- package/dist/procedures/mcp/list-tools.d.ts +8 -0
- package/dist/procedures/mcp/list-tools.d.ts.map +1 -0
- package/dist/procedures/mcp/list-tools.js +60 -0
- package/dist/procedures/mcp/list-tools.js.map +1 -0
- package/dist/procedures/mcp/serve.d.ts +38 -0
- package/dist/procedures/mcp/serve.d.ts.map +1 -0
- package/dist/procedures/mcp/serve.js +123 -0
- package/dist/procedures/mcp/serve.js.map +1 -0
- package/dist/register.d.ts +11 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +21 -0
- package/dist/register.js.map +1 -0
- package/dist/surface.d.ts +36 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +74 -0
- package/dist/surface.js.map +1 -0
- package/dist/transport/index.d.ts +7 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +7 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/mcp-transport.d.ts +94 -0
- package/dist/transport/mcp-transport.d.ts.map +1 -0
- package/dist/transport/mcp-transport.js +368 -0
- package/dist/transport/mcp-transport.js.map +1 -0
- package/dist/transport/sse.d.ts +20 -0
- package/dist/transport/sse.d.ts.map +1 -0
- package/dist/transport/sse.js +23 -0
- package/dist/transport/sse.js.map +1 -0
- package/dist/transport/stdio.d.ts +16 -0
- package/dist/transport/stdio.d.ts.map +1 -0
- package/dist/transport/stdio.js +18 -0
- package/dist/transport/stdio.js.map +1 -0
- package/dist/types.d.ts +55 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +81 -3
- package/src/index.ts +48 -0
- package/src/module.ts +18 -0
- package/src/procedures/mcp/index.ts +6 -0
- package/src/procedures/mcp/list-tools.ts +84 -0
- package/src/procedures/mcp/serve.ts +170 -0
- package/src/register.ts +24 -0
- package/src/surface.ts +85 -0
- package/src/transport/index.ts +7 -0
- package/src/transport/mcp-transport.ts +418 -0
- package/src/transport/sse.ts +29 -0
- package/src/transport/stdio.ts +19 -0
- package/src/types.ts +64 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Server Transport
|
|
3
|
+
*
|
|
4
|
+
* Implements ServerTransport interface for MCP protocol.
|
|
5
|
+
* Maps PROCEDURE_REGISTRY to MCP tools.
|
|
6
|
+
*/
|
|
7
|
+
import { Server as McpServer } from "@modelcontextprotocol/sdk/server/index.js";
|
|
8
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
9
|
+
import { PROCEDURE_REGISTRY, pathToMethod } from "@procedures/client";
|
|
10
|
+
import { proceduresToMcpTools, toToolDefinition, decodePath, } from "@procedures/mcp";
|
|
11
|
+
import { createStdioTransport } from "./stdio.js";
|
|
12
|
+
import { createSseTransport } from "./sse.js";
|
|
13
|
+
/**
|
|
14
|
+
* Generate a unique request ID.
|
|
15
|
+
*/
|
|
16
|
+
/** The most text blocks of a stream result: the last items of a long stream. */
|
|
17
|
+
const MAX_STREAM_BLOCKS = 100;
|
|
18
|
+
function toText(value) {
|
|
19
|
+
return typeof value === "string" ? value : (JSON.stringify(value, null, 2) ?? String(value));
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The structured content of a result: the result as JSON, when it is an object. JSON drops
|
|
23
|
+
* what JSON cannot show (a function, `undefined`) and turns a class instance into its JSON form
|
|
24
|
+
* (an ObjectId into its hex text), as the text block does.
|
|
25
|
+
*/
|
|
26
|
+
function structuredContentOf(value) {
|
|
27
|
+
if (value === null || typeof value !== "object" || Array.isArray(value))
|
|
28
|
+
return undefined;
|
|
29
|
+
try {
|
|
30
|
+
const json = JSON.parse(JSON.stringify(value));
|
|
31
|
+
return json !== null && typeof json === "object" && !Array.isArray(json) ? json : undefined;
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function generateRequestId() {
|
|
38
|
+
return `mcp-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* MCP Server Transport
|
|
42
|
+
*
|
|
43
|
+
* Implements the ServerTransport interface for MCP (Model Context Protocol).
|
|
44
|
+
* Maps procedures from PROCEDURE_REGISTRY to MCP tools, handling:
|
|
45
|
+
* - ListToolsRequest: Returns all registered procedures as tools
|
|
46
|
+
* - CallToolRequest: Executes the corresponding procedure
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* ```typescript
|
|
50
|
+
* const server = new ProcedureServer({ autoRegister: true });
|
|
51
|
+
* const mcpTransport = new McpServerTransport(server, {
|
|
52
|
+
* transport: "stdio",
|
|
53
|
+
* serverInfo: { name: "my-server", version: "1.0.0" }
|
|
54
|
+
* });
|
|
55
|
+
* server.addTransport(mcpTransport);
|
|
56
|
+
* await server.start();
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export class McpServerTransport {
|
|
60
|
+
name = "mcp";
|
|
61
|
+
mcpServer;
|
|
62
|
+
server;
|
|
63
|
+
registry;
|
|
64
|
+
options;
|
|
65
|
+
running = false;
|
|
66
|
+
tools = new Map();
|
|
67
|
+
registerListener;
|
|
68
|
+
unregisterListener;
|
|
69
|
+
/** A pending list_changed notification: a burst of registrations sends one */
|
|
70
|
+
listChangedTimer;
|
|
71
|
+
constructor(server, options = {}) {
|
|
72
|
+
this.server = server;
|
|
73
|
+
this.options = {
|
|
74
|
+
transport: options.transport ?? "stdio",
|
|
75
|
+
serverInfo: options.serverInfo ?? {
|
|
76
|
+
name: "procedure-server",
|
|
77
|
+
version: "1.0.0",
|
|
78
|
+
},
|
|
79
|
+
...options,
|
|
80
|
+
};
|
|
81
|
+
// The registry of the server, when it has one (a ProcedureServer with an explicit registry):
|
|
82
|
+
// before, the tools came from the global registry, also when the server served another one
|
|
83
|
+
this.registry =
|
|
84
|
+
options.registry ??
|
|
85
|
+
server.getRegistry?.() ??
|
|
86
|
+
PROCEDURE_REGISTRY;
|
|
87
|
+
// Create MCP server with capabilities. The tool list follows the registry: when it changes,
|
|
88
|
+
// the server sends notifications/tools/list_changed (deep dive roadmap 0.4)
|
|
89
|
+
this.mcpServer = new McpServer(this.options.serverInfo, {
|
|
90
|
+
capabilities: {
|
|
91
|
+
tools: { listChanged: true },
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
// Setup request handlers
|
|
95
|
+
this.setupHandlers();
|
|
96
|
+
// The registry listeners are attached in start() and removed in stop(): attaching them here
|
|
97
|
+
// leaked them for a transport that never started or failed to start (BUGS-2026-07 L28)
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Setup MCP request handlers.
|
|
101
|
+
*/
|
|
102
|
+
setupHandlers() {
|
|
103
|
+
// ListToolsRequestSchema -> List all procedures as tools
|
|
104
|
+
this.mcpServer.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
105
|
+
this.log("ListToolsRequest received");
|
|
106
|
+
const tools = Array.from(this.tools.values()).map(toToolDefinition);
|
|
107
|
+
this.log(`Returning ${tools.length} tools`);
|
|
108
|
+
return { tools };
|
|
109
|
+
});
|
|
110
|
+
// CallToolRequestSchema -> Execute procedure
|
|
111
|
+
this.mcpServer.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
112
|
+
const { name, arguments: args } = request.params;
|
|
113
|
+
this.log(`CallToolRequest: ${name}`);
|
|
114
|
+
// Find tool
|
|
115
|
+
const tool = this.tools.get(name);
|
|
116
|
+
if (!tool) {
|
|
117
|
+
this.log(`Tool not found: ${name}`);
|
|
118
|
+
return {
|
|
119
|
+
content: [{ type: "text", text: `Tool not found: ${name}` }],
|
|
120
|
+
isError: true,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
// Decode path from tool name. The method is the core mapping of every host (deep dive
|
|
124
|
+
// architecture review 3.3)
|
|
125
|
+
const path = decodePath(name);
|
|
126
|
+
// Build ServerRequest
|
|
127
|
+
const serverRequest = {
|
|
128
|
+
id: generateRequestId(),
|
|
129
|
+
method: pathToMethod(path),
|
|
130
|
+
payload: args ?? {},
|
|
131
|
+
metadata: {
|
|
132
|
+
transport: "mcp",
|
|
133
|
+
mcpRequestId: generateRequestId(),
|
|
134
|
+
},
|
|
135
|
+
// A cancelled tool call (notifications/cancelled) aborts the procedure
|
|
136
|
+
signal: extra.signal,
|
|
137
|
+
};
|
|
138
|
+
try {
|
|
139
|
+
// Process through universal server
|
|
140
|
+
const response = await this.server.handle(serverRequest);
|
|
141
|
+
this.log(`Tool ${name} completed: ${response.status.type}`);
|
|
142
|
+
// Convert to MCP result
|
|
143
|
+
if (response.status.type === "success" && response.stream) {
|
|
144
|
+
return await this.streamResult(response.stream, extra);
|
|
145
|
+
}
|
|
146
|
+
if (response.status.type === "success") {
|
|
147
|
+
const structured = tool.outputSchema ? structuredContentOf(response.payload) : undefined;
|
|
148
|
+
return {
|
|
149
|
+
content: [{ type: "text", text: toText(response.payload) }],
|
|
150
|
+
// MCP structured output: the result as an object, for a tool with an output schema.
|
|
151
|
+
// The text block stays, for clients that do not read structured content.
|
|
152
|
+
...(structured ? { structuredContent: structured } : {}),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
return {
|
|
157
|
+
content: [
|
|
158
|
+
{
|
|
159
|
+
type: "text",
|
|
160
|
+
text: response.status.message ?? "Unknown error",
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
isError: true,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
169
|
+
this.log(`Tool ${name} error: ${message}`);
|
|
170
|
+
return {
|
|
171
|
+
content: [{ type: "text", text: message }],
|
|
172
|
+
isError: true,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Setup registry event listeners for dynamic tool updates.
|
|
179
|
+
*/
|
|
180
|
+
/**
|
|
181
|
+
* The result of a streaming procedure. An MCP tool result is one message, so the transport
|
|
182
|
+
* reads the whole stream. Each item becomes a text block (the last MAX_STREAM_BLOCKS items),
|
|
183
|
+
* and a progress notification when the caller sent a progress token, so a client can show
|
|
184
|
+
* the items while the stream runs.
|
|
185
|
+
*/
|
|
186
|
+
async streamResult(stream, extra) {
|
|
187
|
+
const progressToken = extra._meta?.progressToken;
|
|
188
|
+
const blocks = [];
|
|
189
|
+
let count = 0;
|
|
190
|
+
try {
|
|
191
|
+
for await (const item of stream) {
|
|
192
|
+
count++;
|
|
193
|
+
const text = toText(item);
|
|
194
|
+
blocks.push({ type: "text", text });
|
|
195
|
+
if (blocks.length > MAX_STREAM_BLOCKS)
|
|
196
|
+
blocks.shift();
|
|
197
|
+
if (progressToken !== undefined) {
|
|
198
|
+
await extra
|
|
199
|
+
.sendNotification({
|
|
200
|
+
method: "notifications/progress",
|
|
201
|
+
params: { progressToken, progress: count, message: text.slice(0, 1000) },
|
|
202
|
+
})
|
|
203
|
+
.catch(() => undefined);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch (error) {
|
|
208
|
+
blocks.push({ type: "text", text: error instanceof Error ? error.message : String(error) });
|
|
209
|
+
return { content: blocks, isError: true };
|
|
210
|
+
}
|
|
211
|
+
if (count > MAX_STREAM_BLOCKS) {
|
|
212
|
+
blocks.unshift({ type: "text", text: `(${count} items: the first ${count - MAX_STREAM_BLOCKS} are not shown)` });
|
|
213
|
+
}
|
|
214
|
+
if (count === 0)
|
|
215
|
+
blocks.push({ type: "text", text: "(no items)" });
|
|
216
|
+
return { content: blocks };
|
|
217
|
+
}
|
|
218
|
+
setupRegistryListeners() {
|
|
219
|
+
// Create listener functions that we can later remove
|
|
220
|
+
this.registerListener = () => {
|
|
221
|
+
this.log("Procedure registered, refreshing tools");
|
|
222
|
+
this.refreshTools();
|
|
223
|
+
};
|
|
224
|
+
this.unregisterListener = () => {
|
|
225
|
+
this.log("Procedure unregistered, refreshing tools");
|
|
226
|
+
this.refreshTools();
|
|
227
|
+
};
|
|
228
|
+
// Refresh tools when procedures are registered/unregistered
|
|
229
|
+
this.registry.on("register", this.registerListener);
|
|
230
|
+
this.registry.on("unregister", this.unregisterListener);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Remove the registry event listeners, if attached.
|
|
234
|
+
*/
|
|
235
|
+
removeRegistryListeners() {
|
|
236
|
+
if (this.registerListener) {
|
|
237
|
+
this.registry.off("register", this.registerListener);
|
|
238
|
+
this.registerListener = undefined;
|
|
239
|
+
}
|
|
240
|
+
if (this.unregisterListener) {
|
|
241
|
+
this.registry.off("unregister", this.unregisterListener);
|
|
242
|
+
this.unregisterListener = undefined;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Refresh the tool list from the registry.
|
|
247
|
+
*/
|
|
248
|
+
refreshTools() {
|
|
249
|
+
const procedures = this.registry.getAll();
|
|
250
|
+
const mcpTools = proceduresToMcpTools(procedures, this.options.toolFilter);
|
|
251
|
+
const before = this.toolSignature();
|
|
252
|
+
this.tools.clear();
|
|
253
|
+
for (const tool of mcpTools) {
|
|
254
|
+
this.tools.set(tool.name, tool);
|
|
255
|
+
}
|
|
256
|
+
this.log(`Refreshed tools: ${this.tools.size} available`);
|
|
257
|
+
if (this.running && this.toolSignature() !== before)
|
|
258
|
+
this.scheduleListChanged();
|
|
259
|
+
}
|
|
260
|
+
/** The tool names and descriptions: a change of this text is a change of the tool list. */
|
|
261
|
+
toolSignature() {
|
|
262
|
+
const entries = Array.from(this.tools.values(), (tool) => [tool.name, tool.description ?? ""]);
|
|
263
|
+
return JSON.stringify(entries.sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0)));
|
|
264
|
+
}
|
|
265
|
+
/** Send one notifications/tools/list_changed for a burst of registry events. */
|
|
266
|
+
scheduleListChanged() {
|
|
267
|
+
if (this.listChangedTimer)
|
|
268
|
+
return;
|
|
269
|
+
this.listChangedTimer = setTimeout(() => {
|
|
270
|
+
this.listChangedTimer = undefined;
|
|
271
|
+
if (!this.running)
|
|
272
|
+
return;
|
|
273
|
+
this.mcpServer.sendToolListChanged().catch((error) => {
|
|
274
|
+
this.log(`list_changed failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
275
|
+
});
|
|
276
|
+
}, 0);
|
|
277
|
+
this.listChangedTimer.unref?.();
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Log a debug message if debug mode is enabled.
|
|
281
|
+
*/
|
|
282
|
+
log(message) {
|
|
283
|
+
if (this.options.debug) {
|
|
284
|
+
// MUST be stderr: the stdio MCP transport uses stdout for JSON-RPC framing, so any
|
|
285
|
+
// stdout write here corrupts the protocol stream. See documentation/BUGS-2026-07.md (M39/Bug4).
|
|
286
|
+
console.error(`[${this.name}] ${message}`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Start the MCP transport.
|
|
291
|
+
*/
|
|
292
|
+
async start() {
|
|
293
|
+
if (this.running) {
|
|
294
|
+
this.log("Already running");
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
// Refresh tools before starting, and keep them current while running
|
|
298
|
+
this.refreshTools();
|
|
299
|
+
this.setupRegistryListeners();
|
|
300
|
+
try {
|
|
301
|
+
// Create appropriate transport
|
|
302
|
+
let transport;
|
|
303
|
+
if (this.options.sdkTransport) {
|
|
304
|
+
transport = this.options.sdkTransport;
|
|
305
|
+
this.log("Using the given transport");
|
|
306
|
+
}
|
|
307
|
+
else if (this.options.transport === "stdio") {
|
|
308
|
+
transport = createStdioTransport();
|
|
309
|
+
this.log("Using stdio transport");
|
|
310
|
+
}
|
|
311
|
+
else if (this.options.transport === "sse") {
|
|
312
|
+
transport = createSseTransport(this.options.sseOptions);
|
|
313
|
+
this.log(`Using SSE transport on ${this.options.sseOptions?.path ?? "/mcp/sse"}`);
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
throw new Error(`Unknown MCP transport: ${this.options.transport}`);
|
|
317
|
+
}
|
|
318
|
+
// Connect MCP server to transport
|
|
319
|
+
await this.mcpServer.connect(transport);
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
this.removeRegistryListeners();
|
|
323
|
+
throw error;
|
|
324
|
+
}
|
|
325
|
+
this.running = true;
|
|
326
|
+
this.log(`MCP server started (${this.options.transport}), ${this.tools.size} tools available`);
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Stop the MCP transport.
|
|
330
|
+
*/
|
|
331
|
+
async stop() {
|
|
332
|
+
if (!this.running) {
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
// Cleanup registry listeners
|
|
336
|
+
this.removeRegistryListeners();
|
|
337
|
+
if (this.listChangedTimer) {
|
|
338
|
+
clearTimeout(this.listChangedTimer);
|
|
339
|
+
this.listChangedTimer = undefined;
|
|
340
|
+
}
|
|
341
|
+
await this.mcpServer.close();
|
|
342
|
+
this.running = false;
|
|
343
|
+
this.log("MCP server stopped");
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Check if the transport is running.
|
|
347
|
+
*/
|
|
348
|
+
isRunning() {
|
|
349
|
+
return this.running;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Get current transport state.
|
|
353
|
+
*/
|
|
354
|
+
getState() {
|
|
355
|
+
return {
|
|
356
|
+
running: this.running,
|
|
357
|
+
toolCount: this.tools.size,
|
|
358
|
+
transport: this.options.transport,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Get the list of available tools.
|
|
363
|
+
*/
|
|
364
|
+
getTools() {
|
|
365
|
+
return Array.from(this.tools.values());
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=mcp-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-transport.js","sourceRoot":"","sources":["../../src/transport/mcp-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE Transport Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Creates an MCP SSE (Server-Sent Events) transport for HTTP streaming.
|
|
5
|
+
* NOTE: SSE transport requires HTTP server integration - use with Express or similar.
|
|
6
|
+
*/
|
|
7
|
+
import type { SseTransportOptions } from "../types.js";
|
|
8
|
+
/**
|
|
9
|
+
* SSE transport is not yet implemented as a standalone transport.
|
|
10
|
+
*
|
|
11
|
+
* SSE requires HTTP server integration with:
|
|
12
|
+
* - GET endpoint for SSE connection
|
|
13
|
+
* - POST endpoint for messages
|
|
14
|
+
*
|
|
15
|
+
* For now, use stdio transport or implement SSE with your HTTP framework directly.
|
|
16
|
+
*
|
|
17
|
+
* @throws Error - SSE transport requires HTTP server integration
|
|
18
|
+
*/
|
|
19
|
+
export declare function createSseTransport(_options?: SseTransportOptions): never;
|
|
20
|
+
//# sourceMappingURL=sse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../src/transport/sse.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,CAAC,EAAE,mBAAmB,GAC7B,KAAK,CAMP"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSE Transport Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Creates an MCP SSE (Server-Sent Events) transport for HTTP streaming.
|
|
5
|
+
* NOTE: SSE transport requires HTTP server integration - use with Express or similar.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* SSE transport is not yet implemented as a standalone transport.
|
|
9
|
+
*
|
|
10
|
+
* SSE requires HTTP server integration with:
|
|
11
|
+
* - GET endpoint for SSE connection
|
|
12
|
+
* - POST endpoint for messages
|
|
13
|
+
*
|
|
14
|
+
* For now, use stdio transport or implement SSE with your HTTP framework directly.
|
|
15
|
+
*
|
|
16
|
+
* @throws Error - SSE transport requires HTTP server integration
|
|
17
|
+
*/
|
|
18
|
+
export function createSseTransport(_options) {
|
|
19
|
+
throw new Error("SSE transport requires HTTP server integration. " +
|
|
20
|
+
"Use stdio transport for standalone MCP server, or integrate SSE " +
|
|
21
|
+
"with your HTTP framework (Express, etc.) using SSEServerTransport directly.");
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=sse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/transport/sse.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAA8B;IAE9B,MAAM,IAAI,KAAK,CACb,kDAAkD;QAClD,kEAAkE;QAClE,6EAA6E,CAC9E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stdio Transport Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Creates an MCP stdio transport for CLI usage.
|
|
5
|
+
*/
|
|
6
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
7
|
+
/**
|
|
8
|
+
* Create a stdio transport for MCP server.
|
|
9
|
+
*
|
|
10
|
+
* Stdio transport uses standard input/output for communication,
|
|
11
|
+
* suitable for CLI tools and desktop app integrations.
|
|
12
|
+
*
|
|
13
|
+
* @returns MCP stdio transport instance
|
|
14
|
+
*/
|
|
15
|
+
export declare function createStdioTransport(): StdioServerTransport;
|
|
16
|
+
//# sourceMappingURL=stdio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../src/transport/stdio.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,IAAI,oBAAoB,CAE3D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stdio Transport Wrapper
|
|
3
|
+
*
|
|
4
|
+
* Creates an MCP stdio transport for CLI usage.
|
|
5
|
+
*/
|
|
6
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
7
|
+
/**
|
|
8
|
+
* Create a stdio transport for MCP server.
|
|
9
|
+
*
|
|
10
|
+
* Stdio transport uses standard input/output for communication,
|
|
11
|
+
* suitable for CLI tools and desktop app integrations.
|
|
12
|
+
*
|
|
13
|
+
* @returns MCP stdio transport instance
|
|
14
|
+
*/
|
|
15
|
+
export function createStdioTransport() {
|
|
16
|
+
return new StdioServerTransport();
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=stdio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transport/stdio.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,IAAI,oBAAoB,EAAE,CAAC;AACpC,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Transport Types
|
|
3
|
+
*
|
|
4
|
+
* Configuration options for the MCP server transport.
|
|
5
|
+
*/
|
|
6
|
+
import type { Transport as SdkTransport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
7
|
+
import type { ProcedureRegistry } from "@procedures/client";
|
|
8
|
+
import type { McpServerInfo, McpToolFilter } from "@procedures/mcp";
|
|
9
|
+
/**
|
|
10
|
+
* SSE transport configuration options.
|
|
11
|
+
*/
|
|
12
|
+
export interface SseTransportOptions {
|
|
13
|
+
/** Port to listen on (default: 3002) */
|
|
14
|
+
port?: number;
|
|
15
|
+
/** Host to bind to (default: "0.0.0.0") */
|
|
16
|
+
host?: string;
|
|
17
|
+
/** Path for SSE endpoint (default: "/mcp/sse") */
|
|
18
|
+
path?: string;
|
|
19
|
+
/** Enable CORS (default: true) */
|
|
20
|
+
cors?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* MCP Server Transport configuration options.
|
|
24
|
+
*/
|
|
25
|
+
export interface McpServerTransportOptions {
|
|
26
|
+
/** Transport type: stdio or sse (default: "stdio") */
|
|
27
|
+
transport?: "stdio" | "sse";
|
|
28
|
+
/** Procedure registry to use (defaults to PROCEDURE_REGISTRY) */
|
|
29
|
+
registry?: ProcedureRegistry;
|
|
30
|
+
/** Server info for MCP protocol */
|
|
31
|
+
serverInfo?: McpServerInfo;
|
|
32
|
+
/** Tool filtering options */
|
|
33
|
+
toolFilter?: McpToolFilter;
|
|
34
|
+
/** SSE-specific options (when transport is "sse") */
|
|
35
|
+
sseOptions?: SseTransportOptions;
|
|
36
|
+
/**
|
|
37
|
+
* An MCP SDK transport to connect, in place of `transport`. Use it to embed the server in
|
|
38
|
+
* another process, or in a test (the SDK's `InMemoryTransport`).
|
|
39
|
+
*/
|
|
40
|
+
sdkTransport?: SdkTransport;
|
|
41
|
+
/** Enable debug logging */
|
|
42
|
+
debug?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* MCP Server Transport state.
|
|
46
|
+
*/
|
|
47
|
+
export interface McpServerTransportState {
|
|
48
|
+
/** Whether the transport is running */
|
|
49
|
+
running: boolean;
|
|
50
|
+
/** Number of registered tools */
|
|
51
|
+
toolCount: number;
|
|
52
|
+
/** Transport type in use */
|
|
53
|
+
transport: "stdio" | "sse";
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,SAAS,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IAE5B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B,mCAAmC;IACnC,UAAU,CAAC,EAAE,aAAa,CAAC;IAE3B,6BAA6B;IAC7B,UAAU,CAAC,EAAE,aAAa,CAAC;IAE3B,qDAAqD;IACrD,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAEjC;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAE5B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,EAAE,OAAO,GAAG,KAAK,CAAC;CAC5B"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,84 @@
|
|
|
1
1
|
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/package",
|
|
2
3
|
"name": "@procedures/mcp-server",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"description": "Model Context Protocol server transport: serve typed procedures as MCP tools to Claude and other MCP clients, with streaming progress, list_changed and an expose policy.",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"mcp",
|
|
8
|
+
"model-context-protocol",
|
|
9
|
+
"claude",
|
|
10
|
+
"ai-tools",
|
|
11
|
+
"mcp-server",
|
|
12
|
+
"tools",
|
|
13
|
+
"procedures"
|
|
14
|
+
],
|
|
15
|
+
"homepage": "https://mark1russell7.github.io/client/",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/mark1russell7/client/issues"
|
|
18
|
+
},
|
|
19
|
+
"repository": {
|
|
20
|
+
"type": "git",
|
|
21
|
+
"url": "git+https://github.com/mark1russell7/client.git",
|
|
22
|
+
"directory": "packages/client-mcp"
|
|
23
|
+
},
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"author": "Mark Russell (https://github.com/mark1russell7)",
|
|
26
|
+
"type": "module",
|
|
27
|
+
"main": "./dist/index.js",
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": {
|
|
31
|
+
"types": "./dist/index.d.ts",
|
|
32
|
+
"import": "./dist/index.js"
|
|
33
|
+
},
|
|
34
|
+
"./module": {
|
|
35
|
+
"types": "./dist/module.d.ts",
|
|
36
|
+
"import": "./dist/module.js"
|
|
37
|
+
},
|
|
38
|
+
"./register": {
|
|
39
|
+
"types": "./dist/register.d.ts",
|
|
40
|
+
"import": "./dist/register.js"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"files": [
|
|
44
|
+
"dist",
|
|
45
|
+
"src",
|
|
46
|
+
"!src/**/*.test.ts",
|
|
47
|
+
"!src/**/*.test.tsx",
|
|
48
|
+
"!src/**/__tests__",
|
|
49
|
+
"CHANGELOG.md"
|
|
50
|
+
],
|
|
51
|
+
"sideEffects": [
|
|
52
|
+
"./dist/index.js",
|
|
53
|
+
"./dist/register.js"
|
|
54
|
+
],
|
|
55
|
+
"engines": {
|
|
56
|
+
"node": ">=22"
|
|
57
|
+
},
|
|
58
|
+
"publishConfig": {
|
|
59
|
+
"access": "public",
|
|
60
|
+
"provenance": true
|
|
61
|
+
},
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
64
|
+
"@procedures/mcp": "0.1.0"
|
|
65
|
+
},
|
|
66
|
+
"peerDependencies": {
|
|
67
|
+
"@procedures/client": "^0.1.0"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"typescript": "^7.0.2",
|
|
71
|
+
"@types/node": "^22.0.0",
|
|
72
|
+
"@mark1russell7/cue": "^1.0.0",
|
|
73
|
+
"vitest": "^5.0.3",
|
|
74
|
+
"@procedures/client": "0.1.0",
|
|
75
|
+
"zod": "^4.6.5"
|
|
76
|
+
},
|
|
77
|
+
"scripts": {
|
|
78
|
+
"build": "tsc -b",
|
|
79
|
+
"typecheck": "tsc --noEmit",
|
|
80
|
+
"clean": "rm -rf dist .tsbuildinfo",
|
|
81
|
+
"test": "vitest run",
|
|
82
|
+
"test:watch": "vitest"
|
|
83
|
+
}
|
|
6
84
|
}
|