超越工具:在 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)的配置。

安全性是另一个重大关注点。管理 MCP 服务器的机密信息不应该意味着将密码提交到源码管理中。我们增加了对输入变量的支持,这些变量会提示你输入一次,然后加密并安全存储机密,同时还支持引用你在本地开发中已经信任的现有 .env 文件。这使得团队可以更轻松、更安全地共享和审查配置。

用户控制是体验的核心。通过工具选择器,你可以决定代理在特定会话中可以访问哪些工具,并查看清晰的描述和控件。对于开发或调试服务器的人员,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 现在正为来自 GitHub、Playwright、Azure 和 Perplexity 的官方服务器提供动力,且生态系统仍在不断扩大。VS Code 的与众不同之处不仅在于早期采用,还在于对“规范优先”工程的承诺。通过紧密遵循 MCP 规范,并在授权、发现和安全方面回馈改进,我们正在协助塑造不断成熟的协议,确保生态系统中的创新能让每个人受益,而不仅仅是 VS Code 用户。
展望未来,我们正积极致力于在 VS Code 中落地对规范中即将推出的 MCP 功能的支持,包括授权 (Authorization)、提示词 (Prompts)、资源 (Resources)和采样 (Sampling)。随着这些功能加入产品中,它们将带来更丰富、更灵活的代理集成。
如果你正在构建开发人员工具或基础设施,MCP 现在是一种实用且开放的方法,可让 VS Code 及其他环境中的 AI 代理能够访问它们。无论你是想开箱即用地使用服务器还是创建自己的服务器,其体验都应该既强健又简单直观。
要开始使用,请查看 ModelContextProtocol.io、VS Code MCP 文档或 GitHub 上的参考服务器。
我们很高兴看到你将构建出怎样的作品——以及随着生态系统的不断扩大,代理工作流将如何演变。
祝编码愉快!