MCP 配置参考
本文档提供了 VS Code 中 MCP 服务器配置文件格式、相关命令和设置的参考。有关添加和管理 MCP 服务器的信息,请参阅 添加和管理 MCP 服务器。
配置文件
MCP 服务器配置存储在 mcp.json JSON 文件中。此文件可以位于您的工作区 (.vscode/mcp.json) 或您的用户配置文件中。VS Code 为该配置文件提供了 IntelliSense 支持。
配置结构
配置文件包含三个主要部分
-
"servers": {}:一个将服务器名称映射到其配置的对象。每个键是服务器名称,值是服务器配置对象。根据服务器类型的不同,所需的字段也有所差异。 -
"inputs": []:一个可选数组,用于定义 API 密钥等敏感信息的输入变量。 -
"sandbox": {}:一个可选对象,用于定义沙箱化服务器的文件系统和网络访问规则。请参阅 沙箱配置。仅适用于 macOS 和 Linux。
您可以在服务器配置中使用预定义变量,例如引用工作区文件夹 (${workspaceFolder})。
标准输入/输出 (stdio) 服务器
对于通过标准输入和输出流进行通信的服务器,请使用此配置。这是本地运行的 MCP 服务器最常见的类型。
| 字段 | 必需 | 描述 | 示例 |
|---|---|---|---|
type |
是 | 服务器连接类型 | "stdio" |
command |
是 | 启动服务器可执行文件的命令。必须在您的系统路径中可用或包含其完整路径。 | "npx", "node", "python", "docker" |
args |
否 | 传递给命令的参数数组 | ["server.py", "--port", "3000"] |
cwd |
否 | 服务器命令的工作目录。在工作区中运行时,默认为工作区文件夹。 | "${workspaceFolder}" |
env |
否 | 服务器的环境变量。值可以是字符串、数字或 null。 | {"API_KEY": "${input:api-key}"} |
envFile |
否 | 用于加载更多变量的环境文件路径 | "${workspaceFolder}/.env" |
dev |
否 | 用于监视文件更改和调试服务器的开发模式设置。请参阅 开发模式。 | {"watch": "src/**/*.ts"} |
sandboxEnabled |
否 | 在沙箱环境中运行服务器。仅在 macOS 和 Linux 上受支持。 | true |
将 Docker 与 stdio 服务器一起使用时,请勿使用分离选项 (-d)。服务器必须在前台运行才能与 VS Code 通信。
本地服务器配置示例
此示例展示了使用 npx 的基本本地 MCP 服务器的最小配置
{
"servers": {
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
}
}
沙箱配置
您可以为本地运行的 stdio MCP 服务器启用沙箱功能,以限制其对文件系统和网络的访问。沙箱化服务器只能访问您明确许可的文件系统路径和网络域。沙箱功能仅在 macOS 和 Linux 上提供。
要为服务器启用沙箱,请在其配置中设置 "sandboxEnabled": true。然后,定义一个顶级 sandbox 对象以指定文件系统和网络访问规则。sandbox 对象是 servers 和 inputs 的同级节点,其规则适用于所有沙箱化服务器。当沙箱化服务器需要当前规则未许可的访问权限时,请查看服务器输出中的错误消息,并相应地更新 sandbox 配置。
启用沙箱后,工具确认会被自动批准,因为服务器是在受控环境中运行的。
sandbox 对象支持以下属性
| 属性 | 类型 | 描述 |
|---|---|---|
filesystem.allowWrite |
string[] | 服务器被允许写入的文件路径。 |
filesystem.denyRead |
string[] | 服务器被禁止读取的文件路径。 |
filesystem.denyWrite |
string[] | 服务器被禁止写入的文件路径。 |
network.allowedDomains |
string[] | 服务器被允许访问的域名。支持通配符,例如 *.example.com。 |
network.deniedDomains |
string[] | 服务器被禁止访问的域名。 |
您可以在文件系统路径值中使用预定义变量,例如 ${workspaceFolder}。
沙箱配置示例
此示例启用了沙箱功能,并授予对工作区的写入访问权限,拒绝读取 .ssh 目录的权限,并允许访问特定域名
{
"servers": {
"myServer": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@example/mcp-server"],
"sandboxEnabled": true
}
},
"sandbox": {
"filesystem": {
"allowWrite": ["${workspaceFolder}"],
"denyRead": ["${userHome}/.ssh"]
},
"network": {
"allowedDomains": ["api.example.com", "*.cdn.example.com"]
}
}
}
HTTP 和服务器发送事件 (SSE) 服务器
对于通过 HTTP 通信的服务器,请使用此配置。VS Code 会首先尝试 HTTP 流传输,如果不支持 HTTP,则会回退到 SSE。
| 字段 | 必需 | 描述 | 示例 |
|---|---|---|---|
type |
是 | 服务器连接类型 | "http", "sse" |
url |
是 | 服务器的 URL | "https://:3000", "https://api.example.com/mcp" |
headers |
否 | 用于身份验证或配置的 HTTP 标头 | {"Authorization": "Bearer ${input:api-token}"} |
oauth |
否 | 用于与服务器进行身份验证的 OAuth 配置 | {"clientId": "example-client-id"} |
除了可通过网络访问的服务器外,VS Code 还可以通过在 Windows 上指定 unix:///path/to/server.sock 或 pipe:///pipe/named-pipe 形式的套接字或管道路径,连接到监听 Unix 套接字或 Windows 命名管道上 HTTP 流量的 MCP 服务器。您可以使用 URL 片段指定子路径,例如 unix:///tmp/server.sock#/mcp/subpath。
oauth 对象支持以下属性
| 属性 | 类型 | 必需 | 描述 |
|---|---|---|---|
clientId |
字符串 | 是 | 与服务器进行身份验证时使用的 OAuth 客户端 ID。 |
enterpriseManaged |
布尔值 | 否 | (预览) 使用 OAuth 身份断言授权授予 (ID-JAG),通过 mcp.enterpriseManagedAuth.idp 设置配置的企业单点登录 (SSO) 发行方进行身份验证。完成一次登录后,后续的企业托管服务器将静默连接。默认为 false。 |
当配置了 oauth 时,VS Code 会自动处理 OAuth 流程。首次连接到服务器时,会打开一个浏览器窗口进行授权。
远程服务器配置示例
此示例展示了无需身份验证的远程 MCP 服务器的最小配置
{
"servers": {
"context7": {
"type": "http",
"url": "https://mcp.context7.com/mcp"
}
}
}
带有 OAuth 的 HTTP 服务器示例
此示例展示了使用 OAuth 进行身份验证的 MCP 服务器的配置。首次使用时,VS Code 会打开一个浏览器窗口来完成 OAuth 流程。
{
"servers": {
"slack": {
"type": "http",
"url": "https://mcp.slack.com/mcp",
"oauth": {
"clientId": "example-client-id"
}
}
}
}
用于敏感数据的输入变量
输入变量允许您为配置值定义占位符,避免直接在服务器配置中硬编码 API 密钥或密码等敏感信息。
当您使用 ${input:variable-id} 引用输入变量时,VS Code 会在服务器首次启动时提示您输入该值。然后,该值将被安全地存储以供后续使用。在 VS Code 中详细了解输入变量。
每个输入变量都有一个 type,决定了 VS Code 如何提示输入该值。支持以下输入类型
promptString:打开一个输入框,要求用户输入自由文本值。pickString:显示一个选项列表供用户选择。command:运行命令并将结果用作输入值。
常用属性
| 字段 | 必需 | 描述 | 示例 |
|---|---|---|---|
type |
是 | 输入提示类型:promptString、pickString 或 command |
"promptString" |
id |
是 | 在服务器配置中引用的唯一标识符 | "api-key", "database-url" |
promptString 属性
| 字段 | 必需 | 描述 | 示例 |
|---|---|---|---|
描述 |
是 | 用户友好的提示文本 | "GitHub Personal Access Token" |
default |
否 | 输入的默认值 | "https://" |
password |
否 | 隐藏键入的输入 (默认:false) | 对于 API 密钥和密码设为 true |
pickString 属性
| 字段 | 必需 | 描述 | 示例 |
|---|---|---|---|
描述 |
是 | 用户友好的提示文本 | "Select an environment" |
options |
是 | 供选择的选项数组。每个选项都是一个字符串,或包含 label 和 value 属性的对象。 |
["dev", "prod"] |
default |
否 | 输入的默认值 | "dev" |
command 属性
| 字段 | 必需 | 描述 | 示例 |
|---|---|---|---|
command |
是 | 用于获取输入值的命令 ID | "myExtension.getApiKey" |
args |
否 | 传递给命令的参数。可以是字符串、数组或对象。 | { "scope": "global" } |
带有输入变量的服务器配置示例
此示例配置了一个需要 API 密钥的本地服务器
{
"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}"
}
}
}
}
开发模式
您可以通过在服务器配置中添加 dev 键来为 MCP 服务器启用开发模式。这是一个包含两个属性的对象
watch:一个 glob 模式或 glob 模式数组,用于监视文件更改以重启 MCP 服务器。适用于所有服务器类型。debug:使您能够使用 MCP 服务器设置调试器。目前,VS Code 支持调试 Node.js 和 Python MCP 服务器。仅适用于 stdio 服务器。
在 MCP 开发指南中了解有关 MCP 开发模式的更多信息。
服务器命名规范
定义 MCP 服务器时,请遵循以下服务器命名规范
- 使用驼峰式命名法 (camelCase) 命名服务器,例如 "uiTesting" 或 "githubIntegration"
- 避免使用空格或特殊字符
- 每个服务器使用唯一名称以避免冲突
- 使用能够反映服务器功能或品牌的描述性名称,例如 "github" 或 "database"
命令
下表列出了命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中可用的 MCP 相关命令。
| 命令 | 描述 |
|---|---|
| MCP: Add Server (添加服务器) | 将新的 MCP 服务器添加到您的工作区或用户配置文件中。 |
| MCP: Browse MCP Servers (浏览 MCP 服务器) | 在扩展视图中打开 MCP 服务器库。 |
| MCP: Browse Resources (浏览资源) | 浏览 MCP 服务器提供的资源。 |
| MCP: Install Server from Manifest (从清单安装服务器) | 从 MCP 清单文件安装 MCP 服务器。 |
| MCP: List Servers (列出服务器) | 列出所有已配置的 MCP 服务器,并执行诸如启动、停止、重启或显示输出等操作。 |
| MCP: Open Remote User Configuration (打开远程用户配置) | 打开远程环境的 mcp.json 文件。 |
| MCP: Open User Configuration (打开用户配置) | 打开您用户配置文件中的 mcp.json 文件。 |
| MCP: Open Workspace Folder MCP Configuration (打开工作区文件夹 MCP 配置) | 打开工作区中的 .vscode/mcp.json 文件。 |
| MCP: Reset Cached Tools (重置缓存的工具) | 清除 MCP 服务器的缓存工具列表。当服务器的工具发生变化时使用此项。 |
| MCP: Reset Trust (重置信任) | 重置 MCP 服务器的信任决策,在下次启动时需要重新确认。 |
| MCP: Show Installed Servers (显示已安装的服务器) | 显示所有已安装 MCP 服务器的列表。 |
设置
有关 VS Code AI 设置的完整列表,请参阅 AI 设置参考。以下设置是 MCP 服务器特有的。
| 设置 | 描述 |
|---|---|
| chat.mcp.access 此设置由组织级别管理。请联系您的管理员进行更改。 | 管理可以在 VS Code 中使用的 MCP 服务器。 |
| chat.mcp.discovery.enabled | 配置从其他应用程序自动发现 MCP 服务器配置。 |
| chat.mcp.autostart (实验性) | 检测到配置更改时自动启动 MCP 服务器。 |
| chat.mcp.serverSampling | 配置哪些模型向 MCP 服务器公开以进行采样(在后台发出请求)。 |
| chat.mcp.apps.enabled (实验性) | 启用或禁用 MCP 应用程序,即 MCP 服务器提供的丰富用户界面。 |