超越工具本身,在 VS Code 中添加 MCP
2025年5月14日,作者:Harald Kirschner
当我们首次在 VS Code 中引入代理模式时,它开辟了通过聊天与代码和工作区互动的新方式。你可以要求代理检查文件、运行构建,甚至调试测试。但是,你受到模型训练内容和工作区内容的限制。因此,下一步很明确:我们需要一种方法,让代理能够超越这些限制,以安全、用户可控的方式与真实的外部服务进行交互。
我们的首次尝试遵循了熟悉的 VS Code 模式:通过工具(Tools)和聊天参与者(Chat participants)API 进行扩展。考虑到生态系统中已有的数千个扩展,这很合理,但行业正迅速向一个新标准靠拢:模型上下文协议(Model Context Protocol)(MCP)。MCP 最好被理解为一种以一致方式将 AI 代理连接到各种外部工具和服务的协议,很像 HTTP 如何标准化了网络通信。目标是让任何客户端,不仅仅是 VS Code,都能插入强大的工具服务器,如数据库、代码搜索和部署系统,并让它们“即插即用”。
这一转向 MCP 几乎在一夜之间解锁了一个更广阔的生态系统。现在,VS Code 用户可以利用诸如用于前端验证的Playwright MCP 服务器、用于仓库洞察和拉取请求的GitHub MCP 服务器,或者用于更智能 API 使用的Context7等服务器。服务器列表持续增长,MCP 迅速成为为 AI 代理带来额外功能的基础。
让 MCP 造福大众:应用 VS Code 的设计原则
VS Code 的设计理念始终专注于让强大功能易于使用、默认安全,并赋予用户明确的控制权。同样的原则也指导了我们的 MCP 集成。
以前,要开始使用 MCP 服务器,意味着需要将 JSON 块复制到配置文件中并管理命令行标志。我们希望简化这一点:通过 MCP: 添加服务器(Add Server) 命令,你可以从包管理器(NPM、PyPI、Docker)设置服务器,其余的都由 VS Code 处理。网站甚至可以提供一个 '在 VS Code 中安装' 按钮,进一步简化上手流程,VS Code 还会尽可能自动发现来自其他客户端(如 Claude Desktop)的配置。
安全性是另一个主要关注点。管理 MCP 服务器的密钥不应该意味着将密码提交到源代码控制中。我们增加了对输入变量的支持,这些变量会提示你一次,然后加密并安全地存储密钥,并支持引用你已经信任的用于本地开发的现有 .env
文件。这使得团队可以更轻松地安全共享和审查配置。
用户控制是体验的核心。通过工具选择器,你可以决定代理在给定会话中可以访问哪些工具,并查看清晰的描述和控制项。对于那些开发或调试服务器的人员,VS Code 会显示日志并简化服务器的启动、停止和重启。这些细节使得 MCP 不仅强大,而且对最终用户和服务器开发人员都易于上手。
超越基础:更丰富的 MCP 功能
旅程并未止步于实现工具的基础兼容性。MCP 的大部分价值来自其规范中的更深层功能。这些功能在得到充分支持时,能使工具更具上下文感知能力、更具适应性和更健壮。
例如,根(roots)支持让 MCP 服务器能够理解你的工作区结构。服务器无需向用户询问文件夹路径或依赖配置,而是预先接收到工作区文件夹列表,从而能够根据当前项目调整工具。这使得诸如在单一仓库中查找所有 TODO 项,或根据检测到的基础设施文件激活部署工具等用例成为可能。
动态工具发现(Dynamic tool discovery)允许服务器动态改变可用工具集。服务器不再是静态列表,而是可以根据上下文或项目状态调整工具——例如,随着工作流的进展显示不同的操作,或显示与代码库中检测到的框架相关的工具。这使得代理的功能保持相关性并避免混乱。如需实时使用示例,请查阅 TypeScript SDK 中的动态服务器示例或 GitHub MCP 服务器中的动态工具集发现功能。
最近的VS Code 更新还增加了对工具注解(tool annotations)的支持,这有助于服务器为工具提供有用的元数据,例如人类可读的名称或关于工具是否应以只读模式运行的提示。这些细节改善了代理的行为和用户的理解。
最后,MCP 规范中最新的传输方式现在支持可流式 HTTP(streamable HTTP)。这使得远程服务器集成更顺畅、更具可扩展性,特别是对于云托管或无服务器工具提供商而言。
我们的目标是在 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 上的参考服务器。
我们期待看到你将构建出什么——以及随着生态系统的扩展,代理工作流将如何演进。
编码愉快!