MCP 服务器构建者必读:OpenAI 对工具注解的审核规则,以及为何正确的提示仍不等于安全

Reddit r/AI_Agents 新闻

摘要

InfoQ 报道了 OpenAI 的 Thomas Sarlandie 在 AGNTCon + MCPCon 大会上的演讲,详述了 OpenAI 的 MCP 服务器审核规则要求工具必须携带注解(readOnlyHint、destructiveHint、openWorldHint),同时强调:正确的注解只是不可信的提示,并不能替代服务端的授权和安全机制。

在圣何塞举行的 AGNTCon + MCPCon 北美大会(10 月 22-23 日)上,OpenAI 的 Thomas Sarlandie 分享了 ChatGPT 插件目录在生产环境中的 MCP 服务器所看到的内容。InfoQ 的报道(10 月 26 日)指出,OpenAI 会拒绝提交的服务器,除非每个工具都带有注解,因为这些注解让 ChatGPT 能够对只读调用快速放行,而对破坏性调用进行确认。也就是说,服务器中最容易编写的部分,恰恰也是客户端据以行动的部分。OpenAI 的开发者文档详细说明了如何设置这三个提示: - **readOnlyHint**:仅当工具无法改变状态时才设为 true。审核指南指出,发送消息、运行作业、入队任务、写入日志或启动工作流的工具都不是只读的。 - **destructiveHint**:当工具可能导致不可逆或难以逆转的结果时设为 true,"即使仅在某些模式下、通过默认参数、或通过间接副作用发生"。 - **openWorldHint**:当工具访问公共互联网或开放式外部实体时设为 true,包括只读的网络搜索。如果访问的是有边界的私有账户或工作区,则为 false,即使该服务托管在其他地方也是如此。 审核指南中有一个容易被忽略的细节:提交表单中的说明文字不能覆盖注解。如果服务器声明了 readOnlyHint: false,在表单中称该工具"功能上是只读的"并不会改变这一点。你必须在服务器上修正注解,重新部署,重新扫描工具并验证其值。 另一半的问题在于:提示能做到什么、不能做什么。MCP 规范规定,客户端 MUST 将工具注解视为不可信信息,除非它们来自受信任的服务器;OpenAI 的文档也指出,注解不能替代服务端的授权、输入验证,或对重大操作的确认。准确的注解有助于客户端判断何时需要询问用户,但它们本身不强制执行任何操作。 我在个人主页(u/shoumikgoswami)上发布了更详细的版本:逐工具的检查清单、重新扫描工作流,以及 InfoQ 报道的演讲中提到的其他生产实践要点。你的服务器中,哪个工具最难归类?例如,一个既读取数据又写入一行日志的工具?
查看原文

相似文章

工具投毒 WebMCP;Jev 能否应对?

Reddit r/AI_Agents

作者为 WebMCP 构建了一个黑客马拉松演示,强调了 AI 代理中工具投毒的担忧,其中信任基于描述,建议 Jev 可以通过验证描述与执行之间的一致性来提供帮助。