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

2025年5月14日,作者:Harald Kirschner

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

我们的首次尝试遵循了熟悉的 VS Code 模式:通过工具聊天参与者 API 实现可扩展性。考虑到生态系统中已经存在数千个扩展,这样做合情合理,但行业正迅速向新标准迈进:模型上下文协议 (MCP)。最好将 MCP 理解为一种以一致的方式将 AI 代理连接到各种外部工具和服务的协议,这就像 HTTP 标准化了网络通信一样。其目标是让任何客户端(不仅仅是 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 命令,你可以直接从包管理器(NPM、PyPI、Docker)设置服务器,并让 VS Code 处理其余部分。网站甚至可以提供一个 'Install in 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 规范中的最新传输方式得到支持。这使得远程服务器集成更加顺畅且更具可扩展性,特别是对于云托管或无服务器 (serverless) 工具提供商而言。

我们的目标是在 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 上的参考服务器

我们很高兴看到你将构建出怎样的作品——以及随着生态系统的不断扩大,代理工作流将如何演变。

祝编码愉快!

English 한국어 中文(简体) 中文(繁體)
© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.