@modelcontextprotocol/server 2.0.0-alpha.1 → 2.0.0-alpha.3

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 (37) hide show
  1. package/README.md +6 -2
  2. package/dist/{src-IKPjmxu7.mjs → ajvProvider-Birb50r-.mjs} +21 -3421
  3. package/dist/ajvProvider-Birb50r-.mjs.map +1 -0
  4. package/dist/ajvProvider-DZ_siXcF.d.mts +983 -0
  5. package/dist/ajvProvider-DZ_siXcF.d.mts.map +1 -0
  6. package/dist/cfWorkerProvider-BrJKpSFH.mjs +954 -0
  7. package/dist/cfWorkerProvider-BrJKpSFH.mjs.map +1 -0
  8. package/dist/cfWorkerProvider-DUhk5Ewx.d.mts +52 -0
  9. package/dist/cfWorkerProvider-DUhk5Ewx.d.mts.map +1 -0
  10. package/dist/chunk-BRhqBsOc.mjs +42 -0
  11. package/dist/index.d.mts +1526 -334
  12. package/dist/index.d.mts.map +1 -1
  13. package/dist/index.mjs +91 -766
  14. package/dist/index.mjs.map +1 -1
  15. package/dist/shimsNode.d.mts +1 -1
  16. package/dist/shimsNode.mjs +1 -1
  17. package/dist/shimsWorkerd.d.mts +1 -1
  18. package/dist/shimsWorkerd.mjs +1 -1
  19. package/dist/shimsWorkerd.mjs.map +1 -1
  20. package/dist/src-Pa1iAvsj.mjs +3386 -0
  21. package/dist/src-Pa1iAvsj.mjs.map +1 -0
  22. package/dist/stdio.d.mts +49 -0
  23. package/dist/stdio.d.mts.map +1 -0
  24. package/dist/stdio.mjs +106 -0
  25. package/dist/stdio.mjs.map +1 -0
  26. package/dist/transport-DMKhEchd.d.mts +8657 -0
  27. package/dist/transport-DMKhEchd.d.mts.map +1 -0
  28. package/dist/types-R2RTIcjk.d.mts +66 -0
  29. package/dist/types-R2RTIcjk.d.mts.map +1 -0
  30. package/dist/validators/ajv.d.mts +2 -0
  31. package/dist/validators/ajv.mjs +4 -0
  32. package/dist/validators/cfWorker.d.mts +2 -0
  33. package/dist/validators/cfWorker.mjs +3 -0
  34. package/package.json +37 -18
  35. package/dist/index-DbrUKkja.d.mts +0 -5153
  36. package/dist/index-DbrUKkja.d.mts.map +0 -1
  37. package/dist/src-IKPjmxu7.mjs.map +0 -1
