iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0

前言

昨天介紹了 Spotify MCP Server 的功能與工具,今天就進入重頭戲 —— 實作
這次我們不只是單純把 Server 跑起來,而是會把它整合進我們自己的 Agent 系統裡(*^-^)


實踐

環境準備

準備好後,我們就能開始動工啦~


安裝與設定

接下來要把 spotify-mcp-server clone 下來並安裝。

git clone <the web URL>

設定完成後,別忘了把 Client IDClient SecretRedirect URI 寫進 .env 檔:

# Spotify
SPOTIFY_CLIENT_ID="your_spotify_client_id_here"
SPOTIFY_CLIENT_SECRET="your_spotify_client_secret_here"
SPOTIFY_REDIRECT_URI="your_spotify_redirect_uri_here"

Spotify MCP Server

參考README.md

cd spotify-mcp-server
npm install
npm run build

建立檔案

cp spotify-config.example.json spotify-config.json

編輯spotify-config.json

  "clientId": "your-client-id",
  "clientSecret": "your-client-secret",

運行身份驗證腳本

npm run auth

身份驗證腳本將自動將此程式碼交換為存取和刷新令牌,這些令牌將被保存到您的spotify-config.json文件中。


整合到 Agent

  • spotify_agent
import os

from dotenv import load_dotenv
from google.adk.agents import Agent
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset, StdioServerParameters, StdioConnectionParams

from . import spotify_prompt as prompt

load_dotenv()

spotify_agent = Agent(
    model="gemini-2.0-flash",
    name="spotify_agent",
    description=prompt.SPOTIFY_AGENT_DESCRIPTION,
    instruction=prompt.SPOTIFY_AGENT_INSTRUCTION,
    tools=[MCPToolset(
        connection_params=StdioConnectionParams(
            server_params=StdioServerParameters(
                command='node',
                args=['build/index.js'],
                cwd="D:\\VsCode\\multi_tool_agent\\spotify-mcp-server",
                env={
                    "SPOTIFY_CLIENT_ID": os.getenv("SPOTIFY_CLIENT_ID"),
                    "SPOTIFY_CLIENT_SECRET": os.getenv("SPOTIFY_CLIENT_SECRET"),
                    "SPOTIFY_REDIRECT_URI": os.getenv("SPOTIFY_REDIRECT_URI"),
                }
            )
        )
    )]
)

注意cwd 放自己clone 的spotify-mcp-server 位置!

  • spotify_prompt

可參考我的內容

SPOTIFY_AGENT_DESCRIPTION = """
Spotify 音樂播放控制專家,負責處理所有與 Spotify 相關的音樂播放、搜尋、播放清單管理等功能。
具備完整的 Spotify API 操作能力,包括播放控制、音樂搜尋、播放清單建立與管理等。
"""

SPOTIFY_AGENT_INSTRUCTION = """
你是一個專業的 Spotify 音樂助手,擁有完整的 Spotify 控制功能。你可以執行以下任務:

## 主要功能:

### 音樂播放控制
- 播放特定歌曲、專輯、藝人或播放清單
- 暫停/繼續播放
- 切換上一首/下一首
- 查看目前正在播放的音樂
- 將音樂加入播放佇列

### 音樂搜尋功能
- 搜尋歌曲、專輯、藝人、播放清單
- 取得專輯詳細資訊和曲目列表
- 查看使用者的已儲存音樂
- 瀏覽最近播放的歌曲

### 播放清單管理
- 建立新的播放清單
- 取得使用者的所有播放清單
- 查看播放清單中的歌曲
- 將歌曲添加到播放清單

### 音樂收藏管理
- 儲存/移除專輯到使用者音樂庫
- 檢查專輯是否已儲存
- 管理「喜歡的歌曲」

## 使用指南:

### 當用戶想要播放音樂時:
1. 先使用 `searchSpotify` 搜尋相關內容
2. 從搜尋結果中選擇合適的項目
3. 使用 `playMusic` 開始播放

### 當用戶想要管理播放清單時:
1. 使用 `getMyPlaylists` 查看現有播放清單
2. 根據需求使用 `createPlaylist` 建立新播放清單
3. 使用 `addTracksToPlaylist` 添加歌曲

### 回應準則:
- 始終使用繁體中文回應
- 提供清晰的操作結果說明
- 當無法找到指定內容時,建議替代選項
- 主動詢問用戶是否需要進一步操作
- 對於播放控制,提供即時的狀態更新

### 錯誤處理:
- 如果搜尋無結果,建議調整搜尋關鍵字
- 如果播放失敗,檢查 Spotify 是否正在運行
- 如果授權過期,提醒用戶重新認證

記住:你的目標是讓用戶輕鬆享受音樂,提供流暢且直觀的 Spotify 體驗。
"""
  • root_agent
    只要在 sub_agent 寫入 spotify_agent 就好~(記得匯入喔!)

  • root_agent prompt
    依據自己要求撰寫就好,我spotify 一些部分:

### spotify_agent - Spotify 音樂專家
**服務範圍:**
- Spotify 音樂搜尋和播放控制
- 播放清單管理
- 音樂資訊查詢

實踐畫面

1.啟動 FastAPI: uvicorn main:app --host 0.0.0.0 --port <port>
2.啟動 Gradio: python gradio_app.py

https://ithelp.ithome.com.tw/upload/images/20251005/20168454OGz2gZDqWd.png

如何確認是否用到 mcp server,可至 VsCode 終端機裡查看訊息,會看到出現多次 MCP 相關的訊息,如:

auth_config or auth_config.auth_scheme is missing. Will skip authentication.Using FunctionTool instead if authentication is not required.

這個警告不會影響功能,只是表示:

  • MCP 工具沒有設定額外的認證配置
  • 系統自動使用 FunctionTool 模式
  • Spotify 功能依然完全正常
Warning: there are non-text parts in the response: ['function_call'], returning concatenated text result from text parts. Check the full candidates.content.parts accessor to get the full model response.

AI 模型回應結構:

  • AI 模型(Gemini)的回應包含 text 和 function_call 兩部分
  • function_call: 模型決定要調用的工具/函數
  • text: 模型生成的文字回應
  • 警告提示目前只顯示文字部分,function_call 被忽略了

實際運作流程(舉例):

  • 用戶:"播放周杰倫的歌"
  • Alex Chen (Root Agent) 接收請求
  • Gemini 模型決定,text: "我來幫您搜尋周杰倫的歌曲",function_call: 調用 spotify_agent
  • 系統執行:調用 Spotify Agent
  • 警告出現:提醒開發者有 function_call 部分

結尾廢話

到這裡,是不是發現自己的 agent 變得更加有趣而不單調了?

你不只是在「單純跑 Spotify MCP Server」,而是真的把它 接入自己的 Agent 架構 了,你自己的智慧助理,已經不只是聊天 AI,而是能幫忙 搜尋音樂 的幫手~

那我們下一篇見(≧∇≦)ノ
reference link


上一篇
[Day 20] Spotify MCP Server (上)
系列文
AI Agent 開發養成記:做出屬於自己的Agent P21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言