MCP 服务器会扩展 Agent 的能力。这正是它的价值所在,也是风险所在:你正在把一个第三方程序接入一个已经能够读取源代码并执行命令的会话。
这份清单用于评估并非由你编写的服务器。内容并不特殊,只是把你对任何以自身权限运行的依赖项应有的谨慎,同样应用到 MCP 服务器上。
安装之前
阅读它实际会做什么。 MCP 服务器通常只是一个小程序。如果源代码公开,工具定义一般集中在一个文件中,十分钟就能读完。
检查它要求哪些权限。 一个读取日历的服务器没有理由请求文件系统访问权。安装时就索取过多权限,是你能得到的最明确警告之一。
优先选择能够固定版本的服务器。 锁定的版本不会在你不知情时发生变化。任何在 Agent 会话中运行并自动更新的组件,都等于按别人的时间表,在没有提示的情况下重新授予信任。
凭据
绝不要把长期有效的凭据粘贴到工具描述或提示词中。 提示词中的内容会进入会话记录,而记录可能被保存、总结或继续传递。
把令牌权限缩到最低。 如果服务器只需读取一个代码仓库,就只授权这一个仓库。大多数 API 都支持这种限制,只是许多安装说明没有提到。
把密钥放在环境变量中,不要写进可能被提交的配置文件。 将 .env 加入 .gitignore 只是最低要求,但仍能避免最常见的错误。
Agent 会看到什么
工具的描述会进入模型上下文,因此恶意服务器可以把指令写在其中。应把工具输出视为不可信输入,就像 Agent 获取的网页一样:工具返回的是数据,不是需要服从的指令。
对于会获取远程内容的服务器,这一点尤其重要。服务器返回某个 URL 的内容时,也可能是在返回攻击者能够控制的文本。
持续检查
- 定期检查已连接的服务器,移除不再使用的项目
- 更新后留意权限变化
- 让 Agent 只在任务所需的最小文件系统范围内运行
这份清单无法解决什么
它无法让一个不可信的服务器变得安全,也无法识别一个刻意编写且伪装良好的恶意服务器。它能降低意外风险,而现实中的大多数问题正来自这些意外。