Skip to content

Commit b069719

Browse files
committed
add test to cover nested logging withing a tool call
1 parent bafd9e7 commit b069719

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

src/server/mcp.test.ts

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
ListPromptsResultSchema,
1212
GetPromptResultSchema,
1313
CompleteResultSchema,
14+
LoggingMessageNotificationSchema,
1415
} from "../types.js";
1516
import { ResourceTemplate } from "./mcp.js";
1617
import { completable } from "./completable.js";
@@ -378,6 +379,70 @@ describe("tool()", () => {
378379
expect(receivedSessionId).toBe("test-session-123");
379380
});
380381

382+
test("should provide sendNotification withing tool call", async () => {
383+
const mcpServer = new McpServer(
384+
{
385+
name: "test server",
386+
version: "1.0",
387+
},
388+
{ capabilities: { logging: {} } },
389+
);
390+
391+
const client = new Client(
392+
{
393+
name: "test client",
394+
version: "1.0",
395+
},
396+
{
397+
capabilities: {
398+
tools: {},
399+
},
400+
},
401+
);
402+
403+
let receivedLogMessage: string | undefined;
404+
405+
const loggingMessage = "hello here is log message 1"
406+
407+
client.setNotificationHandler(LoggingMessageNotificationSchema, (notification) => {
408+
receivedLogMessage = notification.params.data as string;
409+
410+
});
411+
412+
mcpServer.tool("test-tool", async ({ sendNotification }) => {
413+
await sendNotification({ method: "notifications/message", params: { level: "debug", data: loggingMessage } });
414+
return {
415+
content: [
416+
{
417+
type: "text",
418+
text: "Test response",
419+
},
420+
],
421+
};
422+
});
423+
424+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
425+
// Set a test sessionId on the server transport
426+
serverTransport.sessionId = "test-session-123";
427+
428+
429+
await Promise.all([
430+
client.connect(clientTransport),
431+
mcpServer.server.connect(serverTransport),
432+
]);
433+
434+
await client.request(
435+
{
436+
method: "tools/call",
437+
params: {
438+
name: "test-tool",
439+
},
440+
},
441+
CallToolResultSchema,
442+
);
443+
expect(receivedLogMessage).toBe(loggingMessage);
444+
});
445+
381446
test("should allow client to call server tools", async () => {
382447
const mcpServer = new McpServer({
383448
name: "test server",

0 commit comments

Comments
 (0)