Ask me anything
Ithy Logo
Sign in to save

解鎖 AI 的無限潛能:MCP 設定全攻略,讓您的模型連接萬物!

深入了解模型上下文協定 (MCP) 的設定步驟、核心概念與實戰應用,賦予您的 AI 助理前所未有的互動能力。

mcp-setup-guide-chinese-qxlvdq1d

模型上下文協定 (Model Context Protocol, MCP) 是一項開創性的開放標準,旨在讓大型語言模型 (LLM) 如同擁有萬能鑰匙,能夠安全且標準化地與外部世界溝通。透過 MCP,您的 AI 助理不再僅限於其訓練數據中的靜態知識,而是能夠即時存取檔案系統、呼叫 API、查詢資料庫,甚至與其他應用程式互動。這份指南將帶您一步步完成 MCP 的設定,釋放 AI 的真正潛力。

核心洞察:MCP 設定要點速覽

  • 標準化橋樑:MCP 作為 AI 模型與外部資料和工具之間的標準化介面,簡化了整合過程,促進了不同系統間的互操作性。
  • 客戶端-伺服器架構:MCP 的運作基於客戶端(如 AI 應用程式)和伺服器(提供資料或工具存取)之間的通訊,允許靈活的部署和擴展。
  • 工具賦能:透過 MCP,AI 模型可以使用由伺服器提供的「工具」來執行特定任務,例如讀取文件、修改資料或執行程式碼,大幅擴展其實用性。

MCP 基礎:理解運作原理

在深入設定之前,讓我們先了解 MCP 的幾個核心概念:

MCP 的組成部分

  • MCP 客戶端 (Client):通常是大型語言模型或 AI 助理應用程式(例如 Claude Desktop、Cursor IDE 或其他支援 MCP 的平台)。客戶端發起請求,希望透過 MCP 存取外部資源或執行工具。
  • MCP 伺服器 (Server):負責提供對特定資料來源或工具的存取。它可以是操作檔案系統的伺服器、連接資料庫的伺服器,或是封裝了外部 API 的伺服器。一個 MCP 客戶端可以連接到多個不同的 MCP 伺服器。
  • MCP 工具 (Tools):由 MCP 伺服器定義和提供的具體功能。例如,「讀取檔案內容」、「查詢特定資料」、「執行一段程式碼」等都可以被定義為工具。AI 模型透過呼叫這些工具來與外部世界互動。
  • 傳輸協定 (Transport Protocols):MCP 支援不同的傳輸層協定來實現客戶端與伺服器之間的通訊。最常見的兩種是:
    • stdio (標準輸入/輸出):一種簡單直接的協定,常用於本地端伺服器與客戶端的通訊,設定相對容易。
    • SSE (Server-Sent Events):允許伺服器向客戶端單向推送即時更新,適用於需要持續接收數據流的場景。
  • 配置文件:用於指定 MCP 客戶端如何連接到 MCP 伺服器,包括伺服器的位址、使用的協定、執行的命令以及可能的認證資訊。例如,Claude Desktop 使用 claude_desktop_config.json 檔案進行配置。
MCP 伺服器設定介面範例

一個 MCP 伺服器設定介面的範例,顯示了伺服器名稱、協定和命令等配置項。

MCP 設定詳解:一步步指南

設定 MCP 的過程主要涉及準備環境、建立或配置 MCP 伺服器,以及設定 MCP 客戶端以連接該伺服器。以下步驟將引導您完成整個過程。

階段一:環境準備

安裝必要工具

大多數 MCP 伺服器,特別是自建伺服器,常使用 Python 或 Node.js 進行開發。因此,您需要確保您的系統已安裝相應的運行環境。

  • Python 環境:
    • 建議安裝 Python 3.8 或更高版本。
    • 使用 pip(Python 的套件安裝器)安裝 MCP SDK:pip install mcp。
    • 考慮使用虛擬環境 (venv) 來管理專案依賴,避免版本衝突:
      python -m venv my_mcp_env
      # 在 Linux/macOS 上啟動
      source my_mcp_env/bin/activate
      # 在 Windows 上啟動
      my_mcp_env\Scripts\activate
  • Node.js 環境:如果您計劃使用或開發基於 Node.js 的 MCP 伺服器或客戶端,請確保已安裝 Node.js 和 npm (Node Package Manager)。
  • 其他依賴:某些 MCP 伺服器可能需要額外的函式庫,例如用於網路請求的 requests 或用於數據處理的函式庫。請根據您選擇或開發的伺服器要求進行安裝。

階段二:建立與設定 MCP 伺服器

您可以選擇使用社群提供的現成 MCP 伺服器,或根據需求自行開發。自行開發通常涉及使用 MCP SDK 定義工具。

