超越工具:在 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)的配置。
安全性是另一個主要關注點。管理 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 規範中最新的傳輸方式。這使得遠端伺服器整合更流暢、更具可擴充套件性,尤其對於雲託管或無伺服器的工具提供商而言。
我們的目標是在 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 上的參考伺服器。
我們期待看到你將構建出什麼——以及隨著生態系統的擴充套件,代理工作流將如何演變。
編碼愉快!