name: mcp-security-review description: 用于MCP服务器安装的安全审查门控。检查来源、分类风险、强制执行版本固定,并在任何MCP添加到您的环境前记录凭证暴露情况。 version: 1.0.0 when_to_use: 当安装、添加、配置或更新任何MCP服务器时 progressive_disclosure: level: 1 references: [] note: 故意保持简洁。协议是价值所在,而非参考深度。
MCP安全审查
在任何MCP服务器安装或更新前运行的门控。MCP服务器处理凭证(OAuth令牌、API密钥、AWS配置文件)并具有网络访问权限。一个受损或恶意的包可以静默地泄露秘密。
何时激活
每当新MCP服务器被安装、添加、配置或更新时。触发短语:“install MCP”、“add MCP”、“set up MCP”、“configure MCP”、“claude mcp add”、“new tool connection”。
步骤1:识别来源
在安装任何东西之前确定谁发布了包。
| 信号 | 官方 | 社区 |
|---|---|---|
| npm范围 | @salesforce/、@modelcontextprotocol/、@anthropic/ |
@username/、无范围 |
| PyPI发布者 | 供应商组织 | 个人维护者 |
| GitHub组织 | github.com/aws/、github.com/figma/ |
个人账户 |
| 托管URL | 供应商域名(mcp.atlassian.com、app.pendo.io) |
第三方域名 |
步骤2:分类风险
| 分类 | 标准 | 所需操作 |
|---|---|---|
| 供应商托管 | 在供应商自己的域上运行 | 安装。低风险。 |
| 供应商发布 | 由供应商组织在npm/PyPI上发布 | 安装。固定版本。 |
| MCP组织 | 在@modelcontextprotocol/下发布 |
安装。固定版本。 |
| 内部 | 由您的团队构建,代码已审查 | 安装。 |
| 社区(已建立) | 500+ GitHub星标,活跃维护,宽松许可证 | 固定版本。审计源代码。在CLAUDE.md中记录。 |
| 社区(未知) | 星标低,单一维护者,无审计跟踪 | 不要安装。寻找官方替代品或内部构建。 |
步骤3:审计社区包
对于任何分类为“社区(已建立)”的包:
固定版本。 永远不要安装未固定的包。
- npm:
package@1.2.3(不是package或package@latest) - PyPI/uvx:
package==1.2.3(不是package) - 在
~/.claude.json或项目MCP配置中,使用固定规范
阅读源代码。 克隆固定标签的仓库并检查:
- 对意外域的出站网络调用(数据泄露)
- 凭证日志记录、缓存或转发超出API所需
- 混淆代码、eval/exec调用或可疑的安装后脚本
- 依赖链引入意外包
映射凭证暴露。 记录包接触的确切秘密:
- OAuth令牌(哪个提供者,什么范围)
- AWS凭证(访问密钥、假设角色、配置文件)
- API密钥(哪个服务,什么权限)
- 文件系统访问(读取/写入什么路径)
步骤4:记录
在项目的CLAUDE.md或安全配置中添加条目:
| MCP | 包 | 来源 | 状态 |
|-----|---------|------------|--------|
| Slack | @anthropic/slack-mcp | 官方(MCP组织) | 已批准 |
| Athena | @user/athena-mcp@1.0.1 | 社区(固定) | 标记:处理AWS凭证 |
步骤5:持续维护
- 在更新之前 一个社区MCP版本:阅读变更日志并比较您的固定版本和新版本。查找新依赖项、更改的网络调用或修改的凭证处理。
- 当官方替代品发布时:迁移到它并移除社区包。
- 定期重新检查:供应商可能无声地发布官方MCP。每季度搜索npm/PyPI以寻找官方包。
- 如果包受损:立即撤销它有权访问的任何凭证,然后移除包。
为什么这很重要
MCP服务器作为子进程运行,可以访问您的shell环境、文件系统和传递给它们的任何凭证。与浏览器扩展(沙盒化)或npm包(通常仅在构建时运行)不同,MCP服务器在运行时代表您主动发送和接收数据。一个未固定的社区包的单一恶意更新可以捕获您环境中的每个OAuth令牌和API密钥。