tools-call-simple-text passes when the tool does not exist
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 65/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- javascript, nodejs, typescript
Hướng nghiên cứu
Look at the conformance test scenario 'tools-call-simple-text' in the test suite. The bug is that it incorrectly accepts an error response as a success. Examine the test logic that checks the result, likely in a file handling MCP tool call scenarios. Understand how the test validates 'isError' and the content text. Run the provided minimal server to reproduce the issue, then modify the test to fail when 'isError' is true or when the tool is not found.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
tools-call-simple-text reports SUCCESS against a server that has no test_simple_text tool. The server's "not found" error result is accepted as "returns simple text content".
Reproduced on 0.1.16 and 0.2.0-alpha.11.
Server: a minimal Streamable HTTP server on the official TypeScript SDK with one tool, get_forecast (full source below).
npx @modelcontextprotocol/conformance server --url http://127.0.0.1:3932/mcp --scenario tools-call-simple-text
# Passed: 1/1 (0.1.16), Passed: 2/2 (0.2.0-alpha.11)
checks.json records the evidence for the pass:
{"id":"tools-call-simple-text","status":"SUCCESS",
"details":{"result":{"content":[{"type":"text","text":"MCP error -32602: Tool test_simple_text not found"}],"isError":true}}}
Expected: FAILURE (or not-applicable) when the result has isError: true, and ideally a check that the text is the fixture's expected text. As it stands, any server that answers an unknown tool with an isError text result passes. That is every server built on the TypeScript SDK.
This looks like the same class of bug as #505, where a scenario accepts tool-error results in place of the success it is meant to verify. The other tools-call-* scenarios may be worth auditing for the same thing.
minimal.mjs
import express from "express";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
import { z } from "zod";
function build() {
const s = new McpServer({ name: "weather", version: "1.0.0" });
s.tool("get_forecast", "Get the forecast for a city.", { city: z.string() },
{ readOnlyHint: true }, async ({ city }) => ({ content: [{ type: "text", text: `Sunny in ${city}` }] }));
return s;
}
const app = express();
app.use(express.json());
app.post("/mcp", async (req, res) => {
const server = build();
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
res.on("close", () => { transport.close(); server.close(); });
await server.connect(transport);
await transport.handleRequest(req, res, req.body);
});
app.get("/mcp", (req, res) => res.status(405).end());
app.listen(Number(process.env.PORT), "127.0.0.1");
- Ngôn ngữ chính
- TypeScript
- Star
- 127
- Fork
- 101
- Merge trung bình
- 4 ngày 7 giờ
- Pull request đã merge (30 ngày)
- 6
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của modelcontextprotocol/conformance
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
modelcontextprotocol/conformance#315 · 1 bình luận ·
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
modelcontextprotocol/conformance#312 · 1 bình luận ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 40/100
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
Tất cả issue của modelcontextprotocol/conformance
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
mksglu/context-mode#1200 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
anthropics/claude-code#96687 ·
-
good first issue
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 95/100
AOSSIE-Org/DebateAI#582 · 2 bình luận ·