@@ -0,0 +1,49 @@
1
+ import { gt as JSONRPCMessage, n as Transport } from "./transport-DMKhEchd.mjs";
2
+ import { Readable, Writable } from "node:stream";
3
+
4
+ //#region src/server/stdio.d.ts
5
+
6
+ /**
7
+ * Server transport for stdio: this communicates with an MCP client by reading from the current process' `stdin` and writing to `stdout`.
8
+ *
9
+ * This transport is only available in Node.js environments.
10
+ *
11
+ * @example
12
+ * ```ts source="./stdio.examples.ts#StdioServerTransport_basicUsage"
13
+ * const server = new McpServer({ name: 'my-server', version: '1.0.0' });
14
+ * const transport = new StdioServerTransport();
15
+ * await server.connect(transport);
16
+ * ```
17
+ */
18
+ declare class StdioServerTransport implements Transport {
19
+ private _stdin;
20
+ private _stdout;
21
+ private _readBuffer;
22
+ private _started;
23
+ private _closed;
24
+ constructor(_stdin?: Readable, _stdout?: Writable, options?: {
25
+ /**
26
+ * Maximum size of the read buffer in bytes. If a single message exceeds
27
+ * this size the transport will emit an error and close.
28
+ *
29
+ * Defaults to 10 MB.
30
+ */
31
+ maxBufferSize?: number;
32
+ });
33
+ onclose?: () => void;
34
+ onerror?: (error: Error) => void;
35
+ onmessage?: (message: JSONRPCMessage) => void;
36
+ _ondata: (chunk: Buffer) => void;
37
+ _onerror: (error: Error) => void;
38
+ _onstdouterror: (error: Error) => void;
39
+ /**
40
+ * Starts listening for messages on `stdin`.
41
+ */
42
+ start(): Promise<void>;
43
+ private processReadBuffer;
44
+ close(): Promise<void>;
45
+ send(message: JSONRPCMessage): Promise<void>;
46
+ }
47
+ //#endregion
48
+ export { StdioServerTransport };
49
+ //# sourceMappingURL=stdio.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.d.mts","names":[],"sources":["../src/server/stdio.ts"],"sourcesContent":[],"mappings":";;;;;;;AAkBA;;;;;;;;;;AAoGkB,cApGL,oBAAA,YAAgC,SAoG3B,CAAA;EAAiB,QAAA,MAAA;EApGU,QAAA,OAAA;EAAS,QAAA,WAAA;;;uBAM9B,oBACC;;;;;;;;;;oBAeH;wBACI;mBAGJ;oBASC;0BAGM;;;;WAUV;;WA4BA;gBAwBD,iBAAiB"}
package/dist/stdio.mjs ADDED
@@ -0,0 +1,106 @@
1
+ import { c as ReadBuffer, d as serializeMessage } from "./src-Pa1iAvsj.mjs";
2
+ import { process } from "@modelcontextprotocol/server/_shims";
3
+
4
+ //#region src/server/stdio.ts
5
+ /**
6
+ * Server transport for stdio: this communicates with an MCP client by reading from the current process' `stdin` and writing to `stdout`.
7
+ *
8
+ * This transport is only available in Node.js environments.
9
+ *
10
+ * @example
11
+ * ```ts source="./stdio.examples.ts#StdioServerTransport_basicUsage"
12
+ * const server = new McpServer({ name: 'my-server', version: '1.0.0' });
13
+ * const transport = new StdioServerTransport();
14
+ * await server.connect(transport);
15
+ * ```
16
+ */
17
+ var StdioServerTransport = class {
18
+ _readBuffer;
19
+ _started = false;
20
+ _closed = false;
21
+ constructor(_stdin = process.stdin, _stdout = process.stdout, options) {
22
+ this._stdin = _stdin;
23
+ this._stdout = _stdout;
24
+ this._readBuffer = new ReadBuffer({ maxBufferSize: options?.maxBufferSize });
25
+ }
26
+ onclose;
27
+ onerror;
28
+ onmessage;
29
+ _ondata = (chunk) => {
30
+ try {
31
+ this._readBuffer.append(chunk);
32
+ this.processReadBuffer();
33
+ } catch (error) {
34
+ this.onerror?.(error);
35
+ this.close().catch(() => {});
36
+ }
37
+ };
38
+ _onerror = (error) => {
39
+ this.onerror?.(error);
40
+ };
41
+ _onstdouterror = (error) => {
42
+ this.onerror?.(error);
43
+ this.close().catch(() => {});
44
+ };
45
+ /**
46
+ * Starts listening for messages on `stdin`.
47
+ */
48
+ async start() {
49
+ if (this._started) throw new Error("StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.");
50
+ this._started = true;
51
+ this._stdin.on("data", this._ondata);
52
+ this._stdin.on("error", this._onerror);
53
+ this._stdout.on("error", this._onstdouterror);
54
+ }
55
+ processReadBuffer() {
56
+ while (true) try {
57
+ const message = this._readBuffer.readMessage();
58
+ if (message === null) break;
59
+ this.onmessage?.(message);
60
+ } catch (error) {
61
+ this.onerror?.(error);
62
+ }
63
+ }
64
+ async close() {
65
+ if (this._closed) return;
66
+ this._closed = true;
67
+ this._stdin.off("data", this._ondata);
68
+ this._stdin.off("error", this._onerror);
69
+ this._stdout.off("error", this._onstdouterror);
70
+ if (this._stdin.listenerCount("data") === 0) this._stdin.pause();
71
+ this._readBuffer.clear();
72
+ this.onclose?.();
73
+ }
74
+ send(message) {
75
+ if (this._closed) return Promise.reject(/* @__PURE__ */ new Error("StdioServerTransport is closed"));
76
+ return new Promise((resolve, reject) => {
77
+ const json = serializeMessage(message);
78
+ let settled = false;
79
+ const onError = (error) => {
80
+ if (settled) return;
81
+ settled = true;
82
+ this._stdout.off("error", onError);
83
+ this._stdout.off("drain", onDrain);
84
+ reject(error);
85
+ };
86
+ const onDrain = () => {
87
+ if (settled) return;
88
+ settled = true;
89
+ this._stdout.off("error", onError);
90
+ this._stdout.off("drain", onDrain);
91
+ resolve();
92
+ };
93
+ this._stdout.once("error", onError);
94
+ if (this._stdout.write(json)) {
95
+ if (settled) return;
96
+ settled = true;
97
+ this._stdout.off("error", onError);
98
+ resolve();
99
+ } else if (!settled) this._stdout.once("drain", onDrain);
100
+ });
101
+ }
102
+ };
103
+
104
+ //#endregion
105
+ export { StdioServerTransport };
106
+ //# sourceMappingURL=stdio.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.mjs","names":["_stdin: Readable","_stdout: Writable"],"sources":["../src/server/stdio.ts"],"sourcesContent":["import type { Readable, Writable } from 'node:stream';\n\nimport type { JSONRPCMessage, Transport } from '@modelcontextprotocol/core-internal';\nimport { ReadBuffer, serializeMessage } from '@modelcontextprotocol/core-internal';\nimport { process } from '@modelcontextprotocol/server/_shims';\n\n/**\n * Server transport for stdio: this communicates with an MCP client by reading from the current process' `stdin` and writing to `stdout`.\n *\n * This transport is only available in Node.js environments.\n *\n * @example\n * ```ts source=\"./stdio.examples.ts#StdioServerTransport_basicUsage\"\n * const server = new McpServer({ name: 'my-server', version: '1.0.0' });\n * const transport = new StdioServerTransport();\n * await server.connect(transport);\n * ```\n */\nexport class StdioServerTransport implements Transport {\n private _readBuffer: ReadBuffer;\n private _started = false;\n private _closed = false;\n\n constructor(\n private _stdin: Readable = process.stdin,\n private _stdout: Writable = process.stdout,\n options?: {\n /**\n * Maximum size of the read buffer in bytes. If a single message exceeds\n * this size the transport will emit an error and close.\n *\n * Defaults to 10 MB.\n */\n maxBufferSize?: number;\n }\n ) {\n this._readBuffer = new ReadBuffer({ maxBufferSize: options?.maxBufferSize });\n }\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n // Arrow functions to bind `this` properly, while maintaining function identity.\n _ondata = (chunk: Buffer) => {\n try {\n this._readBuffer.append(chunk);\n this.processReadBuffer();\n } catch (error) {\n this.onerror?.(error as Error);\n this.close().catch(() => {});\n }\n };\n _onerror = (error: Error) => {\n this.onerror?.(error);\n };\n _onstdouterror = (error: Error) => {\n this.onerror?.(error);\n this.close().catch(() => {\n // Ignore errors during close — we're already in an error path\n });\n };\n\n /**\n * Starts listening for messages on `stdin`.\n */\n async start(): Promise<void> {\n if (this._started) {\n throw new Error(\n 'StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.'\n );\n }\n\n this._started = true;\n this._stdin.on('data', this._ondata);\n this._stdin.on('error', this._onerror);\n this._stdout.on('error', this._onstdouterror);\n }\n\n private processReadBuffer() {\n while (true) {\n try {\n const message = this._readBuffer.readMessage();\n if (message === null) {\n break;\n }\n\n this.onmessage?.(message);\n } catch (error) {\n this.onerror?.(error as Error);\n }\n }\n }\n\n async close(): Promise<void> {\n if (this._closed) {\n return;\n }\n this._closed = true;\n\n // Remove our event listeners first\n this._stdin.off('data', this._ondata);\n this._stdin.off('error', this._onerror);\n this._stdout.off('error', this._onstdouterror);\n\n // Check if we were the only data listener\n const remainingDataListeners = this._stdin.listenerCount('data');\n if (remainingDataListeners === 0) {\n // Only pause stdin if we were the only listener\n // This prevents interfering with other parts of the application that might be using stdin\n this._stdin.pause();\n }\n\n // Clear the buffer and notify closure\n this._readBuffer.clear();\n this.onclose?.();\n }\n\n send(message: JSONRPCMessage): Promise<void> {\n if (this._closed) {\n return Promise.reject(new Error('StdioServerTransport is closed'));\n }\n return new Promise((resolve, reject) => {\n const json = serializeMessage(message);\n\n let settled = false;\n const onError = (error: Error) => {\n if (settled) return;\n settled = true;\n this._stdout.off('error', onError);\n this._stdout.off('drain', onDrain);\n reject(error);\n };\n const onDrain = () => {\n if (settled) return;\n settled = true;\n this._stdout.off('error', onError);\n this._stdout.off('drain', onDrain);\n resolve();\n };\n\n this._stdout.once('error', onError);\n\n if (this._stdout.write(json)) {\n if (settled) return;\n settled = true;\n this._stdout.off('error', onError);\n resolve();\n } else if (!settled) {\n this._stdout.once('drain', onDrain);\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAkBA,IAAa,uBAAb,MAAuD;CACnD,AAAQ;CACR,AAAQ,WAAW;CACnB,AAAQ,UAAU;CAElB,YACI,AAAQA,SAAmB,QAAQ,OACnC,AAAQC,UAAoB,QAAQ,QACpC,SASF;EAXU;EACA;AAWR,OAAK,cAAc,IAAI,WAAW,EAAE,eAAe,SAAS,eAAe,CAAC;;CAGhF;CACA;CACA;CAGA,WAAW,UAAkB;AACzB,MAAI;AACA,QAAK,YAAY,OAAO,MAAM;AAC9B,QAAK,mBAAmB;WACnB,OAAO;AACZ,QAAK,UAAU,MAAe;AAC9B,QAAK,OAAO,CAAC,YAAY,GAAG;;;CAGpC,YAAY,UAAiB;AACzB,OAAK,UAAU,MAAM;;CAEzB,kBAAkB,UAAiB;AAC/B,OAAK,UAAU,MAAM;AACrB,OAAK,OAAO,CAAC,YAAY,GAEvB;;;;;CAMN,MAAM,QAAuB;AACzB,MAAI,KAAK,SACL,OAAM,IAAI,MACN,gHACH;AAGL,OAAK,WAAW;AAChB,OAAK,OAAO,GAAG,QAAQ,KAAK,QAAQ;AACpC,OAAK,OAAO,GAAG,SAAS,KAAK,SAAS;AACtC,OAAK,QAAQ,GAAG,SAAS,KAAK,eAAe;;CAGjD,AAAQ,oBAAoB;AACxB,SAAO,KACH,KAAI;GACA,MAAM,UAAU,KAAK,YAAY,aAAa;AAC9C,OAAI,YAAY,KACZ;AAGJ,QAAK,YAAY,QAAQ;WACpB,OAAO;AACZ,QAAK,UAAU,MAAe;;;CAK1C,MAAM,QAAuB;AACzB,MAAI,KAAK,QACL;AAEJ,OAAK,UAAU;AAGf,OAAK,OAAO,IAAI,QAAQ,KAAK,QAAQ;AACrC,OAAK,OAAO,IAAI,SAAS,KAAK,SAAS;AACvC,OAAK,QAAQ,IAAI,SAAS,KAAK,eAAe;AAI9C,MAD+B,KAAK,OAAO,cAAc,OAAO,KACjC,EAG3B,MAAK,OAAO,OAAO;AAIvB,OAAK,YAAY,OAAO;AACxB,OAAK,WAAW;;CAGpB,KAAK,SAAwC;AACzC,MAAI,KAAK,QACL,QAAO,QAAQ,uBAAO,IAAI,MAAM,iCAAiC,CAAC;AAEtE,SAAO,IAAI,SAAS,SAAS,WAAW;GACpC,MAAM,OAAO,iBAAiB,QAAQ;GAEtC,IAAI,UAAU;GACd,MAAM,WAAW,UAAiB;AAC9B,QAAI,QAAS;AACb,cAAU;AACV,SAAK,QAAQ,IAAI,SAAS,QAAQ;AAClC,SAAK,QAAQ,IAAI,SAAS,QAAQ;AAClC,WAAO,MAAM;;GAEjB,MAAM,gBAAgB;AAClB,QAAI,QAAS;AACb,cAAU;AACV,SAAK,QAAQ,IAAI,SAAS,QAAQ;AAClC,SAAK,QAAQ,IAAI,SAAS,QAAQ;AAClC,aAAS;;AAGb,QAAK,QAAQ,KAAK,SAAS,QAAQ;AAEnC,OAAI,KAAK,QAAQ,MAAM,KAAK,EAAE;AAC1B,QAAI,QAAS;AACb,cAAU;AACV,SAAK,QAAQ,IAAI,SAAS,QAAQ;AAClC,aAAS;cACF,CAAC,QACR,MAAK,QAAQ,KAAK,SAAS,QAAQ;IAEzC"}