@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.
Files changed (65) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/LICENSE +21 -0
  3. package/README.md +366 -2
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/index.d.ts +22 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +22 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/module.d.ts +11 -0
  10. package/dist/module.d.ts.map +1 -0
  11. package/dist/module.js +16 -0
  12. package/dist/module.js.map +1 -0
  13. package/dist/procedures/mcp/index.d.ts +6 -0
  14. package/dist/procedures/mcp/index.d.ts.map +1 -0
  15. package/dist/procedures/mcp/index.js +6 -0
  16. package/dist/procedures/mcp/index.js.map +1 -0
  17. package/dist/procedures/mcp/list-tools.d.ts +8 -0
  18. package/dist/procedures/mcp/list-tools.d.ts.map +1 -0
  19. package/dist/procedures/mcp/list-tools.js +60 -0
  20. package/dist/procedures/mcp/list-tools.js.map +1 -0
  21. package/dist/procedures/mcp/serve.d.ts +38 -0
  22. package/dist/procedures/mcp/serve.d.ts.map +1 -0
  23. package/dist/procedures/mcp/serve.js +123 -0
  24. package/dist/procedures/mcp/serve.js.map +1 -0
  25. package/dist/register.d.ts +11 -0
  26. package/dist/register.d.ts.map +1 -0
  27. package/dist/register.js +21 -0
  28. package/dist/register.js.map +1 -0
  29. package/dist/surface.d.ts +36 -0
  30. package/dist/surface.d.ts.map +1 -0
  31. package/dist/surface.js +74 -0
  32. package/dist/surface.js.map +1 -0
  33. package/dist/transport/index.d.ts +7 -0
  34. package/dist/transport/index.d.ts.map +1 -0
  35. package/dist/transport/index.js +7 -0
  36. package/dist/transport/index.js.map +1 -0
  37. package/dist/transport/mcp-transport.d.ts +94 -0
  38. package/dist/transport/mcp-transport.d.ts.map +1 -0
  39. package/dist/transport/mcp-transport.js +368 -0
  40. package/dist/transport/mcp-transport.js.map +1 -0
  41. package/dist/transport/sse.d.ts +20 -0
  42. package/dist/transport/sse.d.ts.map +1 -0
  43. package/dist/transport/sse.js +23 -0
  44. package/dist/transport/sse.js.map +1 -0
  45. package/dist/transport/stdio.d.ts +16 -0
  46. package/dist/transport/stdio.d.ts.map +1 -0
  47. package/dist/transport/stdio.js +18 -0
  48. package/dist/transport/stdio.js.map +1 -0
  49. package/dist/types.d.ts +55 -0
  50. package/dist/types.d.ts.map +1 -0
  51. package/dist/types.js +7 -0
  52. package/dist/types.js.map +1 -0
  53. package/package.json +81 -3
  54. package/src/index.ts +48 -0
  55. package/src/module.ts +18 -0
  56. package/src/procedures/mcp/index.ts +6 -0
  57. package/src/procedures/mcp/list-tools.ts +84 -0
  58. package/src/procedures/mcp/serve.ts +170 -0
  59. package/src/register.ts +24 -0
  60. package/src/surface.ts +85 -0
  61. package/src/transport/index.ts +7 -0
  62. package/src/transport/mcp-transport.ts +418 -0
  63. package/src/transport/sse.ts +29 -0
  64. package/src/transport/stdio.ts +19 -0
  65. 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"}
@@ -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,7 @@
1
+ /**
2
+ * MCP Transport Types
3
+ *
4
+ * Configuration options for the MCP server transport.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -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.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
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
  }