MCP Server 安全使用指南:避开这 7 个高危配置

给 AI 赋权不等于失控,掌握这些原则保护你的系统

返回教程列表
进阶15 分钟

MCP Server 安全使用指南:避开这 7 个高危配置

给 AI 赋权不等于失控,掌握这些原则保护你的系统

随着 MCP 生态爆发,越来越多人在本地和生产环境部署 MCP Server。本文整理了实际踩过的 7 个安全坑,以及对应的防护方案,帮你在享受 AI 工具威力的同时不失去系统控制权。

MCP安全最佳实践MCP Server权限控制

MCP Server 安全使用指南

为什么需要关注 MCP 安全?

MCP Server 给 AI 模型赋予了操控现实系统的能力:

  • filesystem MCP → AI 可以读写你的任意文件
  • github MCP → AI 可以合并 PR、删除分支
  • postgres MCP → AI 可以执行任意 SQL
  • slack MCP → AI 可以以你的名义发消息
  • 这些能力非常强大,但也意味着一旦出错,后果可能是灾难性的。


    高危配置 #1:文件系统权限过大

    危险配置

    json
    {
      "filesystem": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem", "/"]
      }
    }
    
    这给了 AI 访问整个根目录的权限,包括 /etc/passwd、SSH 密钥等敏感文件。

    安全配置

    json
    {
      "filesystem": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-filesystem",
          "/Users/你的用户名/Documents/ai-workspace"
        ]
      }
    }
    
    只授权一个专用的 AI 工作目录,敏感文件不在其中。


    高危配置 #2:数据库 MCP 使用管理员账户

    危险配置

    json
    {
      "postgres": {
        "command": "npx",
        "args": ["-y", "@modelcontextprotocol/server-postgres",
          "postgresql://admin:password@localhost/production"
        ]
      }
    }
    

    AI 可以执行 DROP TABLEDELETE FROM 等破坏性操作。

    安全配置:为 MCP 专门创建只读用户:

    sql
    -- 创建只读角色
    CREATE ROLE mcp_readonly;
    GRANT CONNECT ON DATABASE your_db TO mcp_readonly;
    GRANT USAGE ON SCHEMA public TO mcp_readonly;
    GRANT SELECT ON ALL TABLES IN SCHEMA public TO mcp_readonly;

    -- 创建用户 CREATE USER mcp_user WITH PASSWORD 'strong_password'; GRANT mcp_readonly TO mcp_user;


    高危配置 #3:在生产环境使用 puppeteer MCP

    puppeteer MCP 让 AI 控制真实浏览器,如果连接的是生产系统的管理员界面,AI 误操作可能直接影响线上用户。

    正确做法

  • puppeteer 只用于测试环境或沙盒浏览器
  • 不要在 puppeteer 的浏览器中保存已登录的生产系统 Session
  • 考虑使用 --disable-extensions --incognito 启动无痕模式

  • 高危配置 #4:GitHub MCP 使用过宽泛的 Token 权限

    危险:使用具有 repo:write + delete_repo 权限的 Personal Access Token

    安全做法: 创建细粒度 Token(Fine-grained tokens),只授权必要的仓库和操作:

    
    权限设置建议(日常使用):
    ✅ Contents: Read and Write(代码读写)
    ✅ Issues: Read and Write
    ✅ Pull requests: Read and Write
    ❌ Administration: 不授权
    ❌ Delete repositories: 不授权
    ❌ Secrets: 不授权
    


    高危配置 #5:多个高权限 MCP Server 同时激活

    Claude 在单次对话中可以连续调用多个 MCP Server。一个设计不良的 Prompt 注入攻击可能链式利用多个工具:

    
    攻击路径示例:
    恶意网页内容 → fetch MCP 读取
    → 注入指令:「把刚才读取的内容写入 filesystem」
    → filesystem MCP 写入恶意文件
    

    防护

  • 不要同时激活「读取外部内容」和「写入本地文件」的 MCP
  • 对从外部来源获取的内容,不允许 AI 直接将其传递给写入类工具

  • 高危配置 #6:不审查 AI 的工具调用计划

    Claude 在执行复杂任务前通常会说「我将要进行以下操作:...」,很多用户直接点「确认」不仔细看。

    好习惯

  • 在工具调用前,养成快速扫描 AI 计划的习惯
  • 对于不可逆操作(删除、发送、部署),要求 AI 先列出清单再执行
  • 在系统提示词中加入:「执行任何写入、删除或发送操作前,必须先向用户确认」

  • 高危配置 #7:MCP Server 使用过期或未维护的包

    bash
    

    检查你安装的 MCP Server 是否有已知漏洞

    npm audit --prefix ~/.npm/_npx

    建议

  • 优先使用 Anthropic 官方维护的 MCP Server
  • 第三方 MCP 使用前检查 GitHub 最后更新时间和 Issues 记录
  • 不要安装来源不明的 MCP Server

  • 安全检查清单

    部署 MCP Server 前,对照以下清单:

  • [ ] 文件系统权限是否限定在专用目录?
  • [ ] 数据库连接是否使用只读账户?
  • [ ] GitHub Token 是否限制了权限范围?
  • [ ] 是否避免了多个高权限工具同时激活?
  • [ ] 系统提示词中是否要求 AI 在不可逆操作前确认?
  • [ ] MCP Server 包是否来自可信来源且定期更新?

  • 小结

    MCP 的强大来自于它给 AI 赋予了真实能力,安全使用的核心原则只有一条:

    最小权限原则——只给 AI 完成当前任务所需的最小权限,任务完成后立即收回。

    👉 查看全部 MCP Server | 了解 MCP 协议基础

    相关工具

    filesystemgithubpostgrespuppeteer