為什麼你的 MCP 設定會在 60 秒超時?
當你在 Claude Desktop、Cursor 或 VSCode 中加入超過 8 個 MCP 伺服器時,系統會開始出現連線逾時問題。這是因為 Windows 上的 MCP 客戶端預設連線超時時間設為 60 秒,而每個額外伺服器都會佔用新的連線資源,導致系統無法及時處理所有請求。
核心原因包括:
- 預設超時設定過短,無法應對多伺服器負載
- Windows 的連線池限制(maxConnectionsPerServer)
- 同時發起的請求數量超過系統承載能力
- HTTP/1.1 連線管道化(pipelining)設定不當
診斷當前 MCP 設定狀態
在修改任何設定之前,你需要先了解目前的 MCP 配置狀況。按下 Ctrl + Shift + P 開啟命令面板,輸入「MCP」並選擇「MCP Server: Show Detailed Logs」。這會顯示所有伺服器的連線狀態和錯誤資訊。
檢查以下關鍵指標:
- 連線延遲時間(latency)
- 每個伺服器的請求失敗率
- 系統資源使用情況(CPU、記憶體)
- 網路連線數量
如果看到「Connection timeout after 60000ms」或類似的錯誤訊息,就確認你遇到了本文要解決的問題。
修復 MCP 超時的具體步驟
步驟一:修改 MCP 設定檔
找到並編輯 MCP 設定檔。在 Windows 上,路徑通常是:
%APPDATA%\Claude\claude_desktop_config.json(Claude Desktop)
%APPDATA%\Cursor\User\globalStorage\saoudrizwan.claude-dev\settings.json(Cursor)
在設定檔中添加或修改 mcpServers 區塊,加入超時設定:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "C:\\Projects"],
"timeout": 120,
"maxRetries": 3
}
}
}
步驟二:調整 Windows 連線設定
使用 PowerShell 系統管理員執行以下命令,增加系統連線限制:
# 增加連線池大小
[System.Net.ServicePointManager]::DefaultConnectionLimit = 100
# 停用 HTTP/2(避免某些 MCP 伺服器相容性問題)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Http\Parameters" -Name "EnableHttp2Tls" -Value 0
# 重新整理設定
Restart-Service HttpService
步驟三:限制同時連線的伺服器數量
如果你有超過 10 個 MCP 伺服器,建議分批啟用。在設定檔中使用 enabled 欄位控制:
{
"mcpServers": {
"server1": { "command": "...", "enabled": true },
"server2": { "command": "...", "enabled": true },
"server3": { "command": "...", "enabled": false },
"server4": { "command": "...", "enabled": false }
}
}
優化多 MCP 伺服器效能的最佳實踐
解決超時問題後,進一步優化可以提升整體使用體驗:
- 使用本地快取:為常見請求設定本地快取,減少網路往返次數
- 分組管理:將功能相關的伺服器分組,按需啟用
- 健康檢查:設定自動重連機制和健康檢查間隔
- 監控日誌:定期檢查 MCP 日誌,及早發現問題
範例:設定健康檢查間隔為 30 秒
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sqlite"],
"healthCheckInterval": 30000,
"autoReconnect": true
}
}
}
結語
MCP 伺服器超時問題雖然惱人,但透過正確的診斷和設定調整,完全可以解決。記住三個關鍵原則:增加超時設定、優化連線管理、必要时分批啟用伺服器。按照本文的步驟操作,你的 MCP 環境將能穩定支援 8 個以上的伺服器同時運作。