在 VS Code 中使用 MCP 服务器

模型上下文协议(MCP)是一个开放标准,允许AI模型通过统一界面使用外部工具和服务。在 VS Code 中,MCP 服务器提供文件作、数据库或与外部 API 交互等任务的工具

MCP 服务器是 VS Code 中扩展聊天的三种方式之一,另外两者是内置工具和扩展贡献的工具。了解更多关于工具类型的介绍

本文将引导你如何搭建MCP服务器以及在Visual Studio Code中使用他们的工具。除了工具,MCP 服务器还可以提供资源提示交互应用

重要

你的组织可能已经禁用了VS Code中MCP服务器的使用,或者限制了你能使用的MCP服务器。如需更多信息,请联系您的管理层。

MCP是如何运作的?

MCP采用客户端-服务器架构:

  • MCP客户端(如VS Code)连接到MCP服务器,代表AI模型请求作
  • MCP服务器提供一个或多个工具,通过明确定义的接口暴露特定功能
  • 模型上下文协议定义了客户端与服务器之间通信的消息格式,包括工具发现、调用和响应处理

例如,文件系统MCP服务器可能提供读取、写入或搜索文件和目录的工具。GitHub的MCP服务器提供列出仓库、创建拉取请求或管理问题的工具。MCP服务器可以在你的机器上本地运行,也可以远程托管,VS Code支持这两种配置。

通过标准化这种交互,MCP消除了每个AI模型与工具之间定制集成的需求。这允许你通过在工作区中添加新的MCP服务器来扩展AI助手的功能。了解更多关于模型上下文协议规范的信息。

VS Code 中支持 MCP 功能

VS Code 支持以下 MCP 功能:

  • 传输工具

    • 本地标准输入/输出(标准)
    • 可流式HTTP (http)
    • 服务器发送事件(SSE)——遗留支持。
  • 特色

    • 工具
    • 提示
    • 资源
    • 引发
    • 采样
    • 认证
    • 服务器指令
    • 根源
    • MCP应用

添加一个MCP服务器

安装MCP服务器时,你可以选择将其安装在用户配置文件中或当前工作区中。工作区配置存储在.vscode/mcp.json档案。在源代码管理中包含,以便与团队共享相同的MCP服务器配置。

注意

本地MCP服务器可以在你的机器上运行任意代码。只添加来自可信来源的服务器,启动前检查发布者和服务器配置。VS Code 提示你在首次启动 MCP 服务器时确认你信任 MCP 服务器。阅读关于在VS Code中使用AI的安全文档,了解其影响。

扩展视图包含一个MCP服务器画廊,帮助你在VS Code中发现和安装MCP服务器。该画廊列出了来自 GitHub MCP 服务器注册表的 MCP 服务器。

