VS Code、Zed 和 Windsurf 的 MCP 配置:文件到底在哪里

三个编辑器,对同一个问题给出三个不同的答案。VS Code 把 MCP 服务器放在名为 servers 的顶层键下面,Zed 把同一样东西叫作 context_servers,而 Windsurf——自 2026 年 6 月 2 日起改名为 Devin Desktop——用的是 mcpServers, 也就是其他多数客户端使用的那个键。键写错了,客户端会安静地启动,既没有任何 工具,也没有任何报错。

服务器本身并不改变。一个本地 MCP 服务器就是通过 stdio、用一条命令加若干参数 启动的程序,上述每个编辑器都以同样的方式运行同一个可执行文件。您在每个编辑器 里真正要做的,是把 commandargs 这两个值,登记进那个编辑器自己的配置 形状中。本文给出每个编辑器确切的文件、确切的键名和确切的验证步骤,全部于 2026 年 8 月 14 日对照各厂商文档核对。

如果协议本身对您还是新东西,可以先看 什么是 MCP 服务器,那里先讲词汇。如果您 用的是 Claude 或 Cursor,它们各有自己的教程,通常一键即可安装;本文谈的是那 三个不能一键安装的。

每个地方都一样的部分

任何本地 MCP 服务器都由同样的两个值来描述:

command = "/absolute/path/to/the/executable"
args    = ["--some-flag"]

要传的全部内容就是这些。绝对路径的重要性超出它的外表:进程是编辑器自己启动 的,往往不经过您的登录 shell,所以任何依赖 PATH 或 shell 别名的东西,在终端 里能用,在客户端里就会失败。请复制完整路径。

本文其余内容都是包装:这两个值放进哪个文件,以及包住它们的那个键叫什么。

VS Code:键是 servers,不是 mcpServers

VS Code 从一个名为 mcp.json 的文件读取 MCP 配置,它可能位于两个地方之一:

文件顶层放的是 servers,另外还有可选的 inputssandbox 小节。一个本地 服务器长这样:

{
  "servers": {
    "my-server": {
      "type": "stdio",
      "command": "/absolute/path/to/the/executable",
      "args": ["--mcp"]
    }
  }
}

从别的客户端迁过来的人会碰到两件意外的事。第一,这个键确实就是 servers—— 粘贴进来的 mcpServers 块不会被 VS Code 报成错误,它只是一个不被读取的键。 第二,VS Code 把单次聊天请求限制在 128 个已启用的工具以内,因此在注册了很多 服务器的机器上,可能要先关掉其中一些,您的服务器才够得着;执行这件事的地方 是 Chat 视图里的 Configure Tools 按钮。

还有一种更通用的形式:对于与 Agent Host 及其他 Copilot 工具共享的配置, VS Code 记载了工作区的 .mcp.json 或用户的 ~/.copilot/mcp-config.json, Agent Host 会原生读取它们。

如何验证:Command Palette 运行 MCP: List Servers,选中您的 服务器,再用 Show Output 读它的日志。启动失败的服务器会在那里说明情况, 通常还会给出它无法执行的那个路径。

Zed:同一件事的另一个名字

Zed 把 MCP 服务器称为上下文服务器,设置里的键也跟着这个叫法: context_servers。不要去满处找路径,直接用 zed: open settings file 动作 打开设置文件,然后加入:

{
  "context_servers": {
    "my-server": {
      "command": "/absolute/path/to/the/executable",
      "args": ["--mcp"],
      "env": {}
    }
  }
}

远程服务器在同一个块里使用 url 和可选的 headers,这让 context_servers 成了两种传输方式共处的唯一位置。Zed 也有走界面的路径:Settings → AI → MCP Servers,然后 Add Server → Add Local Server,它会替您写下同样的条目。 许多常见服务器还被打包成 Zed 扩展,可以从那个页面安装——但随桌面应用一起 分发的服务器不会出现在那份列表里,对它们来说,上面的手动条目才是正路。

如何验证: 打开 Settings → AI → MCP Servers,看您那台服务器旁边的 指示灯。绿点加上 Server is active 的提示,说明握手成功了。

Windsurf 现在是 Devin Desktop,文件位置也跟着变了

这是网上多数指南还没跟上的部分。Cognition 于 2026 年 6 月 2 日把 Windsurf 更名为 Devin Desktop,以一次普通的在线更新发布——不用重装,没有迁移向导, 套餐、扩展和快捷键都原封不动地保留了下来。旧的市场域名现在跳转到 devin.ai,文档位于 docs.devin.ai

对 MCP 来说,实际后果是现在有两个可能的目的地,哪一个才对,取决于您在跟哪个 智能体说话:

智能体 MCP 配置文件 顶层键
Cascade(旧) ~/.codeium/windsurf/mcp_config.json mcpServers
Devin Local(现行) ~/.config/devin/mcp_config.json mcpServers

Cascade 的文档至今仍在描述 ~/.codeium/windsurf/ 这个路径——为了让大家逐步 迁移,它一直可用到 2026 年 7 月 1 日。它的继任者 Devin Local 是用 Rust 重写的版本,Cognition 称其令牌效率最多提升 30%,并支持子智能体,而且它是新 标签页里的默认智能体。Devin Local 不读 Cascade 那个文件;它使用 Devin CLI 的 配置,项目范围的服务器写进 .devin/mcp_config.json,带 API 密钥的个人服务器 写进被 gitignore 掉的 .devin/mcp_config.local.json

如果您几个月前加过一个服务器,而智能体现在看不见它了,最可能的原因就是这个: 文件没问题,是读它的那个智能体换了。

还有一个值得知道的上限:Cascade 把智能体在任一时刻可用的工具总数限制在 100 个。和 VS Code 一样,一份过于拥挤的配置会把您服务器的工具挤到够不着的地方, 而表面上看不出哪里坏了。