選擇或開發 MCP 伺服器

  • 使用現成伺服器:GitHub 等平台上有許多開源的 MCP 伺服器專案 (例如 Awesome MCP Servers 列表),提供檔案存取、資料庫連接等功能。
  • 自行開發伺服器 (以 Python 為例):

    使用 Python MCP SDK,您可以透過 @mcp.tool() 裝飾器輕鬆定義工具。以下是一個簡單的範例:

    import mcp
    
    @mcp.tool()
    def get_file_content(filepath: str) -> str:
        """
        讀取指定檔案的內容。
        :param filepath: 檔案的絕對路徑。
        :return: 檔案內容字串,或錯誤訊息。
        """
        try:
            with open(filepath, 'r', encoding='utf-8') as f:
                content = f.read()
            return content
        except Exception as e:
            return f"讀取檔案失敗: {str(e)}"
    
    if __name__ == "__main__":
        # 這裡可以添加啟動伺服器的邏輯,通常使用 stdio 協定
        # 例如,如果 mcp SDK 提供了 run 方法
        # mcp.run_server(stdio=True) # 假設的啟動方式,請參考具體 SDK 文件
        print("MCP 伺服器已準備就緒,等待客戶端透過 stdio 連接...")
        # 實際的伺服器啟動方式會依賴 MCP SDK 的具體實現
        # 通常,一個使用 stdio 的 MCP 伺服器會監聽標準輸入並將結果輸出到標準輸出
        # 這裡僅為示意,實際啟動需參考 MCP SDK 文件或範例
        pass
                

    啟動這樣的伺服器後,它將等待 MCP 客戶端的呼叫。

配置 MCP 伺服器 (主要針對客戶端設定)

MCP 伺服器本身的配置可能涉及指定允許存取的路徑、API 金鑰等。而客戶端連接伺服器時,通常需要一個配置文件來指定如何找到並與伺服器通訊。

例如,在 Claude Desktop 中,您需要修改其配置文件 (通常是 claude_desktop_config.json)。在 macOS 上,此文件通常位於 ~/Library/Application Support/Claude/claude_desktop_config.json。如果文件不存在,您需要手動創建它。

一個典型的 stdio 伺服器配置可能如下所示:

{
  "servers": [
    {
      "name": "MyLocalFileServer",
      "protocol": "stdio",
      "command": "/usr/local/bin/python", // Python 解譯器的路徑
      "args": [
        "/path/to/your/mcp_server.py" // 您的 MCP 伺服器腳本路徑
      ],
      "working_directory": "/path/to/your/project", // 腳本的工作目錄 (可選)
      "tools": [ // (可選) 預先聲明此伺服器提供的工具
        "get_file_content"
      ]
    }
  ]
}
    

對於 SSE 伺服器,配置可能如下:

{
  "servers": [
    {
      "name": "MyRemoteDataServer",
      "protocol": "sse",
      "url": "http://localhost:8000/mcp_events", // SSE 伺服器的端點 URL
      "headers": { // (可選) 任何需要的 HTTP 標頭,例如認證
        "Authorization": "Bearer your_api_key"
      },
      "tools": [
        "get_realtime_updates"
      ]
    }
  ]
}
    

在 Cursor IDE 或其他支援 MCP 的平台中,通常會有圖形化介面來新增和配置 MCP 伺服器,您需要填寫類似的資訊,如伺服器名稱、協定類型、執行命令或 URL。

階段三:設定並連接 MCP 客戶端

配置好 MCP 伺服器後,您需要在 AI 應用程式(MCP 客戶端)中設定連接。

  • Claude Desktop:如上所述,透過修改 claude_desktop_config.json 檔案來添加您的 MCP 伺服器配置。儲存檔案後,重新啟動 Claude Desktop,新的 MCP 工具應該就可以在聊天中被 AI 模型發現和使用了。
  • Cursor IDE:通常在「Settings」或「Features」選單下有專門的「MCP」或「AI Tools」部分。您可以點擊「Add New MCP Server」,然後選擇協定類型(stdio 或 sse),並填寫相應的命令或 URL。
  • 其他應用程式:查閱該應用程式的官方文件,了解其 MCP 設定的具體步驟。

連接成功後,AI 模型就能夠在需要時呼叫 MCP 伺服器提供的工具。例如,您可以對 AI 說:「嘿,Claude,請幫我讀取桌面上的 notes.txt 檔案內容」,如果您的 MCP 伺服器提供了相應的檔案讀取工具,AI 就會透過 MCP 完成這個任務。

階段四:測試與除錯

設定完成後,務必進行測試以確保一切運作正常:

  • 驗證工具可用性:在 MCP 客戶端中嘗試呼叫您設定的工具。檢查 AI 是否能夠正確理解您的指令並執行工具。
  • 檢查日誌:MCP 伺服器端和客戶端通常都會有日誌輸出。如果遇到問題,檢查日誌可以幫助定位錯誤原因(例如路徑錯誤、權限問題、協定不匹配等)。
  • 逐步測試:從簡單的工具開始測試,逐步增加複雜性。

MCP 傳輸協定比較

選擇合適的傳輸協定對於 MCP 的效能和適用性至關重要。以下表格比較了最常用的兩種協定:stdio 和 SSE。