从扩展视图安装MCP服务器:

  1. 打开扩展视图(⇧⌘X(Windows,Linux Ctrl+Shift+X)并进入@mcp在搜索字段中显示MCP服务器列表。

  2. 安装MCP服务器:

    • 在你的用户资料中:选择安装

    • 在你的工作区中:右键点击MCP服务器,选择在工作区安装(这会更新.vscode/mcp.json文件在你的工作区中)

  3. 要查看MCP服务器详情,请在列表中选择MCP服务器以打开详细信息页面。

添加MCP服务器的其他选项

你还有几个其他选项可以在VS Code中添加MCP服务器:

更新工作区的“mcp.json”文件

你可以通过更新工作区的.vscode/mcp.json档案。

重要

确保避免通过输入变量或环境文件硬编码敏感信息,比如API密钥和其他凭证。

要将MCP服务器添加到您的工作区:

  1. 创建或打开.vscode/mcp.json在你的工作区里。

  2. 在编辑器中选择添加服务器按钮,以添加新服务器的模板。VS Code 为 MCP 服务器配置文件提供了 IntelliSense。

    以下示例展示了如何配置GitHub远程MCP服务器。了解更多关于VS Code中MCP配置格式的信息。

    {
      "servers": {
        "github-mcp": {
          "type": "http",
          "url": "https://api.githubcopilot.com/mcp"
        }
      }
    }
    
  3. 或者,从命令面板中执行 MCP: Add Server 命令。按照提示选择 MCP 服务器类型,然后选择 Workspace 将服务器添加到.vscode/mcp.json在你的工作区里。

在用户配置文件中添加一个MCP服务器

要为所有工作区配置MCP服务器,你可以将服务器配置添加到用户配置文件中。这使你能够在多个项目中重复使用同一服务器配置。当你使用多个VS代码配置文件时,可以根据当前的配置文件在不同的MCP服务器配置间切换。

要将MCP服务器添加到用户配置文件:

  • 在命令面板中运行MCP:添加服务器命令,提供服务器信息,然后选择全局(Global)将服务器配置添加到你的配置文件中。

  • 或者,运行 MCP:打开用户配置命令,打开mcp.json文件在你的用户配置文件中。然后你可以手动将服务器配置添加到文件中。

MCP 服务器会在配置好的地方执行。如果你连接了远程设备,想让服务器在远程机器上运行,应该在远程设置(MCP:打开远程用户配置)或工作区设置中定义。用户设置中定义的 MCP 服务器总是本地执行。

向开发容器添加MCP服务器

MCP服务器可以通过开发容器配置devcontainer.json文件。这允许你将MCP服务器配置纳入容器化开发环境。

要在开发容器中配置MCP服务器,请将服务器配置添加到自定义 VScode.mcp章节:

{
  "image": "mcr.microsoft.com/devcontainers/typescript-node:latest",
  "customizations": {
    "vscode": {
      "mcp": {
        "servers": {
          "playwright": {
            "command": "npx",
            "args": ["-y", "@microsoft/mcp-server-playwright"]
          }
        }
      }
    }
  }
}

当开发容器创建时,VS Code 会自动将 MCP 服务器配置写入远程服务器mcp.json文件,使其在你的容器化开发环境中可用。

自动发现MCP服务器

VS Code 可以自动检测并重用来自其他应用程序(如 Claude Desktop)的 MCP 服务器配置。

chat.mcp.discovery.enabled
  • 在VS代码中打开
  • 在VS Code Insiders中开放
设置中,您可以选择一个或多个工具来发现他们的MCP服务器配置。

从命令行安装MCP服务器

你也可以使用 VS Code 命令行界面,将 MCP 服务器添加到用户配置文件或工作区中。

要将MCP服务器添加到用户配置文件,请使用--加法-MCPVS Code 命令行选项,并以以下形式提供 JSON 服务器配置{\“name\”:\“server-name\”,\“command\”:...}.

code --add-mcp "{\"name\":\"my-server\",\"command\": \"uvx\",\"args\": [\"mcp-server-fetch\"]}"

配置格式

MCP服务器配置保存在mcp.jsonJSON 文件(mcp.json).

配置结构

配置文件有两个主要部分:

  • “服务器”:{}: 包含MCP服务器及其配置列表——根据服务器类型,需要不同的字段。

  • “输入”: []:用于敏感信息如API密钥的可选占位符。

你可以在服务器配置中使用预定义变量,例如引用工作区文件夹(${workspaceFolder}).

标准I/O(标准)服务器

对于通过标准输入和输出流通信的服务器,可以使用此配置。这是本地运行的MCP服务器最常见的类型。

场地 必修 描述 示例
类型 是的 服务器连接类型 “stdio”
指挥 是的 命令启动服务器可执行文件。必须在你的系统路径上可用,或者包含其完整路径。 “NPX”,“节点”,“Python”,“docker”
args 传递给命令的参数数组 [“server.py”、“--port”、“3000”]
环境 服务器环境变量 {“API_KEY”: “${input:api-key}”}
envFile 路径到环境文件以加载更多变量 “${workspaceFolder}/.env”
注释

在使用 Docker 配合 stdio 服务器时,不要使用 detach 选项 (-d).服务器必须在前景运行以与 VS Code 通信。

示例本地服务器配置

本示例展示了基础本地MCP服务器的最小配置,使用NPX:

{
  "servers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    }
  }
}

HTTP 和服务器发送事件(SSE)服务器

对于通过HTTP通信的服务器,使用该配置。VS Code 首先尝试 HTTP 流传输,如果不支持 HTTP 则退回到 SSE。

场地 必修 描述 示例
类型 是的 服务器连接类型 “http”,“SSE”
网址 是的 服务器的网址 “http://localhost:3000”,“https://api.example.com/mcp”
头部 用于认证或配置的HTTP头 {“授权”:“持有者 ${input:api-token}”}

