0Pricing
MCP Academy · 课时

执行操作前验证输入

使用清晰的消息拒绝错误参数。

执行操作前验证输入 是 CoddyKit 上的免费 MCP Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 MCP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 MCP Academy 课程共包含 4 节课。

不要相信模型发送的任何内容

工具接收的参数来自 AI,而 AI 可能会猜测。请在接触文件、数据库或 API 之前验证每个输入。

先检查,再执行

请在函数的最开始运行检查。在执行任何真实操作或不可逆操作之前,确认输入合理。

@mcp.tool()
def set_age(age: int) -> str:
    if age < 0 or age > 130:
        raise ValueError("age out of range")

给出清晰理由后拒绝

输入未通过检查时,请准确说明原因。明确的消息能让模型在下一次尝试时发送修正后的值。

类型提示可以捕获很多问题

您的参数提示会成为工具模式,因此基本的类型不匹配会在代码运行之前被捕获。请优先利用它们。

@mcp.tool()
def repeat(text: str, times: int) -> str:
    return text * times

提示并不够用

仅靠类型无法表达范围、格式或允许的值。您仍然需要验证计数是否为正数,或状态是否属于可接受的状态。

限定取值范围

请防止数值输入超出极端范围。对页面大小或循环次数设置限制,可以避免模型意外使服务器超载。

if limit > 100:
    raise ValueError("limit must be 100 or less")

将允许的值列入白名单

对于固定选项,请检查输入是否属于允许集合,而不要信任自由文本。白名单会拒绝实际不支持的选项。

if status not in {"open", "closed"}:
    raise ValueError("status must be open or closed")

清理路径和查询

会变成文件路径或 SQL 查询的模型输入很危险。请对其进行清理,以免多余的 .. 或引号越过您设定的范围。

必填字段必须存在

请确认所有必填内容确实存在且不为空。尽早设置保护,胜过让逻辑深处出现令人困惑的失败。

if not query.strip():
    raise ValueError("query cannot be empty")

验证同时也是文档

清晰的检查会向模型说明您的规则。一次被拒绝后,它就能学会格式,并在本次会话的其余时间发送有效输入。

在副作用发生前失败

黄金法则是:在所有输入通过检查之前,绝不要开始不可逆的操作。提前验证,避免出现只完成一半的写入。

快速检查

为什么要在执行工具的实际工作前验证输入?

回顾

请将模型输入视为不可信:在函数开头验证类型、范围和选项,用清晰的理由拒绝无效输入,并且在检查通过前绝不要执行操作。✅

常见问题解答

「执行操作前验证输入」课时是免费的吗?

是的 — 「执行操作前验证输入」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 MCP Academy 课程的其余内容,请升级到 CoddyKit PRO。 MCP Academy 课程共包含 4 节课。

「执行操作前验证输入」这节课中我会学到什么?

使用清晰的消息拒绝错误参数。 你通过在浏览器中直接运行的动手代码来练习 MCP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 MCP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 MCP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「执行操作前验证输入」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 MCP Academy 课中编写并运行代码吗?

能。每节 MCP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 模型可见的工具错误
  2. 协议错误与工具失败
  3. 执行操作前验证输入
  4. 安全失败,绝不挂起
← 返回 MCP Academy