特性 stdio (標準輸入/輸出) SSE (伺服器發送事件)
通訊方式 雙向,基於標準輸入和標準輸出流。客戶端發送請求到伺服器的 stdin,伺服器透過 stdout 回應。 單向,伺服器向客戶端推送事件流。主要用於伺服器主動向客戶端發送更新。
設定複雜度 相對簡單,尤其適用於本地執行的腳本或程式。 中等,需要設定 HTTP 端點,並處理事件流格式。
即時性 請求-回應模式,即時性取決於伺服器處理速度。 高,伺服器可以即時推送數據更新給客戶端。
適用場景 本地工具執行、簡單的資料查詢、不需要持續連接的任務。 即時通知、監控數據流、需要伺服器主動更新的應用。
連接性 通常用於本地進程間通訊。 基於 HTTP,可跨網路連接。

理解這些差異有助於您根據具體需求選擇最合適的傳輸協定。


MCP 設定考量因素雷達圖

在設定 MCP 時,有多個因素需要考量。下方的雷達圖呈現了針對不同 MCP 設定情境的相對評估(分數越高代表該方面表現越好或越重要,滿分10分)。這是一個主觀的評估,旨在提供一個概念性的比較參考。

此雷達圖分析了幾種常見的 MCP 設定方式。例如,「Claude Desktop (stdio 本地伺服器)」在易用性方面表現不錯,但擴展性可能不如自建伺服器。「Cursor IDE」提供了較好的內建管理功能,簡化了設定。「自建 Python MCP 伺服器」則在靈活性和擴展性方面具有優勢,但設定複雜度相對較高(圖中已將「設定複雜度」反轉,數值越高代表越不複雜/越簡單)。


MCP 生態系統心智圖

MCP 的運作涉及多個組件和概念。以下心智圖概述了 MCP 的生態系統,幫助您更清晰地理解其結構和相互關係。

mindmap root["MCP 生態系統"] id1["MCP 客戶端 (Clients)"] id1_1["大型語言模型 (LLMs)"] id1_2["AI 助理應用"] id1_2_1["Claude Desktop"] id1_2_2["Cursor IDE"] id1_2_3["其他 IDE 擴充功能"] id1_2_4["自訂應用程式"] id2["MCP 伺服器 (Servers)"] id2_1["功能類型"] id2_1_1["檔案系統存取"] id2_1_2["資料庫連接"] id2_1_3["API 整合"] id2_1_4["程式碼執行"] id2_1_5["網頁瀏覽控制"] id2_2["實現方式"] id2_2_1["使用 SDK 開發 (Python, Node.js 等)"] id2_2_2["現成開源伺服器"] id3["MCP 工具 (Tools)"] id3_1["定義方式 (@mcp.tool() 裝飾器等)"] id3_2["工具參數與回傳值"] id3_3["工具發現機制"] id4["傳輸協定 (Protocols)"] id4_1["stdio (標準輸入/輸出)"] id4_2["SSE (Server-Sent Events)"] id4_3["其他可能的協定 (如 HTTP/RPC)"] id5["資料與資源 (Data & Resources)"] id5_1["本地檔案"] id5_2["遠端資料庫"] id5_3["外部 API 服務"] id5_4["版本控制系統 (如 Git)"] id6["核心優勢"] id6_1["擴展 AI 能力"] id6_2["標準化互動"] id6_3["即時資料存取"] id6_4["安全性與可控性"]

這個心智圖展示了 MCP 的核心組成:客戶端應用(如 Claude Desktop 或 Cursor IDE)透過標準化的傳輸協定(如 stdio 或 SSE)與 MCP 伺服器通訊。伺服器則提供各種工具(如檔案讀寫、API 呼叫),讓 AI 能夠存取和操作外部資料與資源,從而極大地擴展了 AI 的應用邊界。


教學影片:深入掌握 MCP

若想更直觀地了解 MCP 的原理與實戰操作,以下這部影片提供了非常詳盡的指南,從基礎概念到伺服器配置和使用都有深入淺出的講解。這對於初學者和希望深入理解 MCP 的開發者都非常有幫助。

影片「MCP终极指南- 从原理到实战,带你深入掌握MCP(基础篇)」深入剖析了 MCP 的概念、伺服器配置、工具使用及交互流程。

觀看此影片可以幫助您:

  • 理解 MCP 的核心工作原理及其重要性。
  • 學習如何配置 MCP 伺服器,包括伺服器和工具的概念。
  • 了解 MCP 的完整交互流程,以及如何使用他人製作的 MCP 伺服器。
  • 掌握常見的 MCP 問題排查技巧。

常見問題 (FAQ)

MCP 是什麼?它有什麼用?

MCP (Model Context Protocol,模型上下文協定) 是一個開放標準協定,旨在讓大型語言模型 (LLM) 或 AI 助理能夠安全且標準化地與外部世界互動。它的主要用途是讓 AI 模型不再僅依賴其內建的靜態知識,而是可以即時存取和處理來自外部系統的資訊,例如讀取本地檔案、查詢資料庫、呼叫 API、控制瀏覽器等。簡而言之,MCP 為 AI 模型提供了一個標準化的「橋樑」,使其能夠連接各種資料來源和工具,從而擴展其功能和應用場景。

設定 MCP 伺服器需要程式設計知識嗎?

