MusicPlayerMcp

使用说明内容(Markdown格式)

  • 项目简介

    • MusicPlayerMcp 是一个实现了 MCP 服务器端的简单后端,提供本地音乐播放控制能力,客户端通过 MCP 请求调用服务器暴露的工具实现对音乐的搜索、下载与播放,以及停止播放等操作,全部通过 stdio 传输。
  • 主要功能点

    • 提供两个 MCP 工具:
      • search_and_play_song: 接受歌曲名称、艺术家或 YouTube 链接,解析后下载音频并开始本地播放,若已有音乐在播放会替换。
      • stop_song: 停止当前正在播放的音乐。
    • 通过 stdio 传输实现 MCP 通信,支持与 MCP 客户端(如 Copilot、Claude Desktop 等)直接对接。
    • 使用 YoutubeExplode 下载 YouTube 音频,使用 NAudio 实时播放音频,音频缓存于本地 Temp 目录。
    • 会话级别的简单日志输出,便于调试与监控。
  • 安装步骤

    • 需要安装 .NET 10 运行时(根据项目要求,可使用 dotnet 10 环境)。
    • 获取代码并编译:
      • 读取并安装所需依赖(通过 NuGet 自动获取)。
      • 构建项目(通常使用 dotnet build,或在 IDE 中直接生成可执行文件)。
    • 运行方式(在本地开发环境中启动服务器):
      • 将程序作为一个控制台应用运行,通常生成可执行的 DLL/运行入口。
      • 参考下方的服务器配置将服务器以 MCP 客户端可识别的方式暴露给 MCP 客户端使用。
  • 服务器配置(MCP 客户端需要的最低信息,用于连接到 MCP 服务器)

    • 服务器配置示例(文本描述,非代码块形式,便于理解):

      • MusicPlayerMcpServer
        • type: stdio
        • command: dotnet
        • args: ["MusicPlayerMcpServer.dll"] // 请将 DLL 名称替换为实际编译输出的入口程序名
        • 注释:该配置让 MCP 客户端通过标准输入/输出与本服务器建立通信,具体的 DLL/可执行名称需以实际部署产物为准
    • 另一种常见部署方式(Docker)示例配置:

      • MusicPlayerMcpDocker
        • command: docker
        • args: ["run", "-i", "--rm", "eduardorezende01/musicplayermcp"]
        • 注释:使用 Docker 镜像直接运行服务器,适合快速试用或部署在容器环境中
  • 基本使用方法

    • 启动后,MCP 客户端通过调用工具名称触发行为:
      • 触发 search_and_play_song:输入 "Play Let It Happen by Tame Impala" 或 "play https://youtube.com/...",服务器将下载音频并开始播放。
      • 触发 stop_song:输入任意停止语,例如 "Stop the music"、"stop the audio" 等,服务器将停止当前音乐播放。
    • 说明:同一时刻只能播放一首音乐,新的 search_and_play_song 请求会替换当前播放的音轨。
  • 注意事项

    • 音乐音频来源为 YouTube,下载过程可能受网络波动影响。
    • 音频文件保存在系统的临时目录中。
    • 需要在目标环境具备音频输出设备(扬声器/耳机)并允许应用访问音频硬件。
    • 不提供图形界面,所有控制通过 MCP 请求实现。
  • 使用示例(简要)

    • 调用:播放 Bohemian Rhapsody,服务器返回音轨路径或播放状态确认。
    • 调用:停止音乐,服务器返回停止确认。

服务器信息