如何一次定义 MCP 服务器,并在 Claude Code、Codex 和 OpenCode 中使用(跨所有机器)

一种实用的方法:不再把 MCP JSON 复制粘贴到三个不同的工具里,让各个提供商和机器拥有一致的工具集。

基于版本
CLI
0.2.17
预览 ref
a2c45c8

如果你曾经“认真”配置过 MCP 服务器,大概经历过这样的流程:

  • 把 MCP JSON 粘贴到 Claude Code
  • 把一份略有不同的 MCP JSON 粘贴到 Codex
  • 发现 OpenCode 用的是另一个位置
  • 在笔记本和服务器上再做一遍

这能用。

但这也是会话行为因所在机器不同而不同的原因。

你真正想要的是:

  • 工具只定义一次
  • 让它们一致可用
  • 同时让机器专属的工具保持机器专属

本指南讲的就是这套工作流。

简要总结

  1. 先确定你要用 MCP 做什么(浏览器自动化、GitHub、文档搜索、内部工具)。
  2. 常见的失败模式是配置漂移:不同机器或提供商上的 MCP JSON 不一样。
  3. 更好的模型是“一个工具库 + 明确的应用范围”。
  4. 在 Happier 中,你可以一次定义 MCP 服务器,检测现有的提供商 MCP 配置,预览某个会话实际可用的工具集,并把服务器应用到:
    • 所有机器
    • 一台机器
    • 一台机器上的一个工作区

问题所在

MCP 是个好主意,但简单粗暴的配置方式很脆弱:

  • 多个配置文件
  • 多台机器
  • 多个提供商

所以问题不是“我能不能运行 MCP?”

而是:

我能不能让工具集一致到足以信任它?

常见做法及其权衡

  • 到处复制粘贴 JSON:直到你忘了某台机器之前都能用。
  • 只在一个提供商上配置:那就失去了可移植性的意义。
  • 只按项目保留工具:某些情况下不错,但对 GitHub 这类通用工具很痛苦。

如果你第一次接触 Happier

如果你之前没见过 Happier:它是一款开源配套应用(移动端/网页/桌面),用于跨机器运行 Claude Code、Codex 和 OpenCode 等会话。

这里相关的是:它提供一个统一的地方来管理 MCP 服务器并一致地应用它们。

开始设置:

可行的工作流

1) 把工具当作一个库,而不是一堆 JSON

一旦你有不止一台机器,MCP 配置就成了基础设施。

所以把它当作一个库:

  • 已保存
  • 可审阅
  • 有范围

2) 用“已配置 / 已检测到 / 预览”来思考

在 Happier 中,MCP 服务器分为三个标签页:

  • 已配置(Configured):你在应用中管理的服务器
  • 已检测到(Detected):在提供商原生配置文件(Claude、Codex、OpenCode)中找到的服务器
  • 预览(Preview):某个后端 + 机器 + 工作区实际可用的工具集

预览是关键。

它回答的是:“这个会话实际能看到什么?”

3) 应用正确的范围:所有机器 / 一台机器 / 一个工作区

大多数漂移来自没有明确范围。

可行的规则:

  • 远程 HTTP/SSE 服务器 → 所有机器(All machines)
  • 通过 npx 安装的本地 stdio 服务器 → 机器(Machine,一台)
  • 项目本地的服务器 → 工作区(Workspace,一台机器上的一个)

4) 不要把机密放进 JSON(别再泄露令牌)

每次你把令牌直接粘贴进 MCP JSON,就会造成机密扩散:

  • 进入 shell 历史
  • 进入 dotfiles
  • 出现在截图里
  • 最终不小心进入某个仓库

更好的做法是:

  • 一个只保存一次机密的地方
  • 一种无需嵌入、就能在 MCP 配置中引用机密的方式
  • 一种在多台机器间安全复用的方式

Happier 为 MCP 服务器的请求头/环境变量支持三种值来源:

  • 已保存的机密(Saved Secrets,推荐)
  • 机器环境变量引用,如 ${MY_TOKEN}
  • 纯文本(除非确实不敏感,否则避免)

“已保存的机密”这个选项让多机器 MCP 轻松了很多。

机密只需绑定一次,MCP 服务器定义就能在各台机器上保持一致。

完整示例:带 Authorization 请求头的 GitHub MCP 服务器(已保存的密钥)

一个很常见的模式是远程 MCP 服务器(HTTP/SSE)需要:

  • Authorization: Bearer <token>

下面是从头到尾、完全不用把令牌粘贴进 JSON 的设置方法。

第 1 步:创建 GitHub 令牌

按所需的最小权限范围创建 GitHub 令牌(classic PAT 或 fine-grained 令牌)。

(需要哪些范围取决于你打算调用的 MCP 工具:仓库、issue、PR 等。)

第 2 步:把令牌保存为已保存的机密

在 Happier 中:

  • 设置(Settings)→ 已保存的机密(Saved Secrets)(或 设置(Settings)→ 机密(Secrets))
  • 新的机密(New secret)
  • 起一个你认得的名字,例如 github_pat_work
  • 粘贴令牌的值