這取決於情況:

  • 使用現成的 MCP 伺服器:如果只是使用社群或他人已經開發好的 MCP 伺服器,通常不需要深入的程式設計知識。您只需要按照提供者的指南修改配置文件(通常是 JSON 格式),指定伺服器的路徑或 URL 即可。這主要涉及複製、貼上和修改一些參數。
  • 開發自訂的 MCP 伺服器:如果您需要特定的功能,想要自己開發一個 MCP 伺服器來提供特定的工具或連接特有的資料來源,那麼就需要程式設計知識。常用的開發語言包括 Python 和 Node.js,並且需要了解 MCP SDK 的使用方法。

總體而言,基本的使用和配置門檻不高,但進階的客製化開發則需要相應的程式設計技能。

我在哪裡可以找到現成的 MCP 伺服器?

您可以從以下幾個地方尋找現成的 MCP 伺服器:

  • GitHub:GitHub 是尋找開源 MCP 伺服器專案的主要平台。許多開發者和社群會分享他們創建的 MCP 伺服器,涵蓋檔案系統操作、API 整合、資料庫連接等多種功能。可以搜尋關鍵字如 "MCP server"、"Claude MCP tool" 等。
  • MCP 相關社群與論壇:一些 AI 或開發者社群(如 Reddit 的 r/ClaudeAI、相關的 Discord 伺服器)中,成員們會分享和討論 MCP 伺服器資源。
  • Awesome Lists:留意是否有 "Awesome MCP" 之類的資源彙整列表,這些列表通常會收集優秀的 MCP 相關專案和工具,例如 awesome-mcp-servers。
  • AI 工具平台:某些 AI 工具平台或 IDE(如 Cursor)可能會在其生態系統中直接提供或推薦一些 MCP 伺服器。

在使用第三方 MCP 伺服器時,請務必注意其來源的可靠性和安全性。

stdio 和 SSE 協定有什麼區別?我應該選擇哪一個?

stdio (標準輸入/輸出) 和 SSE (伺服器發送事件) 是 MCP 常用的兩種傳輸協定,它們的主要區別和選擇建議如下:

  • stdio:
    • 運作方式:MCP 客戶端透過將請求寫入 MCP 伺服器進程的標準輸入 (stdin),然後從伺服器的標準輸出 (stdout) 讀取回應。
    • 優點:設定簡單,非常適合本地執行的腳本或程式,不需要網路設定。
    • 缺點:通常僅限於本地進程間通訊,不適合遠端伺服器。
    • 適用場景:在本機執行一個 Python 腳本作為 MCP 伺服器來操作本地檔案系統或執行本地指令。
  • SSE (Server-Sent Events):
    • 運作方式:基於 HTTP 協定,MCP 伺服器透過一個持久的 HTTP 連接單向地向 MCP 客戶端推送事件流。
    • 優點:允許伺服器主動向客戶端發送即時更新,適合需要持續監控或接收數據流的場景,可以跨網路連接。
    • 缺點:設定比 stdio 稍複雜,需要一個 HTTP 伺服器端點。
    • 適用場景:監控某個 API 的即時變化、接收來自資料庫的即時通知、串流日誌數據等。

選擇建議:

  • 如果您的 MCP 伺服器是一個本地腳本,主要用於處理本地任務,且不需要即時串流數據,那麼 stdio 是一個簡單有效的選擇。
  • 如果您需要 MCP 伺服器能夠被遠端客戶端存取,或者需要伺服器能夠主動向客戶端推送即時更新,那麼 SSE (或其他基於 HTTP 的協定) 會更合適。
MCP 設定中最常見的問題是什麼?

MCP 設定過程中可能會遇到一些常見問題,主要包括:

  • 路徑配置錯誤:在 stdio 協定中,command (執行檔路徑) 或 args (腳本路徑) 配置不正確,導致客戶端無法啟動或找到 MCP 伺服器。請確保使用絕對路徑,並檢查檔案是否存在及具有執行權限。
  • 配置文件格式錯誤:JSON 或 YAML 配置文件的語法錯誤,例如括號不匹配、引號使用不當、逗號遺漏或多餘等,都會導致解析失敗。建議使用 Linter 或格式化工具檢查配置文件。
  • 環境變數或依賴問題:MCP 伺服器腳本可能依賴特定的環境變數或未安裝的函式庫。確保伺服器運行的環境已正確配置。
  • 協定不匹配:客戶端配置的協定類型 (stdio 或 SSE) 與伺服器實際提供的協定不一致。
  • 權限問題:MCP 伺服器可能沒有足夠的權限來讀寫檔案、存取網路或執行某些操作。
  • 伺服器未啟動或崩潰:在客戶端嘗試連接之前,確保 MCP 伺服器已經成功啟動並正在運行。檢查伺服器端的日誌以排除崩潰情況。
  • 防火牆或網路問題:對於使用 SSE 或其他基於網路協定的 MCP 伺服器,防火牆設定或網路連接問題可能阻止客戶端與伺服器通訊。
  • 工具定義或呼叫問題:伺服器端工具定義不正確,或客戶端呼叫工具時參數不匹配,都可能導致錯誤。

解決這些問題通常需要仔細檢查配置文件、查閱伺服器和客戶端的日誌,並逐步排除可能的原因。


推薦探索

若您想進一步了解 MCP 的相關應用與技術,以下是一些值得探索的主題:


參考資料

