协议错误与工具失败
区分传输故障和业务逻辑错误。
协议错误与工具失败 是 CoddyKit 上的免费 MCP Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 MCP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 MCP Academy 课程共包含 4 节课。
本课时的部分内容尚未翻译,以英文显示。
Two Very Different Failures
MCP has two kinds of failure: a protocol error in the wire itself, and a tool failure inside your business logic. They are handled differently.
Protocol Errors Live in JSON-RPC
A protocol error means the message could not be processed at all, like an unknown method or malformed params. It rides in the JSON-RPC error field.
{"jsonrpc": "2.0", "id": 7,
"error": {"code": -32601,
"message": "Method not found"}}Tool Failures Live in the Result
A tool failure means the call reached your function but the work went wrong. It returns a normal result marked with isError true.
Why the Split Matters
The model should see and react to tool failures, but protocol errors usually signal a bug the client must handle, not something the AI can retry.
Standard JSON-RPC Codes
Protocol codes are negative and standardized: -32601 is method not found, -32602 is invalid params, -32700 is a parse error.
Tool Failures Reach the Model
Because a tool failure is just a result, the model reads it as context and can decide to retry, adjust input, or explain it. 🔁
Raising Inside a Tool
When you raise an exception in a tool, FastMCP turns it into a tool failure result, not a protocol error. Your server keeps running.
@mcp.tool()
def fetch(url: str) -> str:
if not url.startswith("http"):
raise ValueError("url must be http")Unknown Tool Is Protocol-Level
If a client asks for a tool that does not exist, that is a protocol error. The request never reaches any function of yours.
Bad Arguments Can Be Either
Schema-level type mismatches surface as a protocol invalid-params error, while a valid type with a bad value is best a tool failure.
Match Failure to Audience
Ask who should react. If the model can fix it, make it a tool failure. If only the developer can, a protocol error is right.
Keep Transport Healthy
Never let business problems leak out as protocol errors. Doing so confuses clients and can tear down a session that should keep going.
Quick Check
Where does a failure inside your tool function get reported?
Recap
Protocol errors mean the message itself failed; tool failures mean your logic failed. Route each to who can act on it and keep transport healthy. ✅
常见问题解答
「协议错误与工具失败」课时是免费的吗?
是的 — 「协议错误与工具失败」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 MCP Academy 课程的其余内容,请升级到 CoddyKit PRO。 MCP Academy 课程共包含 4 节课。
「协议错误与工具失败」这节课中我会学到什么?
区分传输故障和业务逻辑错误。 你通过在浏览器中直接运行的动手代码来练习 MCP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 MCP Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 MCP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「协议错误与工具失败」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 MCP Academy 课中编写并运行代码吗?
能。每节 MCP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。