除了网络上的服务器外,VS Code 还可以通过指定 socket 或 pipe 路径的形式,连接到监听 Unix 套接字或 Windows 命名管道上的 HTTP 流量的 MCP 服务器unix:///path/to/server.sockpipe:///pipe/named-pipe在Windows上。您可以通过使用URL片段来指定子路径,例如:unix:///tmp/server.sock#/mcp/subpath.

远程服务器配置示例

此示例展示了无认证远程MCP服务器的最小配置:

{
  "servers": {
    "context7": {
      "type": "http",
      "url": "https://mcp.context7.com/mcp"
    }
  }
}

敏感数据的输入变量

输入变量允许你定义配置值的占位符,避免在服务器配置中硬编码敏感信息如 API 密钥或密码。

当你用${input:variable-id},VS Code 在服务器首次启动时提示你输入该值。然后,该数值被安全存储,以便后续使用。了解更多关于VS Code中输入变量的信息

输入变量属性:

场地 必修 描述 示例
类型 是的 输入提示类型 “promptString”
身份证 是的 服务器配置中引用的唯一标识符 “API密钥”,“数据库-URL”
描述 是的 用户友好的提示文本 “GitHub个人访问令牌”
密码 隐藏输入(默认:false) 确实如此用于API密钥和密码
示例服务器配置与输入变量

本示例配置了一个需要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}"
      }
    }
  }
}

服务器命名规则

在定义MCP服务器时,请遵循以下服务器名称的命名规范:

  • 服务器名称用camelCase,比如“uiTesting”或“githubIntegration”
  • 避免使用空白或特殊字符
  • 为每个服务器使用独特的名称以避免冲突
  • 使用反映服务器功能或品牌的描述性名称,如“github”或“database”

在聊天中使用MCP工具

添加MCP服务器后,你可以在聊天中使用它提供的工具。MCP工具的工作原理类似于VS Code中的其他工具:它们可以在使用代理时自动调用,也可以在提示中明确引用。

在聊天中使用MCP工具:

  1. 在聊天视图中打开工具选择器,选择客服允许使用的工具。MCP 工具按 MCP 服务器分组。

  2. 工具会根据工具描述和当前任务自动调用。比如,安装GitHub MCP服务器,然后问“列出我的GitHub问题”。

  3. 你可以在提示词中直接输入 MCP 工具,输入后加上工具名称。#

了解更多关于在聊天中使用工具的信息,包括如何管理工具审批、使用工具选择器和创建工具集。

随着MCP服务器的增加,工具列表会变得越来越长。你可以将相关工具分组成工具集,方便管理和参考。

了解更多关于如何创建和使用工具集的信息。

清除缓存的MCP工具

当 VS Code 首次启动 MCP 服务器时,它会发现服务器的能力和工具。然后你可以在聊天中使用这些工具。VS Code 缓存了 MCP 服务器的工具列表。要清除缓存工具,请使用命令面板中的 MCP: Reset Cached Tools 命令。

其他MCP功能

除了工具,MCP服务器还可以提供上下文资源、常见任务提示和交互应用。

利用MCP资源

MCP服务器可以直接访问资源,你可以在聊天提示中作为上下文。例如,文件系统MCP服务器可以让你访问文件和目录,或者数据库MCP服务器可能提供数据库表访问。

要在聊天提示中添加MCP服务器的资源:

  1. 在聊天视图中,选择添加上下文>MCP资源

  2. 从列表中选择一种资源类型,并提供可选的资源输入参数。

要查看MCP服务器可用资源列表,可以使用MCP: Browse Resources命令或使用MCP: List Servers>Browse Resources命令查看特定服务器的资源。

使用MCP提示

MCP服务器可以为常见任务提供预配置的提示,你可以在聊天中使用斜杠命令调用。要在聊天中调用MCP提示,输入聊天输入字段,然后输入提示名称,格式为/mcp.servername.promptname.可选地,MCP提示可能会要求你输入额外的参数。

使用MCP应用

MCP 应用使 MCP 工具能够返回直接在聊天中渲染的交互式 UI 组件。工具可以展示拖拽列表、可视化、表单及其他互动元素,而非仅显示文本回复。当MCP服务器支持应用时,界面会在线出现在聊天对话中,方便你与它互动,更高效地完成任务。

想了解更多关于 VS Code 中 MCP 应用的支持,请参阅我们的博客文章。

管理MCP服务器

VS Code 提供了多种选项来发现、配置和管理你的 MCP 服务器。

管理已安装的MCP服务器

你可以在已安装的MCP服务器上执行各种作,比如启动或停止服务器、查看服务器日志、卸载服务器等。

