Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
獨立知識媒體
與任何項目無關聯
探索AI智慧的思維邊界
claude-me.com
最新
Anthropic 親口說的八個原則:Claude 愈用愈笨,很可能是你的方式有問題  ·  Claude Code 現在可以自己「循環工作」了:Anthropic 公開四種 Loop 模式,讓 AI 真的幫你跑完整個流程  ·  Claude Cowork 真實評測:三個月後,哪些任務真的省了時間,哪些讓我後悔開了自動化  ·  七月開局的兩個大消息:Claude Sonnet 5 正式發布,Fable 5 出口管制解除全球重新開放  ·  RAG 是什麼:為什麼 Claude 讀不了你公司內網的資料,以及怎麼讓它讀到  ·  Claude Cowork 進階工作流:從「交代一件事」到「讓它跑完一整個流程」,三個真實可用的範本
名詞解析 · mcp-tools

MCP Server

MCP 伺服器
mcp-tools 進階

30 秒版 · 給沒耐心的人
MCP(Model Context Protocol)生態系中負責「提供工具和資源」的服務端。開發者用 Python 或 TypeScript 實作,定義 Resources(可讀取的資料)、Tools(可執行的功能)、Prompts(預設的提示詞範本)三類原語,讓 MCP Client(如 <a href="/zh/glossary/claude-tools/claude-desktop/">Claude Desktop</a>)能呼叫這些功能。自建 MCP Server 是把 Claude 連接到任意外部系統的核心技術。
完整解說 +
01 · 這是什麼?

MCP Server 的三個核心原語(Resources、Tools、Prompts)各自的用途是什麼?什麼時候用哪個?