解鎖 AI 的無限潛能:MCP 設定全攻略,讓您的模型連接萬物!

深入了解模型上下文協定 (MCP) 的設定步驟、核心概念與實戰應用,賦予您的 AI 助理前所未有的互動能力。

模型上下文協定 (Model Context Protocol, MCP) 是一項開創性的開放標準,旨在讓大型語言模型 (LLM) 如同擁有萬能鑰匙,能夠安全且標準化地與外部世界溝通。透過 MCP,您的 AI 助理不再僅限於其訓練數據中的靜態知識,而是能夠即時存取檔案系統、呼叫 API、查詢資料庫,甚至與其他應用程式互動。這份指南將帶您一步步完成 MCP 的設定,釋放 AI 的真正潛力。

核心洞察:MCP 設定要點速覽

  • 標準化橋樑:MCP 作為 AI 模型與外部資料和工具之間的標準化介面,簡化了整合過程,促進了不同系統間的互操作性。
  • 客戶端-伺服器架構:MCP 的運作基於客戶端(如 AI 應用程式)和伺服器(提供資料或工具存取)之間的通訊,允許靈活的部署和擴展。
  • 工具賦能:透過 MCP,AI 模型可以使用由伺服器提供的「工具」來執行特定任務,例如讀取文件、修改資料或執行程式碼,大幅擴展其實用性。

MCP 基礎:理解運作原理

在深入設定之前,讓我們先了解 MCP 的幾個核心概念:

MCP 的組成部分

  • MCP 客戶端 (Client):通常是大型語言模型或 AI 助理應用程式(例如 Claude Desktop、Cursor IDE 或其他支援 MCP 的平台)。客戶端發起請求,希望透過 MCP 存取外部資源或執行工具。
  • MCP 伺服器 (Server):負責提供對特定資料來源或工具的存取。它可以是操作檔案系統的伺服器、連接資料庫的伺服器,或是封裝了外部 API 的伺服器。一個 MCP 客戶端可以連接到多個不同的 MCP 伺服器。
  • MCP 工具 (Tools):由 MCP 伺服器定義和提供的具體功能。例如,「讀取檔案內容」、「查詢特定資料」、「執行一段程式碼」等都可以被定義為工具。AI 模型透過呼叫這些工具來與外部世界互動。
  • 傳輸協定 (Transport Protocols):MCP 支援不同的傳輸層協定來實現客戶端與伺服器之間的通訊。最常見的兩種是:
    • stdio (標準輸入/輸出):一種簡單直接的協定,常用於本地端伺服器與客戶端的通訊,設定相對容易。
    • SSE (Server-Sent Events):允許伺服器向客戶端單向推送即時更新,適用於需要持續接收數據流的場景。
  • 配置文件:用於指定 MCP 客戶端如何連接到 MCP 伺服器,包括伺服器的位址、使用的協定、執行的命令以及可能的認證資訊。例如,Claude Desktop 使用 claude_desktop_config.json 檔案進行配置。
MCP 伺服器設定介面範例

一個 MCP 伺服器設定介面的範例,顯示了伺服器名稱、協定和命令等配置項。

MCP 設定詳解:一步步指南

設定 MCP 的過程主要涉及準備環境、建立或配置 MCP 伺服器,以及設定 MCP 客戶端以連接該伺服器。以下步驟將引導您完成整個過程。

階段一:環境準備

安裝必要工具

大多數 MCP 伺服器,特別是自建伺服器,常使用 Python 或 Node.js 進行開發。因此,您需要確保您的系統已安裝相應的運行環境。

  • Python 環境:
    • 建議安裝 Python 3.8 或更高版本。
    • 使用 pip(Python 的套件安裝器)安裝 MCP SDK:pip install mcp。
    • 考慮使用虛擬環境 (venv) 來管理專案依賴,避免版本衝突:
      python -m venv my_mcp_env
      # 在 Linux/macOS 上啟動
      source my_mcp_env/bin/activate
      # 在 Windows 上啟動
      my_mcp_env\Scripts\activate
  • Node.js 環境:如果您計劃使用或開發基於 Node.js 的 MCP 伺服器或客戶端,請確保已安裝 Node.js 和 npm (Node Package Manager)。
  • 其他依賴:某些 MCP 伺服器可能需要額外的函式庫,例如用於網路請求的 requests 或用於數據處理的函式庫。請根據您選擇或開發的伺服器要求進行安裝。

階段二:建立與設定 MCP 伺服器

您可以選擇使用社群提供的現成 MCP 伺服器,或根據需求自行開發。自行開發通常涉及使用 MCP SDK 定義工具。

