iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
生成式 AI

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

Day 10 - 使用 n8n 打造依照使用者心情獲取spotify歌單 mcp server

  • 分享至 

  • xImage
  •  

大家好,鐵人賽堂堂邁入第十天!

在前兩天,我們教會了 AI Agent 如何查詢天氣和新聞,這些都是基於明確指令的任務。今天,我們要挑戰一個更「人性化」、更「模糊」的主題:讓 AI Agent 根據使用者的「心情」,推薦相對應的 Spotify 歌單!

這個專案不僅有趣,還會讓我們學會如何處理更複雜的 OAuth 2.0 認證,這是串接許多主流平台(如 Google, Facebook, Spotify 等)時都必須掌握的關鍵技能。

最終,你將擁有一個如下圖所示,能理解你心情的音樂助理!

截圖 2025-09-03 下午4.59.10

一、核心挑戰:Spotify 的 OAuth 2.0 認證

與之前的天氣、新聞 API 直接使用 API Key 不同,Spotify API 需要遵循 OAuth 2.0 的「客戶端憑證流程 (Client Credentials Flow)」,簡單來說分為兩步:

  1. 獲取令牌 (Access Token): 我們需要先拿著我們的 Client IDClient Secret,去跟 Spotify 的認證伺服器換取一個有時效性的「存取令牌 (Access Token)」。
  2. 使用令牌請求資料: 在後續的所有 API 請求中(例如搜尋歌單),我們都必須在請求標頭 (Header) 中帶上這個令牌,以證明我們的身份。

這意味著我們的「邏輯核心」工作流中,至少需要兩個 HTTP Request 節點來完成這個流程。

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

我們同樣從建立最內層的「工人」——searchForItem 工作流開始。

  1. 獲取 Spotify 憑證:

    • 前往 Spotify for Developers Dashboard,登入並建立一個新的 App。
    • 你會得到一組 Client IDClient Secret。請妥善保管它們,並將其存入 n8n 的憑證庫中。
  2. 新建工作流,並命名為 searchForItem

  3. 觸發器: 使用 When Executed by Another Workflow 節點,並且設定傳入的參數mood

  4. 第一個 HTTP Request 節點 (獲取 Token):

    • Method: POST
    • URL: https://accounts.spotify.com/api/token
    • Authentication: Header Auth
    • Header Name: Authorization
    • Header Value: 這裡需要 Basic 認證。其值是 Base64Encode(你的ClientID:你的ClientSecret)。你可以使用 n8n 的表達式或線上工具生成。
    • Body Content Type: application/x-www-form-urlencoded
    • Body Parameters: 新增一個參數 grant_type,值為 client_credentials
    • 截圖 2025-09-03 下午5.06.29
    • 截圖 2025-09-03 下午5.06.52
  5. 第二個 HTTP Request 節點 (搜尋歌單):

    • Method: GET
    • URL (使用表達式): https://api.spotify.com/v1/search?q={{ $json.query }}&type=playlist&limit=5
    • Authentication: Header Auth
    • Header Name: Authorization
    • Header Value (使用表達式): Bearer {{ $('HTTP Request').item.json.access_token }}。這個表達式會從上一個 HTTP Request 節點的輸出中,取得 access_token
    • 截圖 2025-09-03 下午5.08.00
    • 截圖 2025-09-03 下午5.08.21
  6. Edit Fields (或 Set) 節點:

    • 從回傳的歌單列表中,提取出我們需要的 external_urls.spotify (也就是歌單的公開連結)。
  7. Basic LLM Chain 節點:

    • Prompt: 你是一位友善的音樂 DJ。請根據下面提供的 Spotify 歌單連結列表,用繁體中文生成一段推薦語,並以條列式清單呈現歌單。
  8. 儲存並啟用 (Active) 工作流。

這個工作流完美展示了先 POST 請求 Token,再 GET 請求資料的 OAuth 2.0 完整流程。

截圖 2025-09-03 下午4.54.34

三、步驟二:在 MCPClient 伺服器上新增「點歌」工具

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

  1. 打開 MCPClient 工作流。
  2. MCP Server Trigger 下方新增第四個工具 (Call n8n Workflow Tool)。
  3. 設定新工具:
    • Tool Name: get_spotify_playlist_by_mood
    • Tool Description: 根據使用者描述的心情或情境(例如:放鬆、派對、運動),推薦適合的 Spotify 歌單
    • Properties (輸入參數): 新增一個名為 query 的參數。
    • Workflow to Call: 選擇我們剛剛建立的 searchForItem 工作流。
  4. 儲存並確保工作流為啟用 (Active) 狀態。

我們的 MCP 伺服器現在更加多才多藝了!

截圖 2025-09-03 下午5.03.06

四、終極測試:與你的心情點唱機對話

同樣地,我們無需修改 MCP Demo 主流程。

  1. 打開 MCP Demo 工作流的聊天視窗。
  2. 下達一個帶有「心情」的指令:

    我今天心情很放鬆,請給我相對應的歌單

你會看到 AI Agent 展現出驚人的理解力:

  • 理解了「心情很放鬆」是核心需求。
  • 判斷get_spotify_playlist_by_mood 這個工具最適合這個任務。
  • 生成了一個合適的搜尋關鍵字(例如 放鬆chillhop)作為 query 參數傳遞給工具。
  • 最終,它將我們精心處理過的歌單列表,作為答案回覆給你。

截圖 2025-09-03 下午4.53.40

五、今日總結

今天,我們成功地打造了一個充滿創意和情感的 AI 工具,並且攻克了更進階的 OAuth 2.0 認證流程。我們學到了:

  1. 處理多步驟認證: 掌握了先獲取 Token 再使用 Token 的 API 串接模式。
  2. 賦予 AI 創意能力: 讓 AI Agent 不僅能處理明確指令,還能理解「心情」這種模糊概念,並將其轉化為具體的 API 查詢。

我們的 MCP 伺服器功能越來越豐富,AI Agent 也變得越來越聰明。明天,我們將迎來 n8n 篇章的最高潮——將我們辛苦打造的這台強大 MCP 伺服器,使用開源的介面(OpenWebUI)連接起來!


上一篇
Day 9 - 使用 n8n 打造新聞GNews查詢 mcp server
下一篇
Day 11 - 在 OpenWebUI中 呼叫 n8n 工作流
系列文
三十天解鎖上下文超能力:MCP 實戰11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
justin_log
iT邦新手 5 級 ‧ 2025-09-24 17:40:25

我好期待明天的OpenWebUI喔!

我要留言

立即登入留言