参加你附近的 ,了解 VS Code 中的 AI 辅助开发。

超越工具:在 VS Code 中添加 MCP

2025年5月14日,由 Harald Kirschner 发布

当我们最初在 VS Code 中引入代理模式时,它开启了通过聊天与代码和工作区进行交互的新方式。你可以让代理检查文件、运行构建,甚至调试测试。但你受限于模型的训练内容以及工作区的内容。因此,下一步很明确:我们需要一种方法,让代理能够超越这些界限,以一种安全、用户可控的方式与真实的外部服务进行交互。

我们的第一次尝试遵循了 VS Code 熟悉的模式:通过工具 (Tools)聊天参与者 (Chat participants) API 实现扩展性。考虑到生态系统中已有的数千个扩展,这样做是合理的,但整个行业正在迅速转向一个新的标准:模型上下文协议 (Model Context Protocol, MCP)。MCP 可以最好地理解为一种协议,它以一致的方式将 AI 代理连接到各种外部工具和服务,就像 HTTP 为 Web 标准化了通信一样。其目标是让任何客户端(不仅仅是 VS Code)都能接入强大的工具服务器,如数据库、代码搜索和部署系统,并让它们“开箱即用”。

向 MCP 的转变几乎在一夜之间解锁了一个更广阔的生态系统。现在,VS Code 用户可以利用诸如用于前端验证的 Playwright MCP Server、用于代码仓库洞察和拉取请求的 GitHub MCP Server,或用于更智能 API 使用的 Context7 等服务器。服务器列表还在不断增长,MCP 已迅速成为为 AI 代理带来额外能力的基础。

让 MCP 为每个人服务:应用 VS Code 的设计原则

VS Code 的设计理念始终专注于让强大功能易于使用、默认安全,并给予用户明确的控制权。这些相同的原则也指导了我们的 MCP 集成。

过去,开始使用 MCP 服务器意味着要将 JSON 代码块复制到配置文件中,并管理命令行标志。我们希望简化这一过程:通过 MCP: Add Server (MCP: 添加服务器) 命令,你可以从包管理器(NPM、PyPI、Docker)安装一个服务器,然后让 VS Code 处理剩下的事情。网站甚至可以提供一个“在 VS Code 中安装”按钮来进一步简化入门流程,VS Code 也会在可能的情况下自动发现来自其他客户端(如 Claude Desktop)的配置。

Add MCP Server commands in VS Code

安全性是另一个主要关注点。管理 MCP 服务器的密钥不应该意味着将密码检入源代码控制。我们添加了对输入变量的支持,它会提示你一次,然后对密钥进行加密并安全存储,同时也支持引用你已经信任用于本地开发的现有 .env 文件。这使得团队可以更轻松地安全共享和审查配置。

GitHub MCP Server with safely stored PAT using input variables

用户控制是体验的核心。通过工具选择器,你可以决定代理在给定会话中可以访问哪些工具,并看到清晰的描述和控制选项。对于开发或调试服务器的人员,VS Code 会显示日志,并简化了启动、停止和重启服务器的操作。这些细节使 MCP 不仅功能强大,而且对最终用户和服务器开发者都易于上手。

超越基础:更丰富的 MCP 功能

我们的旅程并未止步于实现工具的基本兼容性。MCP 的大部分价值来自于其规范中更深层次的功能。这些功能在得到完全支持时,能使工具更具上下文感知能力、适应性更强、更稳健。

例如,根 (roots) 支持让 MCP 服务器能够理解你工作区的结构。服务器无需向用户询问文件夹路径或依赖配置,而是预先接收一个工作区文件夹列表,从而能够根据手头的项目定制工具。这使得一些用例成为可能,比如在整个 monorepo 中查找所有 TODO,或者根据检测到的基础设施文件激活部署工具。

动态工具发现 (Dynamic tool discovery) 允许服务器动态更改可用工具集。服务器不再提供静态列表,而是可以根据上下文或项目状态调整工具——例如,随着工作流的进展显示不同的操作,或者显示与代码库中检测到的框架相关的工具。这保持了代理能力的相关性,并避免了混乱。要查看实际用例,请参考 TypeScript SDK 中的动态服务器示例或 GitHub MCP Server 中的动态工具集发现功能。

上一次的 VS Code 更新还增加了对工具注解 (tool annotations) 的支持,这有助于服务器为工具提供有用的元数据,例如人类可读的名称或关于工具是否应以只读模式运行的提示。这些细节改善了代理的行为和用户的理解。

最后,现在已支持 可流式传输的 HTTP (streamable HTTP),这是 MCP 规范中最新的传输方式。这使得远程服务器集成更流畅、更具可扩展性,尤其对于云托管或无服务器的工具提供商而言。

我们的目标是在 VS Code 中支持最新的 MCP 功能,这样用户可以从丰富的 AI 体验中受益,而服务器开发者可以充满信心地实现这些功能。

发展生态系统:协作与未来展望

MCP 现在正为来自 GitHubPlaywrightAzurePerplexity 的官方服务器提供支持,而且生态系统还在不断扩大。VS Code 的与众不同之处不仅在于早期采用,更在于对规范优先工程的承诺。通过紧密遵循 MCP 规范,并在授权发现安全方面贡献改进,我们正在帮助塑造协议的成熟过程,确保生态系统中的创新能惠及所有人,而不仅仅是 VS Code 用户。

展望未来,我们正积极努力在 VS Code 中落地规范中已有的、即将推出的 MCP 功能,包括授权 (Authorization)提示 (Prompts)资源 (Resources)采样 (Sampling)。随着这些功能在产品中的实现,它们将带来更丰富、更灵活的代理集成。

如果你正在构建开发者工具或基础设施,MCP 现在是一种实用且开放的方式,可以让它们在 VS Code 及其他平台中被 AI 代理访问。无论你是想直接使用现成的服务器还是创建自己的服务器,体验都应该是既稳健又直接的。

要开始使用,请查看 ModelContextProtocol.ioVS Code MCP 文档,或GitHub 上的参考服务器

我们期待看到你将构建出什么——以及随着生态系统的扩展,代理工作流将如何演变。

编码愉快!