選擇或開發 MCP 伺服器

  • 使用現成伺服器:GitHub 等平台上有許多開源的 MCP 伺服器專案 (例如 Awesome MCP Servers 列表),提供檔案存取、資料庫連接等功能。
  • 自行開發伺服器 (以 Python 為例):

    使用 Python MCP SDK,您可以透過 @mcp.tool() 裝飾器輕鬆定義工具。以下是一個簡單的範例:

    import mcp
    
    @mcp.tool()
    def get_file_content(filepath: str) -> str:
        """
        讀取指定檔案的內容。
        :param filepath: 檔案的絕對路徑。
        :return: 檔案內容字串,或錯誤訊息。
        """
        try:
            with open(filepath, 'r', encoding='utf-8') as f:
                content = f.read()
            return content
        except Exception as e:
            return f"讀取檔案失敗: {str(e)}"
    
    if __name__ == "__main__":
        # 這裡可以添加啟動伺服器的邏輯,通常使用 stdio 協定
        # 例如,如果 mcp SDK 提供了 run 方法
        # mcp.run_server(stdio=True) # 假設的啟動方式,請參考具體 SDK 文件
        print("MCP 伺服器已準備就緒,等待客戶端透過 stdio 連接...")
        # 實際的伺服器啟動方式會依賴 MCP SDK 的具體實現
        # 通常,一個使用 stdio 的 MCP 伺服器會監聽標準輸入並將結果輸出到標準輸出
        # 這裡僅為示意,實際啟動需參考 MCP SDK 文件或範例
        pass
                

    啟動這樣的伺服器後,它將等待 MCP 客戶端的呼叫。

配置 MCP 伺服器 (主要針對客戶端設定)

MCP 伺服器本身的配置可能涉及指定允許存取的路徑、API 金鑰等。而客戶端連接伺服器時,通常需要一個配置文件來指定如何找到並與伺服器通訊。

例如,在 Claude Desktop 中,您需要修改其配置文件 (通常是 claude_desktop_config.json)。在 macOS 上,此文件通常位於 ~/Library/Application Support/Claude/claude_desktop_config.json。如果文件不存在,您需要手動創建它。

一個典型的 stdio 伺服器配置可能如下所示:

{
  "servers": [
    {
      "name": "MyLocalFileServer",
      "protocol": "stdio",
      "command": "/usr/local/bin/python", // Python 解譯器的路徑
      "args": [
        "/path/to/your/mcp_server.py" // 您的 MCP 伺服器腳本路徑
      ],
      "working_directory": "/path/to/your/project", // 腳本的工作目錄 (可選)
      "tools": [ // (可選) 預先聲明此伺服器提供的工具
        "get_file_content"
      ]
    }
  ]
}
    

對於 SSE 伺服器,配置可能如下:

{
  "servers": [
    {
      "name": "MyRemoteDataServer",
      "protocol": "sse",
      "url": "http://localhost:8000/mcp_events", // SSE 伺服器的端點 URL
      "headers": { // (可選) 任何需要的 HTTP 標頭,例如認證
        "Authorization": "Bearer your_api_key"
      },
      "tools": [
        "get_realtime_updates"
      ]
    }
  ]
}
    

在 Cursor IDE 或其他支援 MCP 的平台中,通常會有圖形化介面來新增和配置 MCP 伺服器,您需要填寫類似的資訊,如伺服器名稱、協定類型、執行命令或 URL。

階段三:設定並連接 MCP 客戶端

配置好 MCP 伺服器後,您需要在 AI 應用程式(MCP 客戶端)中設定連接。

  • Claude Desktop:如上所述,透過修改 claude_desktop_config.json 檔案來添加您的 MCP 伺服器配置。儲存檔案後,重新啟動 Claude Desktop,新的 MCP 工具應該就可以在聊天中被 AI 模型發現和使用了。
  • Cursor IDE:通常在「Settings」或「Features」選單下有專門的「MCP」或「AI Tools」部分。您可以點擊「Add New MCP Server」,然後選擇協定類型(stdio 或 sse),並填寫相應的命令或 URL。
  • 其他應用程式:查閱該應用程式的官方文件,了解其 MCP 設定的具體步驟。

連接成功後,AI 模型就能夠在需要時呼叫 MCP 伺服器提供的工具。例如,您可以對 AI 說:「嘿,Claude,請幫我讀取桌面上的 notes.txt 檔案內容」,如果您的 MCP 伺服器提供了相應的檔案讀取工具,AI 就會透過 MCP 完成這個任務。

階段四:測試與除錯

設定完成後,務必進行測試以確保一切運作正常:

  • 驗證工具可用性:在 MCP 客戶端中嘗試呼叫您設定的工具。檢查 AI 是否能夠正確理解您的指令並執行工具。
  • 檢查日誌:MCP 伺服器端和客戶端通常都會有日誌輸出。如果遇到問題,檢查日誌可以幫助定位錯誤原因(例如路徑錯誤、權限問題、協定不匹配等)。
  • 逐步測試:從簡單的工具開始測試,逐步增加複雜性。

MCP 傳輸協定比較

選擇合適的傳輸協定對於 MCP 的效能和適用性至關重要。以下表格比較了最常用的兩種協定:stdio 和 SSE。

特性 stdio (標準輸入/輸出) SSE (伺服器發送事件)
通訊方式 雙向,基於標準輸入和標準輸出流。客戶端發送請求到伺服器的 stdin,伺服器透過 stdout 回應。 單向,伺服器向客戶端推送事件流。主要用於伺服器主動向客戶端發送更新。
設定複雜度 相對簡單,尤其適用於本地執行的腳本或程式。 中等,需要設定 HTTP 端點,並處理事件流格式。
即時性 請求-回應模式,即時性取決於伺服器處理速度。 高,伺服器可以即時推送數據更新給客戶端。
適用場景 本地工具執行、簡單的資料查詢、不需要持續連接的任務。 即時通知、監控數據流、需要伺服器主動更新的應用。
連接性 通常用於本地進程間通訊。 基於 HTTP,可跨網路連接。

