Audio Analysis MCP Server
by zachswift615
README.md
# Audio Analysis MCP Server
An MCP server that gives Claude Code the ability to analyze audio files without ears. Provides numerical fingerprints, visual spectrograms, pitch tracking, and more - all through a single, token-efficient tool.
## Overview
This server exposes one tool (`audio_analyze`) with multiple operations, keeping the MCP schema small and token usage minimal. Visual outputs (spectrograms, waveforms, etc.) are saved to disk and paths returned - Claude can then read the images separately if needed.
## Installation
```bash
cd ~/projects/audio-analysis-mcp
~/.local/bin/uv sync
```
If you don't have `uv`:
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
## Configuration
Add to your project's `.mcp.json`:
```json
{
"mcpServers": {
"audio-analysis": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/audio-analysis-mcp",
"python",
"-m",
"audio_analysis_mcp.server"
],
"env": {
"AUDIO_ANALYSIS_OUTPUT_DIR": "./audio-analysis-output"
}
}
}
}
```
Or add to `~/.claude.json` to make it available globally.
## Operations
Single tool: `audio_analyze(path, op, [path2])`
### Numerical Analysis
| Op | Description | Output |
|----|-------------|--------|
| `fingerprint` | RMS, peak, spectral stats | `{rms, peak, zcr, centroid, bandwidth, rolloff, duration}` |
| `formants` | Estimated F1-F4 frequencies | `{f1, f2, f3, f4}` |
| `compare` | Compare two files numerically | `{identical, max_diff, rms_diff, pct_change}` |
| `diff` | Sample-level difference | `{identical, max_diff, mean_diff}` |
| `onsets` | Detect transients/attacks | `{count, times}` |
| `batch` | Fingerprint multiple files | `{results: [...]}` |
### Visual Analysis
| Op | Description | Output |
|----|-------------|--------|
| `spectrogram` | Mel spectrogram image | `{output_path}` |
| `waveform` | Amplitude over time | `{output_path}` |
| `waterfall` | 3D spectral surface | `{output_path}` |
| `pitch` | F0 tracking plot + stats | `{f0_mean, f0_min, f0_max, output_path}` |
## Output Directory
Images are saved to the directory specified by `AUDIO_ANALYSIS_OUTPUT_DIR` env var. Defaults to `~/.audio-analysis-mcp` if not set.
## Claude Code Skill & Slash Command
This project includes a Claude Code skill and slash command for structured audio comparison workflows.
### Installing the Skill
Copy the skill to your Claude Code skills directory:
```bash
cp -r .claude/skills/analyze-audio-iterations ~/.claude/skills/
```
This enables automatic detection when you're comparing audio files, with structured workflows for:
- Running all 7 analysis types in parallel
- Building metrics comparison tables
- Tracking improvements across versions
- Pattern detection (oscillation, trade-offs, plateaus)
### Installing the Slash Command
Copy the slash command to your Claude Code commands directory:
```bash
cp .claude/commands/analyze-audio.md ~/.claude/commands/
```
Then use it with:
```
/analyze-audio /path/to/reference.wav /path/to/synthesized.wav [version-context]
```
### Quick Install (Both)
```bash
cp -r .claude/skills/analyze-audio-iterations ~/.claude/skills/ && \
cp .claude/commands/analyze-audio.md ~/.claude/commands/
```
## Dependencies
- `mcp` - Official MCP Python SDK
- `librosa` - Audio analysis
- `matplotlib` - Visualizations
- `numpy`, `scipy` - Numerical operations
TDQS
A3.7/5.0
Scored across 1 tool
Disambiguation5/5
With only one tool, there is no possibility of confusion between tools. The single tool's purpose is clearly defined as audio analysis.
Naming Consistency5/5
With only one tool, naming consistency is trivially maintained. The name 'audio_analyze' appropriately describes its function.
Tool Count2/5
The server has only one tool for a broad domain (audio analysis), which is too few for the apparent scope. A more modular set of tools (e.g., separate tools for each operation) would be appropriate.
Completeness3/5
The single tool covers many common audio analysis operations via the 'ops' parameter, but bundling them into one tool makes the surface less intuitive and may miss operations like audio input handling or transcription.
Maintenance
ActivityInactive
ResponsivenessNo issues