VS Code 的 MCP 設定:請用 servers,而不是 mcpServers
你從 Claude 或 Cursor 複製了一份能正常運作的 MCP 設定,貼進 VS Code,重新啟動後卻毫無動靜。沒有錯誤,沒有警告,清單裡也沒有伺服器。這份檔案是有效的 JSON,VS Code 也完全沒意見。問題只出在一個字,而且是最外層的那一個。
- VS Code 把 MCP 伺服器包在 servers 底下。Claude、Cursor 與大多數其他用戶端使用 mcpServers。
- 用錯鍵完全不會產生任何錯誤,這就是它讓人白白耗掉一個小時的原因。
- 內層的伺服器定義在各個用戶端之間完全相同。只有外層的包裝不同。
差異並排對照
同一個伺服器、同一個指令、同樣的參數。唯一會變的,是外層的包裝鍵。
| 用戶端 | 設定檔 | 包裝鍵 |
|---|---|---|
| VS Code 中的 GitHub Copilot | .vscode/mcp.json | servers |
| Cursor | ~/.cursor/mcp.json | mcpServers |
| Claude Desktop | claude_desktop_config.json | mcpServers |
| 其他多數以設定檔運作的用戶端 | 各異 | mcpServers |
VS Code 要的格式
放在工作區根目錄的 .vscode/mcp.json 中。以 MyLinedChart 的連接器為例:
{ "servers": { "mylinedchart": { "command": "npx", "args": ["-y", "@mylinedchart/mcp-chart-context"] } } }
請換成你自己伺服器的 command 與 args。內層物件的結構在各個用戶端之間不會改變。
其他所有用戶端要的格式
同一個伺服器,用於 Claude 或 Cursor:
{ "mcpServers": { "mylinedchart": { "command": "npx", "args": ["-y", "@mylinedchart/mcp-chart-context"] } } }
如果你同時開著兩個編輯器,你確實需要兩份檔案。這兩個編輯器無法共用同一份設定。
為什麼會在沒有錯誤的情況下失敗
VS Code 讀取檔案,發現是有效的 JSON,接著尋找 servers 這個鍵。檔案裡沒有 servers 這個鍵,所以 VS Code 找到零個要啟動的伺服器。零個伺服器並不是錯誤狀態。從 VS Code 的角度看,你什麼都沒設定,而這是完全合法的做法。
所以不會有紅色波浪線、不會有通知,任何紀錄裡也不會出現說鍵錯了的條目。這種失敗看起來,就跟伺服器啟動時當掉一模一樣,所以人們才會跑去除錯伺服器。
- 檔案是有效的 JSON,因此不會出現解析錯誤。
- 無法辨識的頂層鍵會被忽略,而不是被拒絕。
- 零個已設定的伺服器是正常狀態,所以 VS Code 不會回報故障。
如何確認你遇到的是哪一種問題
在認定伺服器壞掉之前,先證明 VS Code 確實有試著啟動它。
- 先檢查包裝鍵。這項檢查只要五秒鐘,多數時候答案就在這裡。
- 在終端機中手動執行伺服器的指令。如果伺服器能啟動,問題就出在別處。
- 在 VS Code 的 MCP 伺服器清單中尋找該伺服器。沒有出現代表從未設定;有出現但失敗,則代表真正的啟動錯誤。
- 如果你是透過一鍵連結安裝,而不是手動安裝,這整類問題就不適用。
兩個相關的陷阱
既然都談到這裡,還有另外兩件事也會以同樣悄無聲息的方式失敗。
第一,一鍵 MCP 安裝連結把資料承載為純粹經 URL 編碼的 JSON。Base64 會被網址解析器接受,然後悄悄地什麼都不做,這是最糟糕的失敗方式:一個看起來成功了的按鈕。
第二,對 VS Code 而言,伺服器名稱放在承載資料內,而不是像 Cursor 那樣作為獨立的查詢參數。照 Cursor 格式建立的連結,即使能開啟,也無法在 VS Code 中正確安裝。
MyLinedChart 在哪個環節
MyLinedChart 隨附一個 MCP 連接器,讓 AI 代理取得你的即時圖表:商品、你的畫線、指標數值與畫面上的 K 線。連接器在你的電腦上執行,資料不會經過我們的伺服器。
這個 App 有一個一鍵的 Add to VS Code 按鈕,會替你寫入正確的鍵,這就是比手動編輯更值得使用的原因。設定方式與其他用戶端:/resources/articles/ibkr-chart-data-github-copilot-vs-code。
下一步
修正鍵名,重新啟動 VS Code,伺服器就會出現。如果伺服器仍然沒有出現,你現在就知道問題出在伺服器而不是設定,這份需要逐一排查的清單就短多了。
在 /mcp 連接你的 AI。
常見問題
- 為什麼 VS Code 用 servers 而不是 mcpServers?
- servers 這個鍵,是 VS Code 自己 MCP 設定格式中的命名選擇,獨立於 Claude Desktop 所建立的慣例。兩者沒有誰比較正確。差異之所以成為問題,只因為兩者看起來可以互換,而其中一個失敗時什麼都不說。
- 如果我用錯鍵,VS Code 會警告我嗎?
- 不會,而這正是困難所在。檔案是有效的 JSON,未知的頂層鍵會被忽略而不是被拒絕,而且零個已設定的伺服器是正常狀態。整件事看起來完全不像故障。
- 我可以讓 VS Code 與 Cursor 共用同一份設定檔嗎?
- 不行。它們讀取不同的路徑,也期望不同的包裝鍵,所以你需要兩份檔案。內層的伺服器定義相同,因此只是複製一份,再改一個字而已。
- 這也適用於 Windows Copilot 嗎?
- 不適用。這裡指的 Copilot 是 VS Code 內的 GitHub Copilot,它支援 MCP 伺服器。Windows 工作列上的助理是另一項同名的產品,並不使用這些設定檔。