iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0
生成式 AI

三十天解鎖上下文超能力:MCP 實戰系列 第 9

Day 9 - 使用 n8n 打造新聞GNews查詢 mcp server

  • 分享至 

  • xImage
  •  

大家好,鐵人賽第九天,我們的 AI Agent 即將學會一項新技能:閱讀新聞!

昨天,我們成功打造了天氣查詢工具,讓 AI Agent 能夠連接外部世界。今天,我們要在此基礎上,為我們的 MCPClient 伺服器新增第二個強大的工具——「關鍵字新聞查詢」

這個專案將會教我們如何處理更複雜的 API 回應,特別是當 API 回傳的是一個包含多筆資料的「列表」或「陣列 (Array)」時,我們該如何進行解析和總結。

最終的成果,就是下圖這個能夠根據你的指令,去網路上搜尋相關新聞並整理成摘要的智慧助理!

截圖 2025-09-03 下午3.21.11

一、架構擴展:為 MCP Server 新增能力

我們的架構與 Day 8 相同,採用職責分離的三工作流模式。但這次,我們不是從零開始,而是在現有的基礎上進行擴展:

  1. 新建 News 工作流: 打造一個全新的「新聞查詢邏輯核心」。
  2. 修改 MCPClient 工作流: 將新建的 News 工具,掛載到我們現有的 MCP Server 上,讓它同時擁有天氣和新聞兩種能力。
  3. 無需修改 MCP Demo 工作流: 我們的 AI Agent 會自動發現伺服器新增的工具,完全不用修改!

二、步驟一:建立「新聞邏輯核心」工作流

首先,我們來建立處理新聞資料的 News 工作流。

  1. 獲取新聞 API Key:
    • 我們將使用 GNews.io 作為新聞來源。請前往其官網註冊一個免費帳號,獲取一組 API Key。
    • 回到 n8n,將這組 Key 存儲在你的憑證 (Credentials) 中,方便後續使用。
  2. 新建工作流,並命名為 News
  3. 觸發器: 同樣使用 When Executed by Another Workflow 節點,並且設定一個傳入的值。
  4. HTTP Request 節點:
    • URL: https://gnews.io/api/v4/search
    • Query Parameters: 新增參數:
      參數說明
{
  "q": "{{ $json.title }}", // 搜尋關鍵字
  "lang": "zh", // 語言:搜尋繁體中文的新聞。
  "country": "tw", // 國家:篩選在台灣發布的新聞。
  "max": 10, // 數量:最多回傳 10 篇文章。
  "sortby": "publishedAt", // 排序:依照發布時間排序,最新的在最前面。
  "in": "title,description", // 搜尋範圍:只在文章的「標題」和「描述」中尋找關鍵字。
  "apikey": "YourApiKey" // 你的 API KEY
} 
  1. Edit Fields (或 Set) 節點:

    • 新聞 API 回傳的是一個包含多篇文章的陣列 (Array),通常在 articles 欄位下。
      截圖 2025-09-03 下午3.25.25
  2. Basic LLM Chain 節點:

    • 將上一步提取出的文章列表,交給 Gemini 模型。
    • Prompt: 你是一位專業的資深新聞編輯與分析師。請分析以下我提供的 JSON 格式新聞資料,並依照下列要求,整理成一份精簡、客觀、易於閱讀的重點新聞摘要: **整理要求:** 1. **總體摘要**:在開頭提供一個 2-3 句話的總體摘要,點出今日新聞最重要的趨勢或事件。 2. **分類整理**:將新聞分門別類(例如:科技、財經、國際等),如果新聞不足以分類,則不需分類。 3. **單篇摘要**:在各自的分類下,將每篇新聞整理成以下格式: * **標題**:[此處填寫新聞標題] * - [重點一] * - [重點二] * - [重點三] * [來源:來源名稱] [連結:原始URL] 請確保你的語氣專業中立,並使用繁體中文(台灣)進行回應。 **以下是新聞資料:** {{ $json.news }}
  3. 儲存並啟用 (Active) 工作流。

News 工作流完美展示了如何呼叫 GNews API,並利用 LLM 將多筆新聞結果整理成一份高品質的摘要。

完成圖如下:
截圖 2025-09-03 下午3.22.39

截圖 2025-09-03 下午2.40.46

三、步驟二:升級我們的 MCPClient 伺服器

現在,讓我們的「專案經理」學會這項新技能。

  1. 打開 MCPClient 工作流。
  2. 你會看到 MCP Server Trigger 下方已經掛載了昨天的「計算機」和「天氣」工具。
  3. 點擊 MCP Server Trigger 下方的 + 號,選擇 Add Tool -> Call n8n Workflow Tool,新增第三個工具。
  4. 設定新工具:
    • Tool Name: news
    • Tool Description: 當使用者需要查詢關於特定主題、人物、公司或事件的【即時】或【最新】新聞報導時,請使用此工具。此工具非常適合用來回答關於近期發生的事件,因為你自己的內建知識可能已經過時。此工具需要一個新聞主題或關鍵字作為輸入參數。例如,當使用者問「AI 最近有什麼新發展?」或「台灣最新的財經新聞是什麼?」,就應該使用此工具。
    • Properties (輸入參數): 新增一個名為 title 的參數。
    • Workflow to Call: 選擇我們剛剛建立的 News 工作流。
  5. 儲存並確保工作流為啟用 (Active) 狀態。

我們的 MCPClient 現在是一個擁有多種能力的強大 MCP 伺服器,同時提供了計算、新聞和天氣三種工具。
截圖 2025-09-03 下午2.37.17

四、終極測試:與更聰明的 AI Agent 對話

最激動人心的時刻來了!我們完全不需要修改 MCP Demo 主流程。AI Agent 的「工具發現」機制會自動檢測到伺服器端的新能力。

  1. 打開 MCP Demo 工作流的聊天視窗。
  2. 下達一個全新的指令:

    幫我找一篇關於 iphone 17 的新聞

你會看到,AI Agent 理解了你的意圖,準確地從三個可用工具中選擇了 News 工具,並將 iphone 17 作為 query 參數傳遞過去。最終,它將 News 工作流精心整理好的新聞摘要,完美地呈現在你的眼前。

截圖 2025-09-03 下午2.36.44

五、今日總結

今天,我們不僅成功打造了一個新的工具,更重要的是,我們學會了如何**「擴展」**一個 MCP 伺服器。

  • 處理陣列資料: 我們掌握了從 API 回傳的列表中提取和處理多筆資料的技巧。
  • 模組化與擴充性: 我們證明了 MCP 架構的優雅之處——新增一個新能力,只需要專注於建立工具本身,然後將它「註冊」到伺服器上即可,對客戶端完全無感。

我們的 AI Agent 變得越來越厲害了!


上一篇
Day 8 - 使用 n8n 打造一個天氣查詢 MCP Server
系列文
三十天解鎖上下文超能力:MCP 實戰9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言