-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
when I run node ./client.js
, it return Tool call error: McpError: MCP error -32603: keyValidator._parse is not a function
please checkzod
version!
please checkzod
version!
please checkzod
version!
const facts = [
"公理1: 生存是文明的第一需要.",
"公理2: 文明不断增长和扩张,但宇宙中的物质总量保持不变.",
].map((f) => f.toLowerCase());
server.tool(
"search_local_database",
z.object({ query: z.string() }),
async ({ query }) => {
console.log("Tool called with query:", query);
const queryTerms = query.toLowerCase().split(/\s+/);
const results = facts.filter((fact) =>
queryTerms.some((term) => fact.includes(term))
);
return {
content: [
{
type: "text",
text: results.length === 0 ? "未找到相关公理" : results.join("\n"),
},
],
};
}
);
To Reproduce
Steps to reproduce the behavior:
1.
Expected behavior
Logs
Tool call error: McpError: MCP error -32603: keyValidator._parse is not a function
at Client._onresponse (file:///Users/xxx/Documents/mcp_llm/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:205:27)
at _transport.onmessage (file:///Users/xxx/Documents/mcp_llm/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/protocol.js:76:22)
at StdioClientTransport.processReadBuffer (file:///Users/xxx/Documents/mcp_llm/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js:118:79)
at Socket.<anonymous> (file:///Users/xxx/Documents/mcp_llm/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js:93:22)
at Socket.emit (node:events:514:28)
at addChunk (node:internal/streams/readable:545:12)
at readableAddChunkPushByteMode (node:internal/streams/readable:495:3)
at Readable.push (node:internal/streams/readable:375:5)
at Pipe.onStreamRead (node:internal/stream_base_commons:190:23) {
code: -32603,
data: undefined
}
Additional context
Add any other context about the problem here.
import {
McpServer,
ResourceTemplate,
} from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const facts = [
"公理1: 生存是文明的第一需要.",
"公理2: 文明不断增长和扩张,但宇宙中的物质总量保持不变.",
].map((f) => f.toLowerCase());
try {
const server = new McpServer({
name: "mcp-cli-server",
version: "1.0.0",
});
// 使用 Zod 定义工具的输入模式
server.tool(
"search_local_database",
z.object({ query: z.string() }),
async ({ query }) => {
console.log("Tool called with query:", query);
const queryTerms = query.toLowerCase().split(/\s+/);
const results = facts.filter((fact) =>
queryTerms.some((term) => fact.includes(term))
);
return {
content: [
{
type: "text",
text: results.length === 0 ? "未找到相关公理" : results.join("\n"),
},
],
};
}
);
// 定义资源
server.resource(
"current_time",
new ResourceTemplate("time://current", { list: undefined }),
async (uri) => ({
contents: [{ uri: uri.href, text: new Date().toLocaleString() }],
})
);
await server.connect(new StdioServerTransport());
console.log("Server is running...");
console.log("Registered resources:", server.resources);
console.log("Registered tools:", server.tools);
} catch (err) {
console.error("Server connection failed:", err);
}
async function getContext(client, question) {
let currentTime = "";
let additionalContext = "";
try {
const resources = await client.readResource(
{ uri: "time://current" },
{ timeout: 15000 }
);
console.log("Resources response:", resources);
currentTime = resources.contents[0]?.text || new Date().toLocaleString();
} catch (err) {
console.error("Resource read error:", err);
currentTime = new Date().toLocaleString();
}
if (question.toLowerCase().includes("公理")) {
console.log("Searching for axioms...", question);
try {
const toolResult = await client.callTool({
name: "search_local_database",
arguments: { query: question },
});
console.log("Tool result:", toolResult);
additionalContext = toolResult.content[0]?.text || "No results found.";
} catch (err) {
console.error("Tool call error:", err);
additionalContext = "Error searching database.";
}
}
return { currentTime, additionalContext };
}
jmmoser, Neungzad, AykutSarac and domdomegg
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working