MCP 服务器的接入方式与安全边界

把它接到你已经在用的系统上。接之前先想清楚一件事——你接进来的那个东西,能替你读到什么、又能替谁说话。

约 9 分钟

MCP 是让 Claude 连上外部系统的那套标准。它是什么、Anthropic 为什么把它捐出去,见第 01 章的 MCP 与 Anthropic 的开放标准布局

这一节只讲操作和边界。

先想清楚要不要接

接一个 MCP 服务器 = 给它开一扇新的门。

值得接的:你每天都要去查、去填的那个系统。比如项目管理工具、数据库、你们内部的资料库。

不值得接的:一年用两次的东西。每个连上的服务器都在占你的启动时间和上下文空间。

怎么接

远程服务(最常见)

Terminal
claude mcp add --transport http notion https://mcp.notion.com/mcp

很多服务需要登录。加完之后在会话里输入 /mcp,里面有登录入口,走一遍浏览器授权就行。

也可以在命令行完成:

Terminal
claude mcp login notion

需要 API key 的

Terminal
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer 你的 token"

跑在你自己电脑上的

Terminal
claude mcp add --env API_KEY=你的key --transport stdio airtable \
  -- npx -y airtable-mcp-server

注意那个 -- 它把 Claude 自己的参数和要执行的命令分开,-- 后面的原样传给那个程序。少了它,Claude 会试图把对方的参数当成自己的来解析。

装在哪一层

三个范围,选错了要么别人看不到,要么该私密的进了版本库。

范围 谁能用 存在哪
local(默认) 只有你,只在当前项目 ~/.claude.json
project 团队(跟着版本库走) 项目根目录的 .mcp.json
user 只有你,所有项目 ~/.claude.json

-s 参数指定:

Terminal
claude mcp add -s user --transport http notion https://mcp.notion.com/mcp

怎么选

  • 只有你自己用的(比如你的个人笔记系统)→ user
  • 整个团队都该有的(比如公司的资料库)→ project
  • 拿不准 → 先用默认的 local,好用了再挪

同名的话,local 覆盖 project 覆盖 user。

常用命令

命令 做什么
claude mcp list 列出所有服务器和连接状态
claude mcp get <名字> 看某一个的详情
claude mcp remove <名字> 删掉
/mcp(会话内) 状态、登录、按项目开关

claude mcp list 会在每个服务器旁边标状态:

标记 含义
✔ Connected 好的
! Needs authentication 需要登录,用 /mcp
✘ Failed to connect 连不上
⏸ Pending approval 等你批准,见下面

安全边界:这一节的重点

① 接进来的东西不是中立的

官方页面顶部的警告是:连接之前确认你信任这个服务器。会抓取外部内容的服务器,会让你暴露在提示词注入风险下。

「提示词注入」的意思是:它读到的某段内容里,藏着写给它看的指令。

这件事有一个已经被总结成规律的判断标准——当三个条件同时成立时风险最高:接触私密数据、接触不可信内容、能对外发送。见致命三要素

落到 MCP 上就是一条实际的纪律:

一个能读你私密材料的服务器,和一个能上网抓东西的服务器,尽量不要在同一个会话里同时开着。

② 项目里带的服务器需要你批准

从版本库里 clone 下来一个项目,它的 .mcp.json 里可能已经写好了几个服务器。

Claude Code 不会自动连,会先问你。你会看到那个 ⏸ Pending approval 状态。

批准过的选择想重置:

Terminal
claude mcp reset-project-choices

这个设计防的是一类具体的事:一个下载来的项目,配置文件里预先写好连到某个外部服务器。不批准就不连。

③ 有些工具每次都会问你

服务器可以声明「我这个工具必须每次都让人确认」。

这类工具在任何权限模式下都会问你——包括 bypassPermissions,而且不给「以后别问」的选项

这是一个好设计。 涉及发送、支付、删除这类不可逆动作的工具,就该每次都问。

④ 用只读的凭据

接数据库时,官方示例里明确用的是只读用户。

这一条应该扩展成通则:给 MCP 服务器的凭据,能只读就只读。它不需要写权限的时候,不要给它写权限。

它接进来的工具怎么称呼

mcp__服务器名__工具名

比如 mcp__github__list_prs

这个完整名字用在权限规则里,比如你想禁掉所有 MCP 工具:

JSON
{
  "permissions": {
    "deny": ["mcp__*"]
  }
}

三个不那么明显的机制

工具定义是按需加载的

默认情况下,启动时只加载工具的名字,完整说明等它用到时才拉。

这是为你省上下文。 一个服务器可能有几十个工具,全部展开会占掉很大一块。

代价是它第一次用某个工具时会多一步。 想让某个服务器一直完整加载,在配置里加 "alwaysLoad": true——但这会拖慢启动,因为要等它连上。

跑太久的会自动转后台

主对话里超过两分钟的 MCP 调用会转成后台任务,你继续干别的,结果回来时通知你。

/tasks 里能看到。

输出太多会被截断

超过 25,000 token 的返回会被限制。 超过 10,000 就开始警告。

实际含义:让它「把整个数据库导出来」这类活儿,不要指望一次 MCP 调用完成。分批,或者让它写到文件里。

一份接入清单

接一个新服务器之前,问自己四个问题:

问题
这个服务器是谁做的? 官方的、还是网上找的?
它能读到什么? 给它的凭据能不能收窄成只读?
它会不会抓外部内容? 会的话,别和敏感材料同场使用
我一周会用到几次? 少于一次就别接

第四个问题最容易被忽略。 接进来的东西不用也在占地方。定期用 /mcp 关掉不用的。

本节事实查证日期:2026-08-05。 依据:官方 Connect Claude Code to tools via MCP

← 回到手册目录