Spotify音乐控制服务

基于FastMCP的服务器,提供Spotify和Last.fm工具集成,部署在Azure容器应用上,并通过Terraform管理。

  • by JamiesonChase2
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 jamiesonchase2/spotify-mcp-azure-terraform

使用说明

Spotify MCP运维就绪(Azure容器应用+地形)

基于FastMCP的服务器,通过MCP公开Spotify+Last.fm工具,部署到 Azure容器应用 随着 地形.

  • 私人集装箱登记处
  • 托管身份(无注册表密码)
  • 密钥保管库机密+RBAC(代码中没有API密钥)
  • 日志分析工作区+容器应用程序环境

存储库布局

client/   # Python MCP client (talks to the deployed MCP server)
server/   # FastMCP server + Dockerfile (port 8080)
infra/    # Terraform: Azure Container Apps, ACR, Key Vault, RBAC, etc.
docs/     # Runbooks / structure notes (see docs/app-structure.md and docs/terraform-files.md)

MCP工具暴露

  • search_spotify
  • artist_top_tracks
  • current_user_profile
  • current_user_top_tracks
  • get_current_user_playlists
  • get_playlist_items
  • create_playlist
  • add_to_playlist
  • get_similar_tracks (Last.fm)
  • get_similar_artists (Last.fm)
  • start_playback
  • pause_playback

所需的Spotify OAuth作用域(刷新令牌)

  • 用户资料和热门曲目: user-read-private, user-read-email, user-top-read
  • 播放列表(已读): playlist-read-private, playlist-read-collaborative
  • 播放列表(写入): playlist-modify-public, playlist-modify-private
  • 播放控制: user-modify-playback-state, user-read-playback-state, user-read-currently-playing

先决条件

  • Azure命令行界面(az)+已登录(az login)
  • 地形
  • 构建/推送镜像的Docker守护进程
  • Spotify+Last.fm API证书

部署(Azure)

1) 创建Azure资源(Terraform)

自 infra/,最简单的方法是先创建注册表,推送映像,然后部署容器应用程序:

terraform init
terraform apply -target=azurerm_container_registry.main

注: infra/terraform.tfvars 被忽视了。把你的敏感值放在那里(或使用 TF_VAR_... env变量)。

2) 构建+将容器映像推送到ACR

ACR_SERVER="$(terraform -chdir=infra output -raw acr_login_server)"
IMAGE="$ACR_SERVER/spotify-mcp:1"

docker buildx build --platform linux/amd64 -t "$IMAGE" -f server/Dockerfile server --push

3) 部署全栈(密钥库机密+容器应用程序)

terraform -chdir=infra apply

4) 确认端点

URL="$(terraform -chdir=infra output -raw container_app_url)"
echo "$URL"

在部署的服务器上运行客户端

export MCP_URL="$(terraform -chdir=infra output -raw container_app_url)"
export GOOGLE_API_KEY="..."

cd client
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python client.py