Skip to content

Commit 5cc06ab

Browse files
committed
add more sanity checks
1 parent 71fa493 commit 5cc06ab

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/helpers/EJsonTransport.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import { JSONRPCMessage, JSONRPCMessageSchema } from "@modelcontextprotocol/sdk/
22
import { EJSON } from "bson";
33
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
44

5-
class EJsonReadBuffer {
5+
// This is almost a copy of ReadBuffer from @modelcontextprotocol/sdk
6+
// but it uses EJSON.parse instead of JSON.parse to handle BSON types
7+
export class EJsonReadBuffer {
68
private _buffer?: Buffer;
79

810
append(chunk: Buffer): void {

tests/unit/EJsonTransport.test.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { Decimal128, MaxKey, MinKey, ObjectId, Timestamp, UUID } from "bson";
2-
import { createEJsonTransport } from "../../src/helpers/EJsonTransport.js";
2+
import { createEJsonTransport, EJsonReadBuffer } from "../../src/helpers/EJsonTransport.js";
33
import { JSONRPCMessage } from "@modelcontextprotocol/sdk/types.js";
44
import { AuthInfo } from "@modelcontextprotocol/sdk/server/auth/types.js";
55
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
66
import { Readable } from "stream";
7+
import { ReadBuffer } from "@modelcontextprotocol/sdk/shared/stdio.js";
78

89
describe("EJsonTransport", () => {
910
let transport: StdioServerTransport;
@@ -54,4 +55,18 @@ describe("EJsonTransport", () => {
5455
},
5556
});
5657
});
58+
59+
it("has _readBuffer field of type EJsonReadBuffer", () => {
60+
const readBuffer = transport["_readBuffer"];
61+
expect(readBuffer).toBeDefined();
62+
expect(readBuffer).toBeInstanceOf(EJsonReadBuffer);
63+
});
64+
65+
describe("standard StdioServerTransport", () => {
66+
it("has a _readBuffer field", () => {
67+
const transport = new StdioServerTransport();
68+
expect(transport["_readBuffer"]).toBeDefined();
69+
expect(transport["_readBuffer"]).toBeInstanceOf(ReadBuffer);
70+
});
71+
});
5772
});

0 commit comments

Comments
 (0)