现在这个值存放在 Happier 加密的设置存储中,而不是你的配置文件里。

第 3 步:在 Happier 中添加 GitHub MCP 服务器

在 Happier 中:

  • 设置(Settings)→ MCP 服务器(MCP servers)→ 添加服务器(Add server)
  • 选择 远程 HTTP(Remote HTTP)或 远程 SSE(Remote SSE)(取决于服务器支持哪种)
  • 起个名字,例如 github

然后设置:

  • 适用于(Applies to):通常是 所有机器(All machines)(因为远程服务器可移植)
第 4 步:用已保存的密钥设置 Authorization 请求头

在 MCP 服务器配置中添加一个请求头:

  • 请求头名称:Authorization
  • 请求头值:Bearer <your-saved-secret>

关键在于如何引用机密:

  • 不要粘贴令牌的值
  • 在请求头值字段中选择或引用你的已保存的机密(例如 github_pat_work)

在请求头编辑器中,你可以选择值来源:

  • 字面量(Literal,纯文本)
  • 已保存的密钥(Saved Secret)

选择 已保存的密钥 后,Happier 保存的是对机密的引用(而不是机密的值),并在测试或启动 MCP 服务器时于运行时解析它。

第 5 步:先测试,再预览
  • 用 测试(Test)确认 Happier 能够:
    • 解析已保存的机密引用,
    • 连接或启动服务器,
    • 并列出工具。
  • 用 预览(Preview)(后端 + 机器 + 工作区)确认你关心的会话中确实有 GitHub 工具。

如果测试成功,但预览显示该会话有 0 个工具,基本都是范围不匹配(所有机器 / 机器 / 工作区)。

(可选)为什么可行(实现细节)

在环境变量或请求头编辑器中选择 已保存的密钥 时,界面保存的是一个小的带类型引用(机密 ID),而不是机密本身。

所以你可以:

  • 在多台机器间复用同一个 MCP 服务器定义,而不用到处复制令牌
  • 在一个地方轮换机密的值,而不用碰 MCP JSON

使用时不需要知道内部类型名称,但这正是这个模型稳健的原因。

示例:需要环境变量的本地 stdio MCP 服务器

对于 stdio 服务器(本地命令),很多 README 会让你设置环境变量。

诀窍是避免变成“每个人都在 shell rc 文件里永久 export 机密”。

更好的模式是:

  • 把值作为已保存的机密保存一次
  • 把它绑定到该服务器所需的环境变量名

5) 定义自定义 MCP 服务器(本地 stdio)

Happier 支持本地命令 MCP 服务器(stdio)。

在 设置(Settings)→ MCP 服务器(MCP servers)→ 添加服务器(Add server) 中,你可以:

  • 粘贴一条命令行(Happier 会拆分命令和参数)
  • 选择范围(本地安装的通常选 机器(Machine))
  • 添加环境变量(优先用已保存的机密)

然后用 测试 确认它能启动并列出工具。

6) 定义自定义 MCP 服务器(远程 HTTP/SSE)

对于远程服务器:

  • 把范围设为 所有机器
  • 添加请求头(优先用已保存的机密)
  • 测试一次

7) 开始重要会话前,预览实际可用的工具集

如果你只从本指南中带走一个习惯,就选这个:

  • 用 预览 查看会话实际能拿到哪些工具

预览会合并显示:

  • 默认应用的、由 Happier 管理的 MCP 服务器
  • 针对该后端或上下文检测到的提供商原生 MCP 服务器
  • 可用但当前未应用的服务器

它把“这个会话为什么没有 GitHub 工具?”变成一个 10 秒就能回答的问题。

8) 信任服务器之前先测试

一个节省时间的小习惯:

  • 测试 MCP 服务器
  • 确认它能列出工具

这能尽早发现错误的命令行和缺失的安装。

为什么可行(以及什么会出问题)

这套设置可行,是因为它把通常纠缠在一起的三件事分开了:

  1. 定义(MCP 服务器是什么)
  2. 范围(应该在哪里应用)
  3. 机密(如何认证)

出问题时,通常是以下之一:

  • 范围不对(所有机器 / 机器)
  • 本地 stdio 服务器在该机器上没有安装
  • 机密无法解析(已保存的机密没有绑定、环境变量缺失)
  • 提供商原生的 MCP 配置遮盖了你预期的配置

故障排查

MCP 服务器无法启动

  • 检查命令行
  • 确认所选机器上存在该命令
  • 如果是 npx,确认该机器上安装了 Node 且可用

工具出现在“已配置”中,但不在会话中

  • 检查该后端 + 机器 + 工作区的 预览
  • 确认“适用于”的范围与该会话匹配

认证失败(401/403)

  • 用已保存的机密替换内联令牌
  • 确认请求头或环境变量正确引用了已保存的机密
  • 重新测试服务器

相关指南

mcptoolsclaudecodexopencodemulti-machine
最后更新: 2026-10-26