Spotify工具MCP服务器

一个实现MCP协议的服务器,为认证客户端提供Spotify相关工具,包括搜索、认证和令牌交换功能。

  • by roynjeru
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 roynjeru/music-mcp-server

使用说明

音乐-MCP服务器

一个小型的模型上下文协议(MCP)服务器,为经过身份验证的客户端提供Spotify相关工具。

这个项目实现了一个服务器,用于注册MCP工具(该工具由……实现) server/Tools/SpotifyTools.cs并将其通过MCP传输暴露出来。服务器要求调用者使用JWT风格的承载令牌进行身份验证,并将该令牌转发给专门的OAuth服务,以在代表调用者调用Spotify API之前进行交换或验证。

要点

  • 实现了MCP服务器工具(ModelContextProtocol.Server)。
  • 认证/授权:接受传入的承载令牌(JWT)并与ASP.NET Core JWT认证集成。
  • 令牌交换:将接收到的承载令牌转发给专门的OAuth服务器(见下文链接)以进行交换/验证,获取Spotify访问令牌,然后在每次请求时通过Authorization头部调用Spotify。

专用的OAuth服务器

  • 这个项目旨在与一个配套的OAuth服务器协同工作:https://github.com/roynjeru/oauth-music-streaming-mcp-server
  • 该OAuth服务器执行令牌交换/验证操作,并提供一个端点(由该服务器使用),用于将传入的令牌交换为Spotify访问令牌。

配置

  • 设置以下配置键(例如在 appsettings.json 或环境变量):
    • jwt-authority — 用于接收JWT的权威机构/签发者URL(即OAuth服务器或身份提供商)。
    • serverUrl — MCP 资源元数据的公共 URL(在注册 MCP 资源元数据时使用)。

在ChatGPT中的使用

快速入门(macOS / zsh)

  1. 恢复与重建
cd server
dotnet restore
dotnet build
  1. 运行服务器(开发模式)
cd server
dotnet run
  1. 客户应如何调用工具
  • 客户端必须进行身份验证,并在请求中包含一个由您的身份提供商或配套的OAuth服务器颁发的承载令牌(bearer token)作为授权头。
  • 这台服务器读取传入的(数据/信息) Authorization: Bearer <token> 头部,将令牌转发到配置的OAuthServer交换端点,并在调用Spotify API时使用返回的Spotify访问令牌。

示例(高级):

  1. 从您的OAuth服务器获取一个承载令牌(详见配套仓库中的详细信息)。
  2. 调用MCP工具端点(MCP传输暴露了工具调用端点)。在调用中包含相同的承载令牌 Authorization 头球 服务器将为您执行交换操作,并调用Spotify。

更多详情

  • 见 server/Tools/SpotifyTools.cs 关于搜索工具的实现,以及如何读取和使用传入的Authorization头。
  • 见 Program.cs 用于服务注册以及所使用的HTTP客户端名称(SpotifyApi, OAuthServer)。

做出贡献

  • 欢迎提交错误报告和拉取请求。如果您更改了OAuth服务器中的令牌交换API,请更新相应的请求路径 SpotifyTools.cs。

许可证

  • MIT风格(默认不包含许可证文件)。