# n8n MCP 自動化教學:整合 MCP Server Trigger 與 MCP Client Tool --- ## 前言 ### 什麼是 MCP? **MCP** 全名為 **Model Context Protocol(模型上下文協議)**,由三個核心概念組成: - **Model(模型)**:指的是 AI 模型,例如 GPT、Claude。 - **Context(脈絡)**:給模型的額外資料,讓它更懂你的需求。 - **Protocol(協定)**:一種通用標準,讓不同工具彼此溝通。 --- ### 為什麼需要 MCP? > 傳統的 AI 助理(如 ChatGPT、Claude)雖然擅長生成文字,卻無法主動存取你的本地電腦、資料庫或網路服務。 > **MCP 的出現,就像一座橋樑,讓 AI 能安全且有效地「操作外部世界」。** MCP 是一個 **開放原始碼的協定**,讓 AI 不再只是「說話的機器」,而是能真正幫你完成任務的**數位助理**。 --- ## MCP 實作教學 ### n8n 環境設定 1. 建立 n8n 專用 Volume: ```bash docker volume create n8n_data ``` 2. 啟動本地 n8n 服務: ```bash docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n ``` --- ### API 金鑰申請 - [🔗 Gemini API](https://aistudio.google.com/apikey) - [🔭 NASA API](https://api.nasa.gov/) --- ## MCP 流程說明 在使用 MCP 前,至少要建立兩個 Workflow: - **MCP Server**:提供服務的端點。 - **MCP Client**:發送請求並接收回應。 --- ## MCP Server 設定流程 ### 建立 MCP Server 節點 **說明:** MCP Server 是處理 AI 請求的主要入口 ![建立 MCP Server](https://hackmd.io/_uploads/Skr6vmA8xg.png) --- ### 設定 NASA API 工具 **說明:** 利用 API 擷取每日天文圖 ![設定 NASA 工具](https://hackmd.io/_uploads/HyLMOQ0Ixg.png) --- ### 發送到 Discord **說明:** 將圖文結果自動推送至 Discord ![發送 Discord](https://hackmd.io/_uploads/ByfUOm0Ixl.png) --- ## MCP Client 設定流程 ### 建立 MCP Client **說明:** MCP Client 負責向 MCP Server 發出請求 ![建立 MCP Client](https://hackmd.io/_uploads/rynsd70Lle.png) --- ### 設定 AI Agent **說明:** 貼上 Prompt,讓 AI 能理解輸入的意圖 <details> <summary>📄 Prompt 內容點我展開</summary> ``` {{ $json.chatInput }} 如果是算術問題,先從{{ $json.chatInput }}中提取出題目當作x,回傳的格式要是: x = 答案 {{ $json.chatInput }} 如果是獲取天文圖,要以繁體中文,且語意流暢回傳,回傳的格式是,有\n要換行: 標題:\n 日期:\n 圖片描述:\n 圖片:將圖片直接印出來 {{ $json.chatInput }} 如果是將天文圖發送到 Discord,要以繁體中文,且語意流暢回傳,格式要是,有\n要換行: 標題:\n 日期:\n 圖片描述:\n 圖片:將圖片直接印出來 ``` </details> ![AI Agent 設定](https://hackmd.io/_uploads/r1Rut7CLge.png) --- ### 設定 Gemini AI ![設定 Gemini](https://hackmd.io/_uploads/HJUf5mRLgx.png) --- ### 設定 MCP Client Tool ![MCP Client Tool](https://hackmd.io/_uploads/r1ynqXA8gg.png) ![MCP Client Tool 詳細](https://hackmd.io/_uploads/HkSvcQA8lx.png) --- ## 測試功能展示 ### 測試算術問題 > **輸入**:`123 + 456` ![算術測試](https://hackmd.io/_uploads/B1L097AIxg.png) --- ### 測試取得天文圖 > **輸入**:`獲取天文圖` ![天文圖測試](https://hackmd.io/_uploads/BywgjXRIxg.png) --- ### 測試發送至 Discord > **輸入**:`獲取天文圖並發送資訊到 Discord` ![發送測試](https://hackmd.io/_uploads/SJBzsXCIlx.png) --- ## 作業挑戰 ✅ 嘗試延伸應用,整合不同資料來源與工具: - [ ] 整合 OpenWeather API,查詢天氣並發送至 Discord。