VS Code MCP 配置教程:为 GitHub Copilot Chat 添加 MCP 服务器
VS Code MCP 配置指南:从 @mcp 画廊安装服务器,编写 .vscode/mcp.json 或 .mcp.json,用 inputs 安全保存密钥,通过 OAuth 登录远程服务器,并排查常见错误。
如何在 VS Code 中添加 MCP 服务器
在 VS Code 中添加 MCP 服务器最快的方式是内置画廊:打开扩展视图,搜索 @mcp,点击 Install。画廊里没有的服务器,可以在命令面板运行 MCP: Add Server,或者自己编辑配置文件:.vscode/mcp.json(服务器写在 servers 下)或可移植的 .mcp.json(服务器写在 mcpServers 下)。之后,服务器的工具就会出现在 GitHub Copilot Chat 的 Agent 中。
本文内容均对照 VS Code 官方文档核实:添加和管理 MCP 服务器以及 MCP 配置参考。想找服务器试试?浏览 MCP 服务器目录。
速查表
| 任务 | 方法 |
|---|---|
| 从画廊安装 | 扩展视图,搜索 @mcp,Install(或右键 Install in Workspace) |
| 引导式配置 | 命令面板,MCP: Add Server |
| 工作区配置(VS Code 格式) | .vscode/mcp.json,顶层 servers |
| 工作区配置(可移植格式) | 工作区根目录的 .mcp.json,顶层 mcpServers |
| 用户配置 | MCP: Open User Configuration |
| 启动、停止、查看日志 | MCP: List Servers,选择服务器 |
| 开关单个工具 | 聊天输入框中的 Configure Tools |
| 通过命令行安装 | code --add-mcp '...json...' |
| 清除过期工具 | MCP: Reset Cached Tools |
第 1 步:从 MCP 画廊安装
VS Code 在扩展视图中内置了 MCP 服务器画廊:
- 打开扩展视图,在搜索框输入
@mcp(例如@mcp playwright)。 - 点击 Install 把服务器添加到用户配置,或右键选择 Install in Workspace 把它写入
.vscode/mcp.json。 - 出现提示时,确认你信任该服务器。VS Code 会启动它并发现它的工具。
- 打开 Chat 视图,让它做一件服务器能做的事,例如对 Playwright MCP 服务器说"打开 code.visualstudio.com 并截图"。
通过 MCP: Add Server → Browse MCP Servers 也能进入同一个画廊。
第 2 步:手动配置 mcp.json
对于画廊之外的服务器,或者要和团队共享配置,就需要自己写配置文件。VS Code 读取四个位置:
| 作用域 | 文件 | 顶层键 | 适用场景 |
|---|---|---|---|
| 工作区 | 根目录的 .mcp.json | mcpServers | 与团队及其他 Copilot 工具共享 |
| 工作区 | .vscode/mcp.json | servers | VS Code 专属功能:输入变量、开发模式、沙箱 |
| 用户 | ~/.copilot/mcp-config.json(或 $COPILOT_HOME/mcp-config.json) | mcpServers | 与 Copilot CLI 共享的个人服务器 |
| 用户配置文件 | 配置文件中的 mcp.json(MCP: Open User Configuration) | servers | 特定于某个配置文件的服务器 |
文档现在推荐用工作区根目录的 .mcp.json 来共享服务器,因为同一个文件在其他工具里也能用。.vscode/mcp.json 仍然是支持 VS Code 额外功能的格式,所以本文的示例都用它。两种文件都可以提交到版本控制,但不要包含密钥。
一个本地(stdio)服务器和一个远程(HTTP)服务器
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp"
},
"memory": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
}
}
第一个条目是远程的 GitHub MCP 服务器,第二个在本地运行 Memory MCP 服务器。在可移植的 .mcp.json 中,同样的条目放在 mcpServers 而不是 servers 下。
字段一览:
- stdio:
type("stdio")、command、args、cwd、env、envFile,以及dev和sandboxEnabled。 - HTTP/SSE:
type("http"或"sse")、url、headers、oauth。使用"http"时,VS Code 会先尝试 Streamable HTTP,服务器不支持时再回退到 SSE。
command 必须在 PATH 中或写成完整路径。如果用 Docker 运行服务器,不要加后台运行参数(-d):stdio 服务器必须保持在前台。VS Code 会为这些文件提供 IntelliSense,字段名拼错会立即提示。
第 3 步:用输入变量保护密钥
在已提交的 mcp.json 中硬编码 API Key 是最典型的错误。在 .vscode/mcp.json 中你可以声明 inputs:服务器第一次启动时 VS Code 会提示你输入值,然后安全地保存起来。
{
"inputs": [
{
"type": "promptString",
"id": "perplexity-key",
"description": "Perplexity API Key",
"password": true
}
],
"servers": {
"perplexity": {
"type": "stdio",
"command": "npx",
"args": ["-y", "server-perplexity-ask"],
"env": {
"PERPLEXITY_API_KEY": "${input:perplexity-key}"
}
}
}
}
输入类型有 promptString(自由文本;password: true 会隐藏输入内容)、pickString(从 options 列表中选择)和 command(取某个 VS Code 命令的结果)。输入变量也可以用在请求头里,例如 "Authorization": "Bearer ${input:api-token}"。
其他做法:用 "envFile": "${workspaceFolder}/.env" 让 stdio 服务器读取 dotenv 文件,并在路径中使用 ${workspaceFolder} 等预定义变量。注意格式限制:inputs、envFile 和开发模式只在 .vscode/mcp.json 和用户配置文件的 mcp.json 中有效,在可移植的 .mcp.json 中无效。另外,需要 ${input:...} 值的服务器不会被转发给 Copilot harness 会话,后者直接读取可移植格式的文件。
第 4 步:远程服务器认证
大多数托管服务器使用 OAuth。当服务器需要认证时,VS Code 会在第一次连接时打开浏览器窗口并自动完成流程。如果服务商要求使用预先注册的客户端,添加一个 oauth 对象:
{
"servers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"clientId": "example-client-id"
}
}
}
}
对于使用 API Key 的服务器,用输入变量把 Key 放进 headers。企业还可以设置 "enterpriseManaged": true(预览版),通过 SSO 身份提供方登录。MCP OAuth 的底层原理见我们的 MCP 认证指南。
第 5 步:在 Copilot Chat 中使用工具
服务器运行后,它的工具就能在 Chat 视图中被 Agent 使用。你可以:
- 让 Agent 自己选择。 它会按需调用工具并显示审批提示;展开工具详情检查输入后点击 Allow。
- 直接引用工具:在聊天输入框中输入
#并选择工具。 - 开关工具:使用聊天输入框中的 Configure Tools,让 Agent 只看到当前任务需要的工具。
128 个工具的上限。 一次聊天请求最多只能启用 128 个工具。如果看到"Cannot have more than 128 tools per request",在工具选择器中取消勾选部分工具或整个服务器,或者通过 github.copilot.chat.virtualTools.threshold 设置开启虚拟工具,自动对大量工具进行分组。工具越少、越相关,Agent 的选择也越准确;参见 MCP 工具发现。
VS Code 中的 MCP 服务器不只提供工具,还可以提供 resources、prompts 和交互式的 MCP Apps。
添加服务器的其他方式
命令行:
code --add-mcp "{\"name\":\"my-server\",\"command\": \"uvx\",\"args\": [\"mcp-server-fetch\"]}"
安装链接。 服务器作者可以发布 vscode:mcp/install?... 链接:把 JSON 配置(name、command、args 等)进行 URL 编码后拼接在后面。点击链接会打开 VS Code 的安装流程。
复用其他应用的配置。 chat.mcp.discovery.enabled 设置可以让 VS Code 读取已在 Claude Desktop、Cursor、Windsurf 或 Copilot CLI 中配置好的服务器。Copilot CLI 的发现默认开启,其他默认关闭。
Dev Container。 把服务器写在 devcontainer.json 的 customizations.vscode.mcp.servers 下,VS Code 会把它们写入容器内的配置。
设置同步。 运行 Settings Sync: Configure 并勾选 MCP Servers,即可在多台设备间同步配置。
信任与沙箱
本地 MCP 服务器能以你的权限运行任意代码。VS Code 提供了两道防线:
- 信任提示。 工作区服务器继承工作区信任(Workspace Trust),在受限模式下不会启动;来自其他来源的服务器在首次启动或配置变更时会请求信任。MCP: Reset Trust 可以清除这些决定。
- 沙箱(macOS 和 Linux)。 在 stdio 服务器上设置
"sandboxEnabled": true,并用sandbox对象只允许写入特定文件夹、只允许访问特定域名。
更完整的清单见 MCP 安全最佳实践。
VS Code MCP 故障排查
服务器出错时,Chat 视图会显示错误标记。点击它并选择 Show Output,或者运行 MCP: List Servers,选中服务器后选择 Show Output 查看日志。
| 现象 | 解决办法 |
|---|---|
| 服务器始终不启动 | 工作区处于受限模式,或你拒绝了信任提示。信任该工作区,或运行 MCP: Reset Trust。 |
command not found 或 ENOENT | 命令不在 VS Code 的 PATH 中。使用 npx、uvx 或 python 的完整路径。 |
| 基于 Docker 的服务器卡住 | 从 docker run 参数中去掉 -d;stdio 需要容器在前台运行。 |
| 工具缺失或已过期 | 在 MCP: List Servers 中重启服务器,然后运行 MCP: Reset Cached Tools。 |
| "Cannot have more than 128 tools per request" | 在 Configure Tools 中取消勾选工具,或开启虚拟工具。 |
| 服务器在聊天中可用,但在 Copilot harness 会话中不可用 | 它使用了 ${input:...}。把它移到 .mcp.json,并换一种方式传递密钥。 |
| 远程服务器返回 401 | 未登录或请求头的值错误。查看服务器的输出日志,完成 OAuth 提示,或修正 headers 中的 Token。 |
如果日志看不出问题,用 MCP Inspector 单独测试服务器。
下一步
- 在 MCP 服务器目录中为你的技术栈找服务器:GitHub、Playwright 和 Context7 是编程场景中常见的首选。
- 还在用其他编辑器?对比一下 Cursor MCP 配置和 Claude Code MCP。
- 想在 VS Code 中用本地模型调用 MCP 工具?参见 MCP 与 Ollama。
常见问题
VS Code 的 MCP 配置文件在哪里?
- 工作区服务器写在 .vscode/mcp.json(servers 下)或工作区根目录的可移植 .mcp.json(mcpServers 下)。用户级服务器在配置文件的 mcp.json 中,可以用「MCP: Open User Configuration」打开。
VS Code 能直接使用我在 Claude Desktop 或 Cursor 中配置好的 MCP 服务器吗?
- 可以。开启 chat.mcp.discovery.enabled 设置并选择来源,例如 Claude Desktop、Cursor、Windsurf 或 Copilot CLI。Copilot CLI 的发现默认开启,其他默认关闭。
如何在 VS Code 中给 MCP 服务器传 API Key 而不硬编码?
- 在 .vscode/mcp.json 中声明一个 type 为 promptString、password 为 true 的 input,然后在 env 或 headers 中用输入变量语法(input: 加上该 input 的 id)引用它。VS Code 只会提示一次,并安全地保存该值。
VS Code 一次最多能使用多少个 MCP 工具?
- 一次聊天请求最多可启用 128 个工具。达到上限时,可在「Configure Tools」中取消勾选部分工具,或通过 github.copilot.chat.virtualTools.threshold 设置开启虚拟工具。