modelcontextprotocol / modelcontextprotocol/typescript-sdk
Client#listPrompts results in MCP error -32601: Method not found
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 13.4k
- Forks
- 2.2k
- Avg merge
- 3d 15h
- Merged PRs (30d)
- 4
Description
Describe the bug
I've created an MCPServer instance connected to a Client via an InMemoryTransport. If the server has not has registerPrompt called on it, the client raises an error when calling listPrompts().
To Reproduce
Steps to reproduce the behavior:
-
Make sure you're using the latest version of Bun. I don't know if this reproduces in other runtimes—I've only tested it in Bun.
-
Install
@modelcontextprotocol/sdkviabun add @modelcontextprotocol/sdk. -
Create a file named
example.tswith the following content:import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; const server = new McpServer({ name: "example", version: "0.0.0", }); // Don't register any prompts const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair(); const client = new Client({ name: "example", version: "0.0.0", }); await Promise.all([server.connect(serverTransport), client.connect(clientTransport)]); console.log(await client.listPrompts()); -
Run the file using Bun:
bun run example.ts.
Expected behavior
The script should output []
Actual behavior
The script produces this error:
1300 | CallToolResultSchema,
1301 | ListToolsResultSchema,
1302 | ]);
1303 | export class McpError extends Error {
1304 | constructor(code, message, data) {
1305 | super(`MCP error ${code}: ${message}`);
^
McpError: MCP error -32601: Method not found
code: -32601,
data: undefined,
at new McpError (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/types.js:1305:9)
at _onresponse (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:223:27)
at <anonymous> (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:84:22)
at send (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/inMemory.js:42:34)
at send (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/inMemory.js:37:16)
at _onrequest (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:133:101)
at <anonymous> (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:87:22)
at send (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/inMemory.js:42:34)
at send (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/inMemory.js:37:16)
at <anonymous> (/Users/landon/Development/mcp/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:308:29)
Bun v1.2.21 (macOS arm64)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with Client.listPrompts() and the McpServer/registerPrompt behavior shown in example.ts, using InMemoryTransport.createLinkedPair() to reproduce the request. Check how an MCP server responds when no prompts are registered; done means the example returns [] instead of MCP error -32601, with coverage for the empty-prompt case.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- backend-api-design
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 66/100