理解這些差異有助於您根據具體需求選擇最合適的傳輸協定。


MCP 設定考量因素雷達圖

在設定 MCP 時,有多個因素需要考量。下方的雷達圖呈現了針對不同 MCP 設定情境的相對評估(分數越高代表該方面表現越好或越重要,滿分10分)。這是一個主觀的評估,旨在提供一個概念性的比較參考。

此雷達圖分析了幾種常見的 MCP 設定方式。例如,「Claude Desktop (stdio 本地伺服器)」在易用性方面表現不錯,但擴展性可能不如自建伺服器。「Cursor IDE」提供了較好的內建管理功能,簡化了設定。「自建 Python MCP 伺服器」則在靈活性和擴展性方面具有優勢,但設定複雜度相對較高(圖中已將「設定複雜度」反轉,數值越高代表越不複雜/越簡單)。


MCP 生態系統心智圖

MCP 的運作涉及多個組件和概念。以下心智圖概述了 MCP 的生態系統,幫助您更清晰地理解其結構和相互關係。

mindmap root["MCP 生態系統"] id1["MCP 客戶端 (Clients)"] id1_1["大型語言模型 (LLMs)"] id1_2["AI 助理應用"] id1_2_1["Claude Desktop"] id1_2_2["Cursor IDE"] id1_2_3["其他 IDE 擴充功能"] id1_2_4["自訂應用程式"] id2["MCP 伺服器 (Servers)"] id2_1["功能類型"] id2_1_1["檔案系統存取"] id2_1_2["資料庫連接"] id2_1_3["API 整合"] id2_1_4["程式碼執行"] id2_1_5["網頁瀏覽控制"] id2_2["實現方式"] id2_2_1["使用 SDK 開發 (Python, Node.js 等)"] id2_2_2["現成開源伺服器"] id3["MCP 工具 (Tools)"] id3_1["定義方式 (@mcp.tool() 裝飾器等)"] id3_2["工具參數與回傳值"] id3_3["工具發現機制"] id4["傳輸協定 (Protocols)"] id4_1["stdio (標準輸入/輸出)"] id4_2["SSE (Server-Sent Events)"] id4_3["其他可能的協定 (如 HTTP/RPC)"] id5["資料與資源 (Data & Resources)"] id5_1["本地檔案"] id5_2["遠端資料庫"] id5_3["外部 API 服務"] id5_4["版本控制系統 (如 Git)"] id6["核心優勢"] id6_1["擴展 AI 能力"] id6_2["標準化互動"] id6_3["即時資料存取"] id6_4["安全性與可控性"]

這個心智圖展示了 MCP 的核心組成:客戶端應用(如 Claude Desktop 或 Cursor IDE)透過標準化的傳輸協定(如 stdio 或 SSE)與 MCP 伺服器通訊。伺服器則提供各種工具(如檔案讀寫、API 呼叫),讓 AI 能夠存取和操作外部資料與資源,從而極大地擴展了 AI 的應用邊界。


教學影片:深入掌握 MCP

若想更直觀地了解 MCP 的原理與實戰操作,以下這部影片提供了非常詳盡的指南,從基礎概念到伺服器配置和使用都有深入淺出的講解。這對於初學者和希望深入理解 MCP 的開發者都非常有幫助。

影片「MCP终极指南- 从原理到实战,带你深入掌握MCP(基础篇)」深入剖析了 MCP 的概念、伺服器配置、工具使用及交互流程。

觀看此影片可以幫助您:

  • 理解 MCP 的核心工作原理及其重要性。
  • 學習如何配置 MCP 伺服器,包括伺服器和工具的概念。
  • 了解 MCP 的完整交互流程,以及如何使用他人製作的 MCP 伺服器。
  • 掌握常見的 MCP 問題排查技巧。

常見問題 (FAQ)

MCP 是什麼?它有什麼用?

MCP (Model Context Protocol,模型上下文協定) 是一個開放標準協定,旨在讓大型語言模型 (LLM) 或 AI 助理能夠安全且標準化地與外部世界互動。它的主要用途是讓 AI 模型不再僅依賴其內建的靜態知識,而是可以即時存取和處理來自外部系統的資訊,例如讀取本地檔案、查詢資料庫、呼叫 API、控制瀏覽器等。簡而言之,MCP 為 AI 模型提供了一個標準化的「橋樑」,使其能夠連接各種資料來源和工具,從而擴展其功能和應用場景。

設定 MCP 伺服器需要程式設計知識嗎?

這取決於情況:

  • 使用現成的 MCP 伺服器:如果只是使用社群或他人已經開發好的 MCP 伺服器,通常不需要深入的程式設計知識。您只需要按照提供者的指南修改配置文件(通常是 JSON 格式),指定伺服器的路徑或 URL 即可。這主要涉及複製、貼上和修改一些參數。
  • 開發自訂的 MCP 伺服器:如果您需要特定的功能,想要自己開發一個 MCP 伺服器來提供特定的工具或連接特有的資料來源,那麼就需要程式設計知識。常用的開發語言包括 Python 和 Node.js,並且需要了解 MCP SDK 的使用方法。

