MCP Audio Server
@samscarrow
Overview
What is MCP Audio Server?
MCP Audio Server is a Model Context Protocol server for audio processing and chord analysis. It provides a RESTful API that decodes audio files, detects tempo and key, and performs chord recognition, making it suitable for developers integrating music analysis into MCP workflows.
How to use MCP Audio Server?
The quickest setup is via Docker Compose: clone the repository and run docker compose up -d. Alternatively, install manually with Python 3.10+, FFmpeg, and Poetry, then run poetry run uvicorn mcp_audio_server.main:app --host 0.0.0.0 --port 8000. Send a POST request to /analyze_chords with base64-encoded audio data and format (e.g., wav, mp3, ogg, m4a, flac) to receive chord, key, and tempo results.
Key features of MCP Audio Server
- Audio file decoding and normalization with FFmpeg
- Tempo detection (BPM)
- Key detection
- Chord analysis and tracking
- RESTful API with structured responses
- JSON schema validation for inputs and outputs
- Robust error handling with descriptive messages
- Resource management with concurrency controls
- Caching for performance optimization
- Observability with structured logging and metrics
Use cases of MCP Audio Server
- Automatically detect chords and key from recorded audio for music transcription.
- Analyze tempo and harmonic progression of WAV files for music production.
- Integrate real-time chord recognition into a live performance tool using MCP.
- Process batches of audio files to generate structured metadata for a music library.
FAQ from MCP Audio Server
What audio formats are supported?
Supported formats are wav, mp3, ogg, m4a, and flac.
What are the runtime dependencies?
Python 3.10 or higher, FFmpeg, and Poetry (for manual installation). Docker is fully supported.
How do I analyze chords using the API?
Send a POST request to /analyze_chords with JSON containing audio_data (base64-encoded), format (e.g., "wav"), and optional options.model ("basic" or "advanced").
Is there a health check endpoint?
Yes, endpoints /health, /ready, and /metrics are available for monitoring and load balancing.
How are errors reported?
Errors return a JSON object with error_code, message, details, and a correlation_id for debugging.