MCP 伺服器:用真實工具延伸 AI
大型語言模型很聰明。它們能推理、書寫、分析、創作。但它們也是孤立的。預設情況下,LLM 看不了今天的天氣、查不了你的資料庫、搜不了網頁、也讀不了你電腦上的檔案。它只知道訓練資料裡的東西,以及你貼進提示詞的內容。
MCP — Model Context Protocol — 改變這件事。它是一套把 AI 模型連到外部工具的標準。把它想成 AI 的 USB:一個通用的插頭,讓任何模型能使用任何工具,只要兩邊都講這個協定。
MCP 怎麼運作
流程很簡單:
關鍵觀念:LLM 自己決定何時使用工具。你不是寫程式說「如果使用者問 GitHub,就呼叫 GitHub API」。模型理解使用者意圖、察覺需要外部資料、呼叫合適的 MCP 伺服器、拿到結果,再把它編進回應。
這就是 MCP 強大的原因 — 也是它跟傳統 API 整合不同的地方:傳統整合裡,開發者必須預料每一條可能的工作流。
有哪些 MCP 伺服器
Zubnet 上有 117 個 MCP 伺服器。以下是分類與一些亮點:
開發工具
• GitHub — 搜尋儲存庫、建立/讀取/關閉 issue、列 PR、讀檔案內容、建分支
• GitLab — 類似 GitHub,用於 GitLab 代管的專案
• Linear — 建立與管理 issue、讀取專案狀態
• Sentry — 搜尋錯誤、讀堆疊追蹤、解決 issue
資料庫
• PostgreSQL — 對你的 Postgres 資料庫執行讀取查詢
• MySQL — MySQL/MariaDB 同樣可用
• SQLite — 查詢本地 SQLite 檔案
• Redis — 讀 key、掃描模式
搜尋與研究
• Brave Search — 無追蹤的網頁搜尋
• Exa — 網路上的語義搜尋
• ArXiv — 搜尋學術論文
• Wikipedia — 查詢百科知識
檔案系統與儲存
• Filesystem — 在指定目錄內讀、寫、列、搜尋檔案
• Google Drive — 從 Drive 搜尋與讀取文件
• S3 — 從 AWS S3 bucket 列出與讀取物件
通訊
• Slack — 讀頻道、送訊息、搜尋歷史紀錄
• Discord — 在伺服器裡讀與送訊息
• Email — 透過 IMAP/SMTP 讀與草擬郵件
資料與 API
• Fetch — 對任意 URL 發 HTTP 請求
• Puppeteer — 瀏覽網頁、截圖、抓取內容
• Google Maps — 地理編碼、路線、地點搜尋
完整清單可在我們的 MCP Store 瀏覽。
Claude Desktop 的設定
Claude Desktop 原生支援 MCP。要連一個伺服器,你把它的設定加進 Claude 的設定檔。在 Zubnet 的 MCP Store,每個伺服器都有一鍵複製該設定的按鈕。
設定檔住在:
• macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
• Windows: %APPDATA%\Claude\claude_desktop_config.json
一份帶兩個 MCP 伺服器的設定長這樣:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "your_brave_key_here"
}
}
}
}
存檔、重啟 Claude Desktop,工具就會自動出現。Claude 會在跟你對話相關時使用它們。
Cursor 的設定
Cursor(AI 程式編輯器)也支援 MCP。設定放在你的專案 .cursor/mcp.json 檔:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y", "@modelcontextprotocol/server-filesystem",
"/path/to/your/project"
]
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_CONNECTION_STRING": "postgresql://user:pass@localhost/mydb"
}
}
}
}
這給 Cursor 的 AI 讀你專案檔與查你資料庫的能力 — 讓它在理解你的程式碼庫與回答資料相關問題時大幅變強。
在 Zubnet 上設定
對在 Zubnet 平台上跑的代理而言,設定 MCP 伺服器更簡單:
1. 到 MCP Store
2. 找到你要的伺服器(例如 GitHub)
3. 點「啟用」
4. 輸入需要的設定(API 金鑰、URL 等)
5. 把它接到你的代理
伺服器跑在我們的基礎設施上。不用在本機安裝、不用 npx、不用 Node.js。直接就能用。
設定 schema:每個伺服器需要什麼
每個 MCP 伺服器都需要一些設定。最常見的幾種模式:
需要:從該服務供應商拿的一把 API 金鑰或個人存取 token。到他們的開發者設定裡拿。
需要:一條連線字串。格式:protocol://user:password@host:port/database。為了安全,用唯讀帳號。
需要:一個目錄路徑。伺服器只能存取這個目錄下的檔案。用盡可能窄的範圍。
需要:OAuth 憑證(client ID + secret)或預先產生的存取 token。在 Zubnet,我們替你處理 OAuth 流程。
AI 怎麼決定要用工具
這是感覺像魔法的部分。你不寫規則。LLM 自己搞懂。
當你問「我們 GitHub 上有哪些未解的 issue?」時,模型會察覺到:
1. 這需要它沒有的資料(你特定的 GitHub issue)
2. 有一個 GitHub 工具可用
3. list_issues 函式帶 state=open 就是對的呼叫
它組出工具呼叫、送到 MCP 伺服器、拿到 JSON 回應、再用自然語言摘要出來。
對多步驟任務,模型會把工具呼叫串起來。「找出留言最多的未解 issue,並在 Slack #dev-chat 發一則摘要」可能包含:
1. github.list_issues(state=open, sort=comments)
2. github.get_issue(number=142)(取得完整細節)
3. slack.post_message(channel=#dev-chat, text=...)
三個工具呼叫,自動編排。沒寫程式。
安全考量
一個帶寫入憑證的 PostgreSQL MCP 伺服器,能修改你的資料庫。一個擁有刪除權限 PAT 的 GitHub 伺服器,能刪掉儲存庫。一個指向 / 的檔案系統伺服器,能讀完你整顆硬碟。用對待 SSH 金鑰的方式對待 MCP 憑證:最小權限、指定範圍、定期輪換。用唯讀的資料庫帳號。用只含你需要 scope 的 GitHub token。把檔案系統伺服器指向特定的專案目錄,絕對不要指向根目錄。
打造你自己的 MCP 伺服器
MCP 規格是開放的。如果你需要的工具還不存在,你可以自己做。一個 MCP 伺服器就是一個程式,它會:
1. 宣告它可用的工具(名稱、說明、參數 schema)
2. 處理工具呼叫請求
3. 回傳結構化的結果
官方 SDK 有 TypeScript 和 Python 版本。TypeScript 裡一個最小的伺服器大約 50 行程式碼。規格與 SDK 在 modelcontextprotocol.io。
如果你做了一個別人可能覺得有用的伺服器,考慮把它發布到 MCP 生態系。社群每週都在成長。
什麼時候用 MCP vs. 一般 API 呼叫
MCP 不永遠是對的答案。以下情境用它:
• 你希望 AI 決定何時呼叫外部服務(動態、使用者驅動的工作流)
• 你在打造需要工具存取的代理
• 你要一個統一介面去用許多工具(一個協定、117 個伺服器)
以下情境用一般 API 呼叫:
• 流程是決定性的(永遠先呼叫這個 API,再呼叫那個)
• 你需要對每個請求有精準掌控
• 效能是關鍵,你承擔不起 LLM 的決策迴圈
在我們的 MCP Store 瀏覽 117 個 MCP 伺服器。Claude Desktop 與 Cursor 都有一鍵設定。或直接為你的 Zubnet 代理啟用。