Back to MCP directory
publicPublicdnsLocal runtime

mcp-audio-server

MCP音频服务器是一个用于音频处理和和弦分析的模型上下文协议服务,提供音频解码、音乐分析(包括节奏、调性和和弦分析)等功能,支持RESTful API和容器化部署。

article

README

🚀 音乐上下文协议(MCP)音频服务器

本项目是一个用于音频处理和和弦分析的模型上下文协议(MCP)服务器,能够对音频进行解码、归一化、节拍检测、音调识别、和弦分析等操作,并提供标准化的RESTful API接口,方便与其他系统集成。

🚀 快速开始

使用Docker Compose可实现最快设置:

# 克隆仓库
git clone https://github.com/yourusername/mcp-audio-server.git
cd mcp-audio-server

# 启动服务器
docker compose up -d

示例请求

# 分析一个WAV文件
curl -X POST http://localhost:8000/analyze_chords \
  -H "Content-Type: application/json" \
  -d '{
    "audio_data": "'$(base64 -i tests/fixtures/tempo/120bpm_with_chord.wav)'",
    "format": "wav",
    "options": {"model": "basic"}
  }'

示例响应

{
  "schema_version": "1.0.0",
  "key": "C",
  "tempo": 120.5,
  "chords": [
    {
      "time": 0.0,
      "label": "C",
      "confidence": 0.92
    },
    {
      "time": 1.0,
      "label": "G",
      "confidence": 0.87
    }
  ],
  "duration": 4.0,
  "processing_info": {
    "sample_rate": 44100,
    "channels": 1,
    "processing_time": 0.245,
    "model_used": "basic"
  },
  "correlation_id": "550e8400-e29b-41d4-a716-446655440000"
}

✨ 主要特性

  • 音频文件解码与归一化:支持多种音频格式,包括WAV、MP3等,并提供归一化处理。
  • 音乐分析
    • 节拍检测:自动识别和计算音频的节拍信息。
    • 音调识别:准确识别音频的主音调。
    • 和弦分析:分解音频并识别其中的和弦结构。
  • RESTful API:提供标准化的API接口,便于与其他系统集成。
  • 错误处理与日志记录:详细的错误信息和日志输出,便于排查问题。
  • 模型选择:支持不同的音乐分析模型(如“basic”和“advanced”),满足不同需求。

📦 安装指南

Docker安装

# 克隆仓库并启动服务
git clone https://github.com/yourusername/mcp-audio-server.git
cd mcp-audio-server
docker compose up -d

手动安装

  1. 安装依赖

    # 安装Python和相关工具
    python3 install --user pip
    pip install poetry
    
  2. 克隆仓库并运行

    git clone https://github.com/yourusername/mcp-audio-server.git
    cd mcp-audio-server
    poetry install
    poetry run uvicorn server.main:app --reload
    

📚 详细文档

API文档

API文档基于FastAPI生成,并托管在/docs路径下。

请求示例

curl -X POST http://localhost:8000/analyze_chords \
  -H "Content-Type: application/json" \
  -d '{"audio_data": "base64_encoded_audio", "format": "wav", "options": {"model": "basic"}}'

响应格式

{
  "schema_version": "1.0.0",
  "key": "C",
  "tempo": 120.5,
  "chords": [
    {
      "time": 0.0,
      "label": "C",
      "confidence": 0.92
    },
    {
      "time": 1.0,
      "label": "G",
      "confidence": 0.87
    }
  ],
  "duration": 4.0,
  "processing_info": {
    "sample_rate": 44100,
    "channels": 1,
    "processing_time": 0.245,
    "model_used": "basic"
  },
  "correlation_id": "550e8400-e29b-41d4-a716-446655440000"
}

错误响应

{
  "error": {
    "code": "INVALID_ARGUMENT",
    "message": "音频数据无效或格式错误。"
  }
}

开发指南

贡献指南

请参考CONTRIBUTING.md了解如何为项目贡献力量。

测试

# 运行所有测试并生成覆盖率报告
pytest --cov=mcp_audio_server tests/

# 运行特定测试
pytest tests/analysis/test_tempo.py

文档构建

要重新构建文档网站,请执行以下命令:

# 安装文档依赖项
poetry install --with docs

# 构建文档
poetry run mkdocs build

# 本地运行文档服务器
poetry run mkdocs serve

📄 许可证

此项目根据MIT许可证发布,具体内容请参阅LICENSE文件。

依赖项

所有依赖项及其相应许可信息详见DEPENDENCIES.md

🔄 变更日志

查看CHANGELOG.md以了解项目的版本历史和更新内容。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client