要在MCP服务器上执行这些作,请使用以下任一选项:

  • 在扩展视图中,右键点击 MCP 服务器 - 安装部分的服务器或选择齿轮图标。

    扩展视图中显示MCP服务器的截图。

  • 打开mcp.json配置文件,并在编辑器(代码镜头)中访问内联作。

    MCP服务器配置,并用镜头管理服务器。

    使用MCP:打开用户配置MCP:打开工作区文件夹配置命令访问MCP服务器配置。

  • 从命令面板中运行 MCP: List Servers 命令,选择服务器,然后从列表中选择一个动作。

    命令面板中显示MCP服务器作的截图。

自动启动MCP服务器

当你添加MCP服务器或更改配置时,VS Code需要(重启)服务器以发现它提供的工具。

你可以配置 VS Code 在检测到配置变更时自动重启 MCP 服务器,方法是使用

chat.mcp.autoStart
  • 在VS代码中打开
  • 在VS Code Insiders中开放
环境(实验)。

MCP 服务器信任

MCP服务器可以在你的机器上运行任意代码。只添加来自可信来源的服务器,启动前检查发布者和服务器配置。阅读关于在VS Code中使用AI的安全文档,了解其影响。

当你在工作空间中添加MCP服务器或更改配置时,启动前需要确认你信任该服务器及其功能。VS Code 会在你第一次启动服务器时显示一个对话框,确认你是否信任服务器。在对话框中选择指向MCP服务器的链接,可在单独窗口中查看MCP服务器配置。

显示MCP服务器信任提示的截图。

如果你不信任服务器,它就不会启动,聊天请求会继续,不需要使用服务器提供的工具。

你可以通过命令面板中的 MCP: Reset Trust 命令来重置你的 MCP 服务器的信任。

重要

如果你直接从mcp.json文件中没有提示你信任服务器配置。

同步各设备间的MCP服务器

启用设置同步后,你可以在不同设备之间同步设置和配置,包括MCP服务器配置。这使你能够保持一致的开发环境,并在所有设备上访问相同的MCP服务器。

要启用 MCP 服务器与设置同步,请从命令面板中执行“设置同步:配置”命令,并确保 MCP 服务器包含在同步配置列表中。

排查和调试MCP服务器

MCP输出日志

当 VS Code 遇到 MCP 服务器问题时,会在聊天视图中显示错误指示。

MCP服务器错误

在聊天视图中选择错误通知,然后选择显示输出选项查看服务器日志。或者,在命令面板中运行 MCP:列表服务器,选择服务器,然后选择显示输出

MCP服务器错误输出

调试MCP服务器

你可以通过添加开发者MCP服务器配置的密钥。这是一个具有两个属性的对象:

  • 观看: 文件块模式用于监控文件变化,从而重启MCP服务器。
  • 调试: 允许您在MCP服务器上设置调试器。目前,VS Code 支持调试 Node.js 和 Python MCP 服务器。

想了解更多关于MCP开发模式的信息,请参阅MCP开发指南。

中央控制MCP访问

组织可以通过GitHub策略集中管理对MCP服务器的访问。了解更多关于MCP服务器的企业管理

常见问题解答

我能控制使用哪些MCP工具吗?

  • 使用代理时,在聊天视图中选择“工具”按钮,并根据需要开关特定工具。
  • 通过使用“添加上下文”按钮或输入“来添加特定工具到提示中。#
  • 为了更高级的控制,你可以在.github/copilot-instructions.md档案。例如,添加一条规则,比如“查询数据库时,使用只读MCP工具代替直接SQL”或“优先使用GitHub MCP服务器进行仓库作”来指导工具选择。

使用 Docker 时,MCP 服务器无法启动

验证命令参数正确,且容器没有处于分离模式运行(-d选项)。你也可以检查MCP服务器输出是否有错误信息(见故障排除)。

我收到一个错误,说“每个请求不能超过128个工具”。

由于模型限制,聊天请求一次最多可启用128个工具。如果你选择了超过128个工具,可以通过在聊天视图的工具选择器中取消选中部分工具或整个服务器来减少工具数量,或者确保启用虚拟工具(

GitHub.copilot.chat.virtualTools.threshold
  • 在VS代码中打开
  • 在VS Code Insiders中开放
).

截图显示聊天视图,在聊天输入中高亮工具图标,并显示工具快速选择,可以选择哪些工具处于激活状态。