Resources(資源):代表 MCP Server 能讓 Claude 讀取的資料。Resources 是「被動的」——Claude 可以請求讀取它們,但它們本身不執行任何操作。適合的場景:靜態或動態的資料存取(文件內容、資料庫記錄、API 快照)。每個 Resource 有一個 URI(如 file:///path/to/docdb://customers/1234),Claude 可以通過這個 URI 讀取對應的內容。

Tools(工具):代表 Claude 能執行的功能。Tools 是「主動的」——Claude 在判斷需要時可以呼叫它們,傳入參數,並接收執行結果。這是最常用的原語。適合的場景:任何你希望 Claude 能「做」的操作(搜尋、寫入、查詢、發送、轉換)。每個 Tool 有名稱、description、和輸入參數的 JSON Schema。

Prompts(提示詞範本):代表預定義的提示詞工作流,讓 MCP Client 能快速呼叫標準化的任務。Prompts 是「可重用的任務範本」——使用者可以從 MCP Client 的介面直接選用,不需要每次都手動輸入完整的提示詞。適合的場景:你有標準化的工作流(「分析這份合約的關鍵風險」「生成週報摘要」),希望讓用戶能一鍵使用。

三者的選擇原則:如果你想讓 Claude 能讀取某個資料來源,用 Resources;如果你想讓 Claude 能執行某個操作,用 Tools;如果你有一個標準化的任務流程希望讓用戶能快速使用,用 Prompts。在大多數 MCP Server 的實作裡,Tools 是最核心的原語,Resources 和 Prompts 是補充。

02 · 為什麼存在?

怎麼用 Python 建構一個最基本的 MCP Server?最小可用版本的結構是什麼?

Anthropic 官方的 Python MCP SDK 建構一個最基本的 MCP Server,核心結構如下:

from mcp.server.fastmcp import FastMCP

# 建立 MCP Server 實例
mcp = FastMCP("my-server")

# 定義一個 Tool
@mcp.tool()
def search_documents(query: str, max_results: int = 5) -> str:
    """
    搜尋文件庫中的文件。
    適用於:用戶需要查找特定主題的文件時。
    不適用於:查找特定文件 ID(請用 get_document)。
    
    Args:
        query: 搜尋關鍵字
        max_results: 最多返回幾筆結果(預設 5)
    """
    # 實際的搜尋邏輯
    results = your_search_function(query, max_results)
    return format_results(results)

# 定義一個 Resource
@mcp.resource("docs://{doc_id}")
def get_document(doc_id: str) -> str:
    """通過 ID 讀取特定文件的完整內容。"""
    return your_db.get_document(doc_id)

if __name__ == "__main__":
    mcp.run()

最重要的設計決策:Tool 的 docstring。上面範例裡 search_documents 的 docstring 不是給人看的,是給 Claude 看的——Claude 完全靠這段文字決定什麼時候呼叫這個工具。一個好的 Tool docstring 應該包含:這個工具做什麼(一句話描述)、什麼情況下應該呼叫(適用場景)、什麼情況下不應該呼叫(排除場景)、輸入參數的含義和格式。

Claude Desktop 裡連接這個 Server:在 claude_desktop_config.json 裡加入:

{
  "mcpServers": {
    "my-server": {
      "command": "python",
      "args": ["/path/to/your/server.py"]
    }
  }
}
03 · 如何影響你的決策?

本地 MCP Server 和遠端(Remote)MCP Server 的技術差別和適用場景?

本地 MCP Server(Local):跑在用戶自己電腦上的 MCP Server,通過 Standard I/O(stdio)和 MCP Client 通信。這是目前 Claude Desktop 最主要的 MCP 連接方式。

適合本地 Server 的場景:需要存取本地文件系統或本地資料庫;需要執行本地的命令列工具;用於個人開發和測試;涉及敏感資料、不適合傳到外部服務的情況。

遠端 MCP Server(Remote):部署在雲端或企業伺服器上,通過 HTTP/HTTPS 和 Server-Sent Events(SSE)通信。多個用戶可以共用同一個遠端 Server。

適合遠端 Server 的場景:需要多個用戶共用同一個工具(如企業內部知識庫);需要連接到外部 SaaS 服務(Slack、GitHub、Salesforce);需要集中管理和更新(修改一次、所有用戶立刻用到新版本);需要認證和授權(遠端 Server 更容易整合 OAuth 和 SSO)。

企業部署的選擇原則:對個人工具和本地資源,用本地 Server;對團隊共用的工具和需要集中管理的服務,用遠端 Server。很多企業的 MCP 架構是「混合型」——把公司內部系統連接部分做成遠端 Server,把個人工作流工具保留為本地 Server。

04 · 你該怎麼辦?

MCP Server 在生產環境部署時有哪些常見的錯誤和最佳實踐?

最常見的錯誤一:Tool description 太模糊

這是 MCP Server 最常見、影響最大的問題。「搜尋資訊」「查詢資料庫」這樣的描述讓 Claude 不知道什麼時候該用這個工具、和其他工具有什麼區別。好的 description 應該說清楚:適用場景、排除場景、和參數格式。

最常見的錯誤二:返回的資料量太大

Tool 返回幾千字的原始資料,讓 Claude 難以識別關鍵資訊。最好的做法是:Tool 在伺服器端做預處理,只返回 Claude 真正需要的關鍵欄位和摘要,而不是把整個資料庫記錄或文件原文返回。

最常見的錯誤三:沒有設計錯誤處理

Tool 執行失敗時(網路超時、資料不存在、API 限流),應該返回結構化的錯誤訊息(包含錯誤類型、原因、建議的下一步),而不是讓 Python 拋出未處理的異常。Claude 收到結構化的錯誤訊息後,能給用戶更有意義的回應。

最佳實踐

用 MCP Inspector 工具(Anthropic 官方提供)在連接 Claude Desktop 之前先測試你的 Server,確認每個 Tool 能正確執行、返回格式符合預期。把 Tool 的輸入驗證做在 Server 端(使用 Pydantic 或 TypeScript 的 Zod),而不是依賴 Claude 傳入正確的參數。對需要多步驟操作的複雜任務,考慮把它拆成多個 Tools,讓 Claude 能分步驟執行和驗證,而不是一個 Tool 做所有事情。

實際例子 +

一家媒體公司為編輯團隊建立內部 MCP Server,讓 Claude 能存取他們的文章資料庫、圖片庫和發佈系統。這個實作說明如何在真實企業場景裡設計 MCP Server 的 Tools:

錯誤的設計(Tool description 太模糊)

Tool: search_content
Description: 搜尋內容。
Parameters: query (string)

Claude 收到「幫我找一張適合配合這篇科技文章的圖片」,不知道應該用這個 search_content 工具(因為 description 沒說它能搜圖片),可能直接回答「我沒有搜尋工具」。

正確的設計(每個工具有精確的 description)

Tool: search_articles
Description: 搜尋文章資料庫中的已發布文章。
適用於:用戶需要查找特定主題的過往文章、檢查是否有重複的報導、尋找可以引用的相關報導時。
不適用於:搜尋圖片(請用 search_images)、搜尋草稿文章(請用 search_drafts)。

Tool: search_images
Description: 搜尋圖片庫中的圖片。
適用於:為文章尋找配圖、尋找特定事件或人物的圖片時。
返回:圖片 ID、標題、版權資訊、縮圖 URL。

這樣的設計讓 Claude 能在「幫我找一張適合科技文章的圖片」這個請求時,正確識別應該呼叫 search_images 而不是 search_articles,呼叫準確率從 40% 提升到 95%。

圖解
MCP Server 架構:三種原語和呼叫流程架構圖展示 MCP Server 的三種原語(Resources、Tools、Prompts)及其對應功能,以及 MCP Client 到 MCP Server 的完整呼叫流程:Claude 收到請求 → 判斷需要哪個工具 → 發出工具呼叫 → MCP Server 執行並返回結果 → Claude 整合結果生成回答。MCP Server — Three Primitives and Call FlowMCP Client(Claude Desktop)Claude receives requestSelect tool to callSend tool call + paramsGenerate final responseMCP Server(Your implementation)ResourcesReadable data: files, DB records,API responses, docsToolsExecutable functions: search,write, query, send, transformPromptsPreset templates: standardworkflows, reusable patternstool_call →← resultClaude Me · claude-me.com
歡迎截圖分享,轉載請註明來源
常見誤解 +
✕ 誤解1
× 誤解一:MCP Server 只能用 Python 實作,其他語言不支援。MCP 協定是語言無關的,官方支援 Python 和 TypeScript SDK,社群也有 Go、Rust 等語言的實作。選擇哪種語言取決於你的技術棧和需求:Python 適合資料處理和機器學習相關的工具;TypeScript/Node.js 適合需要整合前端生態系工具的場景。Anthropic 官方的推薦是 Python(用 FastMCP 框架)或 TypeScript,這兩個有最完整的文件和最多的社群支援。
✕ 誤解2
× 誤解二:MCP Server 需要有公開的網路端口才能使用。本地 MCP Server 完全不需要任何網路端口——它通過 Standard I/O 和 Claude Desktop 通信,類似管道(pipe),不涉及任何網路連接。這讓本地 MCP Server 的設置非常簡單(不需要防火牆設定、不需要 SSL 憑證),也讓它適合處理敏感的本地資料(資料不需要離開你的電腦)。只有「遠端 MCP Server」才需要網路端口,那是需要多用戶共用或部署到雲端的場景。
這件事跟你有什麼關係 +
直接影響

MCP Server 開發最核心的取捨是「靈活性 vs 維護成本」。自建 MCP Server 能完全按你的需求客製化,但需要開發和持續維護;使用第三方現成的 MCP Server 設置簡單,但可能不完全符合你的需求,也需要信任第三方的安全實踐。在實際選擇時,建議的策略是:對於連接通用工具(Google Drive、Slack、GitHub),優先使用官方或知名開源的現成 Server;對於連接你的業務系統(內部資料庫、自研 API、有特定安全要求的服務),自建 Server 能確保完全的控制和安全合規。另一個取捨是 Tool 粒度:工具拆得越細,Claude 的呼叫決策越精準,但 Server 的維護複雜度也越高;工具合併得太粗,Claude 的呼叫決策變得不準確。一個工具一個明確的職責是最好的設計原則。

提問
請至少輸入 10 個字
相關文章
自己寫一個 MCP Server:讓 Claude 安全連上你的內部工具(含權限與除錯)
mcp · 06月15日
更多相關主題