音频下载处理服务

一个可扩展的MCP插件/服务,用于从SoundCloud、YouTube、Yandex Music和Spotify下载和处理音频,支持转码、标签嵌入和封面艺术嵌入,提供HTTP API和MCP工具。

  • by jojoprison
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 jojoprison/mcp-music-forge

使用说明

MCP音乐锻造

英语| 俄语


用于下载和处理音频的可扩展MCP插件/服务: SoundCloud(起点),然后是YouTube/Yandex Music/Spotify;转码, 标签和封面艺术嵌入,HTTP API,MCP工具,音频工作者。

快速入门

变体A:Docker Compose(推荐)

cp .env.example .env
make upb       # build and start the stack

终点:

  • APIhttp://localhost:8033
  • 管理员:http://localhost:8033/admin
  • MCP HTTP:http://localhost:8033/mcp

管理层:

make logs      # logs
make ps        # container status
make up        # just up
make down      # stop and remove

变体B:局部(uv)

make install   # create .venv, install deps, copy .env
source .venv/bin/activate

make lint      # ruff + black + mypy
make test      # mypy + pytest

# run API
uvicorn api.main:app --reload

# MCP (stdio)
python -m mcp_music_forge.mcp_app

API示例

# health check
curl -s http://localhost:8033/health | jq
# {"status": "ok"}

# enqueue download (SoundCloud URL with allowed download per ToU)
curl -s -X POST 'http://localhost:8033/download?url=https://soundcloud.com/artist/track' | jq
# {"job_id": "abc123", "status": "queued"}

# check job status
curl -s http://localhost:8033/jobs/<job_id> | jq

MCP工具

  • probe_url:提供程序检测和下载能力检查。
  • enqueue_download:创建/复制作业,将其放入队列。
  • get_job_status:状态、工件、文件链接作为MCP资源。
  • 资源: forge://jobs/<job_id>/{original|final}/<filename> (文件字节)。

项目概述

  • MCP服务器 (mcp_music_forge/):作业管理、资源提供者和MCP工具。
  • HTTP API (api/): POST /download, GET /jobs/{id}, /health,管理界面。
  • 提供商 (providers/):源适配器(从SoundCloud开始)。
  • 代码转换器 (transcoder/):一个包装 ffmpeg.
  • 存储 (storage/):本地FS(可以用S3等替换)。
  • 队列 (core/services/queue.py):ARQ+Redis;包装纸 workers/.

文档

法律注释

  • SoundCloud提供商尊重ToU:我们只在曲目可下载的情况下下载(downloadable/download_url).
  • Cookie文件支持是可用的,但严格按照服务规则使用。