在 Visual Studio 中使用 MCP 服务器(预览版)

模型上下文协议(MCP)是一种开放标准,使 AI 模型能够通过统一接口与外部工具和服务进行交互。 在 Visual Studio 中,MCP 支持通过允许将任何 MCP 兼容的服务器连接到代理编码工作流来增强 GitHub Copilot 的代理模式。 本文介绍如何在 Visual Studio 中设置 MCP 服务器和使用具有代理模式的工具。

先决条件

MCP 和 Visual Studio 如何扩展 GitHub Copilot 的代理?

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

例如,文件系统 MCP 服务器可能提供用于读取、写入或搜索文件和目录的工具。 GitHub 的官方 MCP 服务器 提供了用于列出存储库、创建拉取请求或管理问题的工具。 MCP 服务器可以在计算机本地运行,也可以远程托管,Visual Studio 支持这两种配置。

通过标准化这种交互,MCP 无需在每个 AI 模型和每个工具之间实现自定义集成。 这样,只需将新的 MCP 服务器添加到工作区,即可扩展 AI 助手的功能。 详细了解模型上下文协议规范。

GitHub MCP 服务器的配置示例

  1. 创建新文件: <SOLUTIONDIR>\.mcp.json. 建议使用 Visual Studio 编辑此文件,以便自动应用其 JSON 架构。
  2. 将以下内容粘贴到 .mcp.json 文件中
{
  "inputs": [
    {
      "id": "github_pat",
      "description": "GitHub personal access token",
      "type": "promptString",
      "password": true
    }
  ],
  "servers": {
    "github": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_pat}"
      }
    }
  }
}
  1. 获取 GitHub 帐户的个人访问令牌

  2. 在 Visual Studio 中,单击 Ask GitHub Copilot Chat 窗口中的下拉列表,然后选择 Agent

    显示 Copilot 代理模式选择器的屏幕截图。

  3. 出现提示时,将个人访问令牌粘贴到对话框中。

    显示输入个人访问令牌的屏幕截图。

  4. 选择要使用的工具,例如 list_issues

    显示 MCP GitHub 工具的屏幕截图。

  5. 尝试示例提示: list issues assigned to me on GitHub

  6. Copilot 请求允许使用 MCP 服务器提供的工具,请选择您希望使用的范围然后点击“允许”

    显示代理工具确认选项的屏幕截图。

支持的 MCP 功能

Visual Studio 支持用于 MCP 服务器传输的本地标准输入/输出(stdio)、服务器发送的事件(sse)和可流式传输 HTTP(http)。 目前,在三个 基元 (工具、提示、资源)中,服务器只能为 Copilot 的代理模式提供工具。 可以通过列表更改事件动态更新工具的清单和描述。 Visual Studio 使用 roots(spec) 为服务器提供当前解决方案文件夹。

查找 MCP 服务器

MCP 的官方服务器存储库 是展示 MCP 多功能性的参考、官方和社区贡献服务器的绝佳起点。 可以浏览服务器的各种功能,例如文件系统作、数据库交互和 Web 服务。

MCP 仍然是一个相对新的标准,生态系统正在迅速演变。 随着更多开发人员采用 MCP,你会看到越来越多的服务器和工具可用于与项目集成。

添加 MCP 服务器

创建文件以管理 MCP 服务器的配置

如果您还没有 mcp.json 文件,可以根据您希望服务器可用于的存储库、用户和 IDE,在相应的位置创建它。

用于自动发现 MCP 配置的文件位置

Visual Studio 还会检查其他开发环境设置的 MCP 配置。 MCP 服务器配置按以下顺序从以下目录读取:

  1. %USERPROFILE%\.mcp.json
    充当特定用户的全局 MCP 服务器配置。 在此处添加 MCP 服务器将使它为所有 Visual Studio 解决方案加载。
  2. <SOLUTIONDIR>\.vs\mcp.json
    特定于 Visual Studio,并且仅为特定用户加载指定的 MCP 服务器(对于指定的解决方案)。
  3. <SOLUTIONDIR>\.mcp.json
    如果您希望有一个可以在存储库的源代码管理中跟踪的 MCP 配置,那么这个效果很好。
  4. <SOLUTIONDIR>\.vscode\mcp.json
    范围限定为存储库/解决方案,通常不受源代码管理。
  5. <SOLUTIONDIR>\.cursor\mcp.json
    范围限定为存储库/解决方案,通常不受源代码管理。

其中一些位置需要 .mcp.json ,而另一些位置需要 mcp.json

MCP 配置格式

可以同时定义 远程 (URL 和凭据)和 本地 (命令行调用)服务器。

通常通过包管理器调用工具。 例如,npx -y @azure/mcp@latestdocker run ... mcp/github。 Visual Studio 支持您指定的任何命令,允许根据需要锁定版本或传递标志。

格式必须遵循 MCP 规范,例如服务器对象的数组,每个对象都有 namecommandurltransport等等。

编辑 MCP 配置

使用现有 mcp.json 文件,如果将文件签入版本控制系统,请将文件位置添加到解决方案资源管理器中的 解决方案项

使用有效语法保存文件时,GitHub Copilot 的代理将重启并重新加载配置的服务器。

显示将 MCP 配置文件位置添加到解决方案项的屏幕截图。

工具生命周期

一旦发现或添加服务器,立即执行以下操作:

  • Visual Studio 初始化服务器(执行握手并查询工具列表)。
  • Visual Studio 订阅了 MCP 事件 notifications/tools/list_changed
  • 当该事件触发时,Visual Studio 会重置对工具的任何先前接受或权限(以防止 Rug-pull 攻击),重新提取工具列表,并实时更新计数/UI。
  • 成功启用服务器后,代理可以使用工具。 工具默认处于禁用状态,必须手动启用。
  • 如果删除了服务器,Visual Studio 会立即终止其进程,并从 UI 提取其所有工具。
  • 如果编辑服务器定义,Visual Studio 将终止并重新启动它,然后重新查询。

管理工具审批

调用工具时,Copilot 请求确认以运行该工具。 这是因为工具可能在计算机上本地运行,并执行修改文件或数据的作。

在聊天窗格中,在工具调用后,使用 “允许 ”下拉列表选项自动确认当前会话、解决方案或所有将来调用的特定工具。

显示管理代理工具审批的屏幕截图。

可以在 工具>选项>GitHub>Copilot>工具中重置工具确认选择。

显示工具配置设置的屏幕截图。

常见问题

作为管理员,如何在 Visual Studio 用户的代理模式下控制 MCP 服务器的使用?

Visual Studio 中的代理模式和 MCP 使用情况受管理员 GitHub Copilot 仪表板中的 编辑器预览功能 标志的约束。 如果管理员关闭此设置,则订阅下的用户将无法使用代理模式或连接到 Visual Studio 中的 MCP 服务器。

有关详细信息,请参阅 管理企业中 Copilot 的策略和功能