本地 MCP 服务器和远程 MCP 服务器一旦跑起来,看上去完全一样:客户端里同一份工具 清单、同一段对话、同一个结果。区别在于您为此交出了什么。本地服务器是您自己机器 上的一个程序,由客户端启动并通过标准输入输出与它对话,您交出的是一行命令。远程 服务器是别人的 HTTPS 端点,您交出的是一份凭证——连同它所解锁的一切,直到您把它 撤销为止。
所以,在把 URL 粘进连接器对话框之前,有用的问题不是“这台服务器可信吗”——没有人 能从一个上架页面回答它。有用的是三个更窄、而且查得到答案的问题:令牌被限定在 什么范围、去哪里把它收回,以及您找到这台服务器的那个目录究竟核实了什么。下面的 答案依据 MCP 规范和厂商文档在 2026 年 8 月 16 日的状态。
当前的规范修订版 2026-07-28 把这两种传输当作不同的安全上下文。授权在 MCP 里是 可选的,而它在哪里适用写得很明确:使用 HTTP 传输的实现应当遵循 OAuth 规范, stdio 的实现则完全不应遵循,而是从环境中取得凭证。较旧的远程传输 HTTP+SSE 已被 弃用;应当预期的是 Streamable HTTP。
| 本地(stdio) | 远程(Streamable HTTP) | |
|---|---|---|
| 您交出的东西 | 客户端将要运行的一条命令 | 一个 URL,通常还有一份 OAuth 授权 |
| 代码在哪里运行 | 您的机器、您的用户账号 | 由别人运营的基础设施 |
| 凭证 | 从环境中取得 | 绑定到那一台服务器的访问令牌 |
| “断开连接”做了什么 | 不再启动进程 | 删除客户端那份令牌副本;授权可能仍然存在 |
| 作者怀有恶意时的最坏情况 | 以您的权限运行任意代码 | 已批准的 scopes 所能触及的一切 |
哪一列都不是安全的那一列。本地服务器是以您的身份运行的任意代码——正因如此,规范 要求提供一键本地配置的客户端必须完整显示它将执行的确切命令,不得截断,并先取得 明确许可。远程服务器不会往您机器上放代码,但它把您的数据挪到一个运营方那里,并 留下一条比您的注意力活得更久的访问路径。两者朝不同方向失效;我们的 两类服务器各能看到什么的对比讲得更细。
授权模型是 OAuth 2.1,作为用户值得弄懂的部分是受众绑定。客户端必须实现
Resource Indicators for OAuth 2.0(RFC 8707):resource 参数必须在授权请求和
令牌请求中都发送,指明这枚令牌是给哪一台服务器的。服务器必须验证令牌确实是发给
自己的,只接受对自身资源有效的令牌,并且不得接受或转发其他任何令牌。把客户端的
令牌原样传给下游 API——也就是“token passthrough”——是被直接禁止的。
所以,一枚实现正确的令牌在别的服务器上毫无用处。这堵住了重放、跨服务复用凭证, 以及一类混淆代理人攻击——却完全没有堵住运营方本身。受众绑定说的是令牌在哪里 有效,而不是另一端的公司拿它的工具代您取回的东西做什么。回答后者的是他们的 隐私政策,不是协议。
真正决定您暴露面的是 scopes。规范把服务器往最小权限推:scopes_supported 的
本意是基本功能所需的最小集合,超出的部分应在首次尝试特权操作时逐步申请。照做的
服务器一开始要得很少;不照做的,会给出一屏列满一切的授权确认页。那一屏,是决定权
还在您手上的最后一个位置。
撤销有两个面,多数人只用第一个。
在助手里。 在 Claude 中,自定义连接器位于 Customize > Connectors,在那里 粘贴服务器 URL 来添加;Free 用户限一个。同一个页面也是断开它的地方,并且可以 逐个启用或停用该服务器的工具,而不是照单全收。Anthropic 在帮助中心把信任立场 写得很直白:自定义连接器让您把 Claude 连到未经 Anthropic 验证的任意服务。在 ChatGPT 中,远程服务器通过开发者模式进入——网页端的 Settings → Security and login,接受 SSE 和 streaming HTTP 端点。OpenAI 自己的 文档称之为强大但危险,把提示注入和破坏性写入操作列为风险,并默认对写入操作要求 确认。
在您用来授权的那个服务里。 这一步才是被跳过的。删除连接器只是移走您客户端 那份令牌副本;记录在您 Google、GitHub、Atlassian 或 Notion 账号里的授权是另一个 对象,有自己的生命周期,附在它上面的刷新令牌可能比连接器活得久得多。Anthropic 的指引也是这么说的——在 Claude 的设置里断开连接器或者在第三方服务的安全设置里 撤销。两边都做,并且在连接之前就先找到那个已连接应用的页面。
registry.modelcontextprotocol.io 上的官方 MCP 注册表是找服务器的自然去处,而
一条条目的含义很容易被读多。它的工作组章程写得很具体。发布与信任覆盖的是认证
流程——GitHub OAuth、GitHub OIDC、DNS 与 HTTP 验证——外加命名空间归属、审核工具
和社区举报。明确排除在范围之外的是:代客户端或最终用户对 MCP 服务器实现进行排名
或挑选,以及托管、分发或执行服务器代码,因为该注册表是一份元数据目录,不是软件包
注册表。
所以,一个通过验证的命名空间证明的是:发布这条记录的人控制着其名字里的那个 GitHub 组织或域名。这是实实在在的信号:它让抢注拼写相近的名字更难,也给了您一个 可以追责的对象。它不是代码审查,不是安全审计,也不是背书——身份确认了,行为依然 未知。
规范里有一条原则值得带进每一次连接:对工具行为的描述,包括注解在内,除非来自 可信的服务器,否则都应视为不可信;并且宿主在调用任何工具之前必须取得用户的明确 同意。工具描述是远端一方写、您的模型读的文本——这正是不可信输入的定义,也是 “服务器说它是只读的”算不上一项安全控制的原因。
具体的先例是 CVE-2025-6514,于 2025 年 7 月 9 日公布,针对的是许多客户端用来
连到远程服务器的代理 mcp-remote。评分 9.6,它让一台恶意服务器可以通过 OAuth
流程中构造过的 authorization_endpoint 值,在发起连接的机器上实现操作系统命令
注入——影响 0.0.5 至 0.1.16 的版本,在 0.1.16 中修复。聊天里不需要批准任何东西:
连接本身就是全部攻击过程。远程服务器送来的一切都是您的软件要解析的数据,而连接
本身就是攻击面的一部分。
以上这些,都是为了够到真正住在别人云上的东西所付的代价——您的问题追踪系统、您的 CRM、您的日历。对它们来说这个代价合理,对已经躺在您磁盘上的文件来说就很奇怪, 这也是 Speak-Y 提供本地服务器而不是托管端点的原因。
它的 MCP 服务器是一个由您的客户端在您机器上启动的进程。读取不需要别的东西在跑:
搜索结果、文字记录、会议摘要和待办事项都直接来自同一台电脑上的资料库,不发令牌,
中间也没有转发。会改动东西的命令——给录音打标签、给发言人命名、分享到团队频道
——走的是正在运行的应用,并且会向您的客户端声明为会改动数据,所以客户端会先
询问,同时记录在您也可以把它们关掉的地方。在服务器参数里加上 --read-only,意味着那些
会改动的命令根本不会发布给该客户端——这比一句承诺守规矩的描述是更强的保证。安装
只需从设置 → 集成一键完成,在包括 Free 在内的所有套餐上都免费。
这笔交换是双向的:本地服务器无法服务浏览器标签页里的 ChatGPT,也只在应用运行的 地方运行。如果这个限制要紧,接下来该读的对比是 到底哪些客户端能启动本地服务器; 而如果问题是连接之后该允许助手改动什么, 写入权限的界线划在哪里讲的就是这个。 MCP 概览列出了 Speak-Y 的服务器提供哪些能力。
本地服务器是您自己机器上的一个程序,由客户端启动,并通过标准输入输出与它对话——您交出的是一行命令,不会发放任何令牌。远程服务器是别人运营的一个 HTTPS 端点:您交出的是一份凭证,通常是 OAuth 2.1 的访问令牌,而工具触及的数据会流向那位运营方的基础设施。
按 MCP 的授权规范,令牌绑定到一台服务器和一组 scopes。客户端必须在授权请求和令牌请求中都发送指明该服务器的 RFC 8707 资源标识,服务器则必须验证令牌是发给自己的,不得接受或转发任何其他令牌。这挡住了把令牌拿到别的服务上重放的做法。至于运营方拿它的工具代您取回的数据做什么,这一条什么都没说。
要在两个地方做,而多数人只做了第一个。在助手里移除连接器,删掉的是客户端那份令牌副本;记录在您用来授权的那个服务里的 OAuth 授权是另一个对象,通常仍然存在。Anthropic 自己的指引说,撤销权限的方式是在 Claude 的设置里断开连接器,或者在第三方服务的安全设置里操作。请在连接之前就找到提供方的已连接应用页面,而不是事后再找。
不是。注册表核实的是命名空间归属——io.github.* 形式的名字通过 GitHub 认证核实,基于域名的名字通过 DNS 或 HTTP 验证核实——这证明发布者控制着那个名字。它的章程把对服务器实现进行排名或挑选明确列为范围之外,并说明该注册表是一份元数据目录,不是软件包注册表:它不托管、不分发、也不执行服务器代码。
只能读到您批准的 scopes 所触及的范围。风险在于 scopes 往往比任务更宽:一枚为整个邮箱或整个云盘签发的令牌,在授权存续期间对该服务器公开的每一个工具都可用。请读授权确认页,而不是宣传页;客户端若提供逐个工具的开关就用起来——Claude 的连接器设置允许逐个启用或停用工具,ChatGPT 的开发者模式则默认对写入操作要求确认。