模型上下文协议(MCP)是一种开放标准,使 AI 模型能够通过统一接口与外部工具和服务进行交互。 在 Visual Studio 中,MCP 支持通过允许将任何 MCP 兼容的服务器连接到代理编码工作流来增强 GitHub Copilot 代理模式。
本文介绍如何在 Visual Studio 中设置 MCP 服务器和使用具有代理模式的工具。
先决条件
- Visual Studio 2022 版本 17.14 或更高版本。 强烈建议使用 17.14 的最新服务版本,因为每个版本都会添加 MCP 功能。
MCP 和 Visual Studio 如何扩展 GitHub Copilot 代理
Visual Studio 中的 MCP 支持如下所示:
- MCP 客户端(如 Visual Studio)连接到 MCP 服务器,并代表 AI 模型请求作。
- MCP 服务器提供一个或多个工具,通过定义完善的接口公开特定功能。
- 协议定义客户端和服务器之间的通信的消息格式,包括工具发现、调用和响应处理。
例如,文件系统的 MCP 服务器可能提供用于读取、写入或搜索文件和目录的工具。 官方 GitHub MCP 服务器 提供用于列出存储库、创建拉取请求或管理问题的工具。 MCP 服务器可以在计算机本地运行,也可以远程托管。 Visual Studio 支持这两种配置。
通过标准化这种交互,MCP 无需在每个 AI 模型和每个工具之间实现自定义集成。 然后,只需将新的 MCP 服务器添加到工作区即可扩展 AI 助手的功能。 详细了解 MCP 规范。
GitHub MCP 服务器的配置示例
以下演练需要版本 17.14.9 或更高版本。
创建新文件:
<SOLUTIONDIR>\.mcp.json或%USERPROFILE%\.mcp.json。 建议使用 Visual Studio 编辑此文件,以便自动应用其 JSON 架构。将以下内容粘贴到
.mcp.json文件中:{ "servers": { "github": { "url": "https://api.githubcopilot.com/mcp/" } } }保存文件。 然后激活通过新服务器显示的 CodeLens 信息,以便通过 GitHub 帐户向此服务器进行身份验证。
在 Visual Studio 中,选择 GitHub Copilot 聊天窗口中的 “询问 ”箭头,然后选择 “代理”。
选择要使用的工具;例如, 列出问题。
尝试示例提示: 列出 GitHub 上分配给我的问题。
Copilot 要求有权使用 MCP 服务器提供给它的工具。 选择 允许,并选择要继续的范围。
支持的 MCP 功能
Visual Studio 支持以下 MCP 功能:
- MCP 服务器传输的选项是本地标准输入/输出(
stdio)、服务器发送的事件(sse)和可流式传输 HTTP(http)。 - 目前,在三个 基元 (工具、提示、资源)中,服务器只能向 Copilot 代理模式提供工具。 可以使用列表更改事件动态更新列表和工具的说明。
- Visual Studio 使用
roots(规范)为服务器提供当前解决方案文件夹。 - 对于 MCP 授权,Visual Studio 支持使用任何 OAuth 提供程序对远程服务器进行身份验证。
查找 MCP 服务器
官方 MCP 服务器存储库是展示 MCP 多功能性的参考服务器、官方服务器和社区贡献服务器的绝佳起点。 可以浏览服务器的各种功能,例如文件系统作、数据库交互和 Web 服务。
MCP 是一个相对新的标准,生态系统正在迅速演变。 随着更多开发人员采用 MCP,你会看到越来越多的服务器和工具可用于与项目集成。
用于添加 MCP 服务器的选项
可以使用多个选项在 Visual Studio 中添加 MCP 服务器。
从 Web 安装
使用版本 17.14 的最新服务版本,Visual Studio 支持直接安装 MCP 服务器。 可以选择 MCP 服务器上的 “安装 ”按钮,自动将其添加到 Visual Studio 实例。
为 MCP 服务器添加“安装”按钮
使用 JSON 编写 MCP 服务器配置。
下面是 HTTP/SSE 服务器示例:
{"name":"My Server","type":"http","url":"https://example.com/mcp/"}下面是一个 stdio 服务器示例:
{"name":"My Server","type":"stdio","command":"python","args":["-m","my_mcp.server"]}必填字段包括:
领域 Description name服务器的友好名称 type服务器连接类型,例如 http或stdiourl服务器 URL,需要用于 httpcommand启动服务器可执行文件所需的命令 stdioargs传递给命令的参数数组,需要 stdio对 JSON 进行 URL 编码。 可以使用联机编码器或浏览器控制台。
下面是浏览器控制台示例:
encodeURIComponent('{"name":"My Server","type":"http","url":"https://example.com/mcp/"}')将 URL 编码的 JSON 插入 MCP URI 格式,以形成 Visual Studio 安装链接。 使用此格式:
vsweb+mcp:/install?<ENCODED_JSON>将 Markdown 徽章添加到 GitHub 存储库或文档。 例如:
[](vsweb+mcp:/install?<ENCODED_JSON>)
当用户选择徽章时,Visual Studio 将打开(或提示你打开它)。 此时会显示 MCP 安装对话框,预填充服务器详细信息。
从聊天视图中添加
使用 Visual Studio 版本 17.14.13 或更高版本,可以从 Visual Studio 中的聊天视图添加 MCP 服务器。
若要从聊天视图添加 MCP 服务器,请执行以下作:
创建文件以管理 MCP 服务器的配置
如果还没有 mcp.json 文件,请根据存储库、用户或编辑器要求在任何受支持的位置创建一个文件。
若要添加 MCP 服务器,请联机找到服务器的 JSON 配置。 例如,在 MCP 服务器的 GitHub 存储库中找到它。 然后将其粘贴到 mcp.json 文件中。
用于自动发现 MCP 配置的文件位置
Visual Studio 还会检查其他开发环境设置的 MCP 配置。 MCP 服务器配置按以下顺序从以下目录读取:
-
%USERPROFILE%\.mcp.json
充当特定用户的全局 MCP 服务器配置。 在此处添加 MCP 服务器时,所有 Visual Studio 解决方案都会加载该服务器。 -
<SOLUTIONDIR>\.vs\mcp.json
特定于 Visual Studio,并且仅为特定用户加载指定的 MCP 服务器,适用于指定的解决方案。 -
<SOLUTIONDIR>\.mcp.json
如果要查找可在存储库的源代码管理中跟踪的 MCP 配置,则效果良好。 -
<SOLUTIONDIR>\.vscode\mcp.json
范围限定为存储库/解决方案,通常不受源代码管理。 -
<SOLUTIONDIR>\.cursor\mcp.json
范围限定为存储库/解决方案,通常不受源代码管理。
其中一些位置需要 .mcp.json,而其他位置需要 mcp.json。
MCP 配置格式
可以同时定义 远程 (URL 和凭据)和 本地 (命令行调用)服务器。
通常通过包管理器调用工具;例如, npx -y @azure/mcp@latest 或 docker run ... mcp/github。 Visual Studio 遵循您指定的所有命令,因此可以根据需要锁定版本或传递参数标志。
格式必须遵循 MCP 规范。 例如,它必须包含一组服务器对象,每个对象都有 name、command 或 url,以及 transport。
编辑 MCP 配置
使用现有 mcp.json 文件,如果将文件签入版本控制系统,请将文件位置添加到解决方案资源管理器中的 解决方案项 。
使用有效语法保存文件时,GitHub Copilot 代理将重启并重新加载配置的服务器。
工具生命周期
一旦发现或添加服务器,立即执行以下操作:
- Visual Studio 通过执行握手和查询工具列表来初始化服务器。
- Visual Studio 订阅了 MCP 事件
notifications/tools/list_changed。 - 当该事件触发时,Visual Studio 会重置对工具的任何先前接受或权限(以防止 Rug-pull 攻击),重新提取工具列表,并实时更新计数/UI。
- 成功启用服务器后,工具将可供代理使用。 工具默认处于禁用状态,必须手动启用。
- 如果删除了服务器,Visual Studio 会立即停止其进程,并从 UI 提取其所有工具。
- 如果编辑服务器定义,Visual Studio 将终止并重启它,然后重新查询。
工具审批的管理
调用工具时,Copilot 请求确认以运行该工具。 原因是工具可能在计算机上本地运行,并执行修改文件或数据的作。
调用工具后,在聊天窗格中,使用 “允许 ”下拉列表选项。 可以为当前会话、当前解决方案或所有将来调用自动确认特定工具。
可以在 工具>选项>GitHub>Copilot>工具中重置工具确认选择。
管理授权
根据 MCP 授权规范,Visual Studio 现在支持使用任何 OAuth 提供程序对远程服务器进行身份验证。 此支持是对 Visual Studio 密钥链集成的补充。
若要管理 MCP 服务器的身份验证,请执行以下作:
在
.mcp.json文件中,从 CodeLens 选择“管理该服务器的 身份验证 ”。在浏览器弹出的对话框中,提供该服务器所需的 OAuth 提供者凭据。
常见问题
作为管理员,如何在 Visual Studio 用户的代理模式下控制 MCP 服务器的使用?
GitHub Copilot 仪表板上的 GitHub 策略设置由管理员管理,用于控制 Visual Studio 中的代理模式和 MCP 使用情况。 如果管理员关闭此设置,则订阅下的用户无法使用代理模式或连接到 Visual Studio 中的 MCP 服务器。
有关详细信息,请参阅 在企业中管理 GitHub Copilot 的策略和功能。