總體而言,基本的使用和配置門檻不高,但進階的客製化開發則需要相應的程式設計技能。

我在哪裡可以找到現成的 MCP 伺服器?

您可以從以下幾個地方尋找現成的 MCP 伺服器:

  • GitHub:GitHub 是尋找開源 MCP 伺服器專案的主要平台。許多開發者和社群會分享他們創建的 MCP 伺服器,涵蓋檔案系統操作、API 整合、資料庫連接等多種功能。可以搜尋關鍵字如 "MCP server"、"Claude MCP tool" 等。
  • MCP 相關社群與論壇:一些 AI 或開發者社群(如 Reddit 的 r/ClaudeAI、相關的 Discord 伺服器)中,成員們會分享和討論 MCP 伺服器資源。
  • Awesome Lists:留意是否有 "Awesome MCP" 之類的資源彙整列表,這些列表通常會收集優秀的 MCP 相關專案和工具,例如 awesome-mcp-servers。
  • AI 工具平台:某些 AI 工具平台或 IDE(如 Cursor)可能會在其生態系統中直接提供或推薦一些 MCP 伺服器。

在使用第三方 MCP 伺服器時,請務必注意其來源的可靠性和安全性。

stdio 和 SSE 協定有什麼區別?我應該選擇哪一個?

stdio (標準輸入/輸出) 和 SSE (伺服器發送事件) 是 MCP 常用的兩種傳輸協定,它們的主要區別和選擇建議如下:

  • stdio:
    • 運作方式:MCP 客戶端透過將請求寫入 MCP 伺服器進程的標準輸入 (stdin),然後從伺服器的標準輸出 (stdout) 讀取回應。
    • 優點:設定簡單,非常適合本地執行的腳本或程式,不需要網路設定。
    • 缺點:通常僅限於本地進程間通訊,不適合遠端伺服器。
    • 適用場景:在本機執行一個 Python 腳本作為 MCP 伺服器來操作本地檔案系統或執行本地指令。
  • SSE (Server-Sent Events):
    • 運作方式:基於 HTTP 協定,MCP 伺服器透過一個持久的 HTTP 連接單向地向 MCP 客戶端推送事件流。
    • 優點:允許伺服器主動向客戶端發送即時更新,適合需要持續監控或接收數據流的場景,可以跨網路連接。
    • 缺點:設定比 stdio 稍複雜,需要一個 HTTP 伺服器端點。
    • 適用場景:監控某個 API 的即時變化、接收來自資料庫的即時通知、串流日誌數據等。

選擇建議:

  • 如果您的 MCP 伺服器是一個本地腳本,主要用於處理本地任務,且不需要即時串流數據,那麼 stdio 是一個簡單有效的選擇。
  • 如果您需要 MCP 伺服器能夠被遠端客戶端存取,或者需要伺服器能夠主動向客戶端推送即時更新,那麼 SSE (或其他基於 HTTP 的協定) 會更合適。
MCP 設定中最常見的問題是什麼?

MCP 設定過程中可能會遇到一些常見問題,主要包括:

  • 路徑配置錯誤:在 stdio 協定中,command (執行檔路徑) 或 args (腳本路徑) 配置不正確,導致客戶端無法啟動或找到 MCP 伺服器。請確保使用絕對路徑,並檢查檔案是否存在及具有執行權限。
  • 配置文件格式錯誤:JSON 或 YAML 配置文件的語法錯誤,例如括號不匹配、引號使用不當、逗號遺漏或多餘等,都會導致解析失敗。建議使用 Linter 或格式化工具檢查配置文件。
  • 環境變數或依賴問題:MCP 伺服器腳本可能依賴特定的環境變數或未安裝的函式庫。確保伺服器運行的環境已正確配置。
  • 協定不匹配:客戶端配置的協定類型 (stdio 或 SSE) 與伺服器實際提供的協定不一致。
  • 權限問題:MCP 伺服器可能沒有足夠的權限來讀寫檔案、存取網路或執行某些操作。
  • 伺服器未啟動或崩潰:在客戶端嘗試連接之前,確保 MCP 伺服器已經成功啟動並正在運行。檢查伺服器端的日誌以排除崩潰情況。
  • 防火牆或網路問題:對於使用 SSE 或其他基於網路協定的 MCP 伺服器,防火牆設定或網路連接問題可能阻止客戶端與伺服器通訊。
  • 工具定義或呼叫問題:伺服器端工具定義不正確,或客戶端呼叫工具時參數不匹配,都可能導致錯誤。

解決這些問題通常需要仔細檢查配置文件、查閱伺服器和客戶端的日誌,並逐步排除可能的原因。


推薦探索

若您想進一步了解 MCP 的相關應用與技術,以下是一些值得探索的主題:


參考資料

threads.com
Threads
threads.net
Threads

Last updated May 13, 2025

AI-assisted research. Sources, methodology and corrections · Source-checked guides and tools · Explore published answers

Ask Ithy AI