如何验证: 点击 Cascade 面板右上角的 MCPs 图标,打开 MCP 设置页面, 那里会列出每个服务器的工具,并且可以逐个开关。一个没有列出任何工具的服务器 就是没启动起来。

并排对照

VS Code Zed Devin Desktop(Windsurf)
文件 .vscode/mcp.json 或用户的 mcp.json 设置文件(zed: open settings file ~/.codeium/windsurf/mcp_config.json(Cascade)或 ~/.config/devin/mcp_config.json(Devin Local)
servers context_servers mcpServers
是否需要 type: stdio 需要 不需要 不需要
界面路径 MCP: Add Server Settings → AI → MCP Servers Cascade 面板里的 MCPs 图标
工具上限 每次请求 128 个 无文档说明 合计 100 个(Cascade)

值得读两遍的是键名那一行。其他每一项差异都会用报错自报家门,唯独写错的键 不会。

与 Claude 和 Cursor 有什么不同

Claude Desktop、Claude Code 和 Cursor 都使用 mcpServers,并且都把文件放在 可预期的位置——分别是应用支持目录下的 claude_desktop_config.json~/.claude.json~/.cursor/mcp.json。正是这种一致性,让那么多应用为这 三个客户端做了一键安装程序,然后就止步于此。

本文这三个编辑器各在一条轴上偏离:VS Code 偏在键名上,Zed 偏在键名和术语两 方面,Devin Desktop 则因改名而偏在文件位置上。这些都不难,但也都猜不出来—— 这就是为什么直接从厂商 README 里复制 JSON,那么频繁地造出一个启动后没有任何 工具的客户端。

手工编辑完这些文件中的任何一个之后,请重启编辑器。多数客户端在启动时读取 MCP 配置,而一份看着没错、却从未被重新读过的配置,正是“助手看不到我的数据” 这一症状最常见的单一原因。

在 Speak-Y 里是什么样

Speak-Y 把它的 MCP 服务器随 macOS 应用一起分发,所以没有什么要从 npm 安装的, 也不需要签发令牌。在设置 → 集成里,点击检测到的客户端旁边的安装, 就会按 Claude Code、Claude Desktop 和 Cursor 各自的格式写好配置。VS Code、 Zed 和 Devin Desktop 不在那份列表上——对它们,您把同样的两个值复制进上面那些 形状即可:

command = "/Applications/Speak-Y.app/Contents/MacOS/Speak-Y"
args    = ["--mcp"]

--read-only 作为第二个参数加上,服务器启动时就不会带任何会改动数据的 工具——当您希望编辑器里的智能体能搜索转写内容,却永远不去动标签、发言人姓名 或团队频道时,这很有用。一键安装刻意不加这个标志:只读是一个决定, 所以要由您明确地做出来。

助手随后拿到的是十三个工具:五个用于读取——跨录音、转写、摘要、待办事项和 标签进行搜索——以及八个会改动东西的,后者会向客户端声明为会修改数据,因此 客户端在调用前会先问一句。读取在本地针对您机器上的资料库进行;会改动的命令 经过正在运行的应用,并记录在您事后能读到的地方。这个服务器在所有套餐里 都免费。

这件事在编辑器里比在聊天应用里更要紧,原因是上下文。一个能读到周二那场通话 里究竟定了什么的编码智能体,不需要您把那个决定再敲一遍到提示词里——这正是 Cursor 与会议上下文讲过的同一个 论点,只要上面的配置到位,它对 VS Code 和 Zed 同样适用,不需要任何改动。

如果服务器已经登记好,助手却仍然什么都报不出来,原因几乎总是这四件事之一: 编辑器没有重启、应用更新后路径过期、工具上限已满,或者键名对这个客户端来说 是错的。在动手重写任何东西之前,先按这个顺序检查。

FAQ

VS Code 的 MCP 配置文件在哪里?

VS Code 把 MCP 服务器放在一个名为 mcp.json 的文件里——要么是工作区里的 .vscode/mcp.json,要么是用户配置文件中的 mcp.json,后者用 MCP: Open User Configuration 命令打开。和多数客户端不同,它的顶层键是 servers,不是 mcpServers。

Zed 里表示 MCP 服务器的 JSON 键是什么?

Zed 在设置文件中使用 context_servers,而不是 mcpServers。本地服务器的条目使用 command、args 和 env,远程服务器使用 url 和 headers。可以用 zed: open settings file 动作打开该文件,也可以通过 Settings → AI → MCP Servers 添加服务器。

Windsurf 现在还叫 Windsurf 吗?

不叫了。Cognition 于 2026 年 6 月 2 日把 Windsurf 更名为 Devin Desktop,以一次普通的在线更新发布,套餐、扩展和设置都原样保留。读取 ~/.codeium/windsurf/mcp_config.json 的智能体 Cascade 一直可用到 2026 年 7 月 1 日;它的继任者 Devin Local 改为读取 Devin CLI 的配置文件。

每个编辑器都需要一个不同的 MCP 服务器吗?

不需要。同一个 stdio 服务器可执行文件在每个客户端里都能用,区别只在于您把它登记进哪个文件,以及顶层键叫什么名字。command 和 args 只写一次,然后把这两个相同的值贴进每个编辑器自己的配置形状里。

怎么确认 MCP 服务器真的连上了?

每个客户端都有自己的指示方式:在 VS Code 里从 Command Palette 运行 MCP: List Servers,再用 Show Output 查看日志;在 Zed 里打开 Settings → AI → MCP Servers,找带 Server is active 提示的绿点;在 Devin Desktop 里打开 Cascade 面板中的 MCPs 图标,看服务器的工具是否列了出来。