loading…
Search for a command to run...
loading…
An AI-powered MCP server that converts guitar audio recordings into high-quality fingerstyle tablature.
An AI-powered MCP server that converts guitar audio recordings into high-quality fingerstyle tablature.
An AI-powered MCP (Model Context Protocol) server that converts guitar audio recordings into high-quality fingerstyle tablature. This tool runs locally on your machine, using cutting-edge AI models to analyze your guitar playing and generate accurate tabs.
Before you begin, ensure you have the following installed:
brew install ffmpegsudo apt-get install ffmpeg# Clone the repository
git clone https://github.com/blooper20/fingerstyle-tab-mcp.git
cd fingerstyle-tab-mcp
# Create a virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
This is the most powerful way to use the Fingerstyle Tab MCP Server. You can interact with Claude to generate, refine, and customize your guitar tabs.
Step 1: Install Claude Desktop Download from claude.ai/download
Step 2: Configure MCP Server
Add the following to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"fingerstyle-mcp": {
"command": "/absolute/path/to/fingerstyle-tab-mcp/venv/bin/python3",
"args": ["/absolute/path/to/fingerstyle-tab-mcp/mcp_server.py"],
"env": {
"PYTHONPATH": "/absolute/path/to/fingerstyle-tab-mcp"
}
}
}
}
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"fingerstyle-mcp": {
"command": "C:\\absolute\\path\\to\\fingerstyle-tab-mcp\\venv\\Scripts\\python.exe",
"args": ["C:\\absolute\\path\\to\\fingerstyle-tab-mcp\\mcp_server.py"],
"env": {
"PYTHONPATH": "C:\\absolute\\path\\to\\fingerstyle-tab-mcp"
}
}
}
}
Step 3: Restart Claude Desktop
Close Claude Desktop completely (Cmd+Q on macOS) and reopen it.
Step 4: Verify Installation
Check the logs to ensure the server started successfully:
# macOS
tail -f ~/Library/Logs/Claude/mcp-server-fingerstyle-mcp.log
# Look for this message:
# 🚀 FINGERSTYLE MCP SERVER IS NOW ONLINE AND READY
Once configured, you can interact with Claude using natural language:
Example Conversations:
You: "What audio files are available?"
Claude: Uses
list_available_audio_filestoolAvailable files in 'resource/':
- Adelle-- someone like you-null.mp3
- Falling Slowly - Once legendado_1.mp3
You: "Analyze 'someone like you' and create a guitar tab"
Claude: Uses
analyze_audio_to_tabwith fuzzy matching🎸 Fingerstyle Precision Analysis (BPM: 123.05)
Dm G C F e|----------------|----------------|----------------|----------------| B|3---3-------3---|0---0-------0---|1---1-------1---|1---1-------1---| G|2---2-------2---|0---0-------0---|0---0-------0---|2---2-------2---| D|0---0-------0---|0---0-------0---|2---2-------2---|3---3-------3---| A|----------------|2---2-------2---|3---3-------3---|3---3-------3---| E|----------------|3---3-------3---|----------------|1---1-------1---|
You: "Analyze just the first 30 seconds starting from 10 seconds in"
Claude: Uses
analyze_audio_to_tabwithstart_seconds=10.0, duration_seconds=30.0Analysis Successful (Start: 10.0s, Duration: 30.0s)...
The server exposes the following tools to Claude:
| Tool | Description |
|---|---|
analyze_audio_to_tab |
Main tool to convert audio files to tablature |
list_available_audio_files |
List all audio files in the resource/ directory |
tweak_tab_fingering |
Adjust fingering preferences for specific pitches |
get_standard_tuning |
Get standard guitar tuning reference |
See MCP Tools Reference for detailed documentation.
For quick testing or batch processing:
# Basic usage
python test_workflow.py path/to/your/audio.mp3
# Using files in the resource/ directory
python test_workflow.py "someone like you" # Fuzzy matching works!
Example Output:
--- 'Adelle-- someone like you-null.mp3' 분석 시작 ---
1. 오디오 분석 중 (BPM 감지 및 Basic Pitch 실행)...
Detecting tempo...
Detected BPM: 123.05
Parallel Analysis: Splitting into 11 chunks to finish in < 1 min
분석 완료: 2554개의 음이 검출되었습니다. (감지된 BPM: 123.05)
2. 기타 타브로 변환 중 (코드 기반 운지 및 주법 분석)...
--- 생성된 타브 악보 ---
🎸 Fingerstyle Precision Analysis (BPM: 123.05)
Dm G C F
e|----------------|----------------|----------------|----------------|
B|3---3---3---3---|0---0---0---0---|1---1---1---1---|1---1---1---1---|
G|2---2---2---2---|0---0---0---0---|0---0---0---0---|2---2---2---2---|
D|0---0---0---0---|0---0---0---0---|2---2---2---2---|3---3---3---3---|
A|----------------|2---2---2---2---|3---3---3---3---|3---3---3---3---|
E|----------------|3---3---3---3---|----------------|1---1---1---1---|
.mp3).wav).flac).ogg).m4a).aac)For integration into your own projects:
from src.transcriber import transcribe_audio
from src.tab_generator import create_tab
# Step 1: Transcribe audio (with optional parameters)
notes, detected_bpm = transcribe_audio(
"path/to/audio.mp3",
duration=30.0, # Optional: analyze only first 30 seconds
start_offset=10.0 # Optional: start from 10 seconds
)
# Step 2: Generate tablature
tab = create_tab(notes, bpm=detected_bpm)
print(tab)
from src.tab_generator import TabGenerator
# Custom configuration
generator = TabGenerator(
tuning=['D2', 'A2', 'D3', 'G3', 'B3', 'E4'], # Drop D tuning
bpm=140,
slots_per_measure=16
)
# Generate tab with custom settings
tab = generator.generate_ascii_tab(notes)
The engine separates audio into Vocals, Bass, and Other stems using Demucs.
Advanced cleaning algorithms ensure the output is playable:
If a song is in a difficult key (e.g., B Major), the system automatically:
Results (including separated stems) are cached to avoid re-processing:
# First call: processes audio (incl. Demucs separation)
analyze_audio_to_tab("song.mp3") # Takes ~60-90s
# Second call: returns cached result
analyze_audio_to_tab("song.mp3") # Instant!
Create a config.yaml file in the project root to customize behavior:
cp config.yaml.example config.yaml
# Audio Processing
audio:
source_separation: true # Enable Demucs source separation (Recommended for high quality)
separation_model: "htdemucs"
default_bpm: 120.0
parallel_threshold: 45.0
# Post-processing for Clean Tabs
post_processing:
min_note_duration: 0.15 # Drop short noise
min_velocity: 0.45 # Strict velocity threshold
quantize: true # Snap to 16th grid
snap_harmony_to_key: true # Clean up accompaniment
max_polyphony: 3 # Max simultaneous notes
# Tablature Generation
tablature:
auto_transpose: true # Auto shift to C/G/D/A/E
standard_tuning: ['E2', 'A2', 'D3', 'G3', 'B3', 'E4']
slots_per_measure: 16
preferred_fret_range:
min: 0
max: 5 # Prioritize open position
For all available options, see config.yaml.example.
analyze_audio_to_tabMain tool for audio-to-tab conversion.
Parameters:
file_path (string, required): Path to audio file or just the filename/Users/you/Music/song.mp3~/Music/song.mp3song.mp3 (searches in resource/)someone like you → finds Adelle-- someone like you-null.mp3duration_seconds (float, optional): Limit analysis to N seconds (default: process entire file)start_seconds (float, optional): Start analysis from N seconds (default: 0.0)Returns:
Example:
# Full file
analyze_audio_to_tab("song.mp3")
# First 30 seconds
analyze_audio_to_tab("song.mp3", duration_seconds=30.0)
# 30 seconds starting from 1 minute mark
analyze_audio_to_tab("song.mp3", start_seconds=60.0, duration_seconds=30.0)
list_available_audio_filesLists all audio files in the resource/ directory.
Parameters: None
Returns:
Example:
Available files in 'resource/':
- Adelle-- someone like you-null.mp3
- Falling Slowly - Once [legendado](MP3_70K)_1.mp3
tweak_tab_fingeringSuggest preferred string for a specific MIDI pitch.
Parameters:
note_pitch (int, required): MIDI pitch (0-127)preferred_string (int, required): Target string number (1=High E, 6=Low E)Returns:
get_standard_tuningGet standard guitar tuning reference information.
Parameters: None
Returns:
Standard Tuning: E2, A2, D3, G3, B3, E4 (82.41Hz - 329.63Hz)
fingerstyle-tab-mcp/
├── src/
│ ├── transcriber.py # Audio analysis & parallel processing
│ │ ├── transcribe_audio() # Main transcription function
│ │ ├── get_model() # Model caching
│ │ └── _transcribe_chunk() # Chunk processing
│ ├── tab_generator.py # Smart fingering & ASCII tab generation
│ │ ├── TabGenerator # Main generator class
│ │ ├── create_tab() # High-level API
│ │ └── CHORD_LIBRARY # 40+ chord templates
│ └── config.py # Configuration management
├── locales/ # Internationalization files
│ ├── en/LC_MESSAGES/ # English translations
│ └── ko/LC_MESSAGES/ # Korean translations
├── resource/ # Example audio files (place your files here)
├── mcp_server.py # MCP server implementation
├── test_workflow.py # Command-line testing tool
├── requirements.txt # Python dependencies
├── setup.py # Package installation script
├── config.yaml.example # Example configuration
├── README.md # This file
├── README_KR.md # Korean documentation
└── LICENSE # MIT License
src/transcriber.py: Audio analysis engine
src/tab_generator.py: Tab generation engine
mcp_server.py: MCP protocol server
# Place your guitar recording in the resource/ directory
cp ~/Music/my_song.mp3 resource/
# Run analysis
python test_workflow.py "my_song"
from src.transcriber import transcribe_audio
from src.tab_generator import create_tab
# Analyze just the chorus (starts at 1:20, lasts 30 seconds)
notes, bpm = transcribe_audio(
"resource/song.mp3",
start_offset=80.0, # 1:20 = 80 seconds
duration=30.0
)
tab = create_tab(notes, bpm=bpm)
print(tab)
from src.tab_generator import TabGenerator
# Drop D tuning (DADGBE)
generator = TabGenerator(
tuning=['D2', 'A2', 'D3', 'G3', 'B3', 'E4'],
bpm=140
)
tab = generator.generate_ascii_tab(notes)
print(tab)
import glob
import os
from src.transcriber import transcribe_audio
from src.tab_generator import create_tab
# Process all MP3 files in a directory
for audio_file in glob.glob("resource/*.mp3"):
print(f"Processing {audio_file}...")
try:
# Transcribe
notes, bpm = transcribe_audio(audio_file)
# Generate tab
tab = create_tab(notes, bpm=bpm)
# Save to text file
output_file = audio_file.replace('.mp3', '_tab.txt')
with open(output_file, 'w', encoding='utf-8') as f:
f.write(tab)
print(f"✓ Saved to {output_file}")
except Exception as e:
print(f"✗ Failed: {e}")
This project supports multiple languages using gettext.
xgettext -o locales/messages.pot src/*.py mcp_server.py
# Replace 'ja' with your language code (e.g., 'es' for Spanish)
msginit -i locales/messages.pot -o locales/ja/LC_MESSAGES/messages.po -l ja
Translate the strings in the .po file
Compile translations:
msgfmt locales/ja/LC_MESSAGES/messages.po -o locales/ja/LC_MESSAGES/messages.mo
export LANG=ja_JP.UTF-8 # For Japanese
python test_workflow.py "song.mp3"
Solution:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsontail -f ~/Library/Logs/Claude/mcp-server-fingerstyle-mcp.logSolution:
🚀 FINGERSTYLE MCP SERVER IS NOW ONLINE AND READY
source venv/bin/activate
pip install -r requirements.txt
./venv/bin/python3 -c "from src.transcriber import transcribe_audio"
ModuleNotFoundError: No module named 'basic_pitch'Solution:
source venv/bin/activate
pip install -r requirements.txt
FileNotFoundError: Audio file not foundSolution:
resource/ directorylist_available_audio_files tool to see available filesSolution:
Solution:
notes, _ = transcribe_audio("song.mp3")
tab = create_tab(notes, bpm=120) # Force BPM to 120
Solution:
Solution:
tweak_tab_fingering tool to adjust specific notesEnable debug logging for troubleshooting:
# In config.yaml
logging:
level: DEBUG
# Or set environment variable
export LOG_LEVEL=DEBUG
python test_workflow.py "song.mp3"
Contributions are welcome! Here's how you can help:
# Clone and setup
git clone https://github.com/blooper20/fingerstyle-tab-mcp.git
cd fingerstyle-tab-mcp
# Create virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run tests (if available)
python -m pytest tests/
We use conventional commits:
feat: add MIDI export functionality
fix: resolve chord detection for suspended chords
docs: update installation instructions
style: format code with black
refactor: simplify tab generation logic
test: add tests for parallel processing
chore: update dependencies
This project uses the following open-source libraries:
Special thanks to the open-source community for making this project possible.
This project is licensed under the MIT License.
You are free to use, modify, and distribute this software for any purpose, including commercial use.
Made with ❤️ for the open-source community
Star this repo ⭐ if you find it useful!
Выполни в терминале:
claude mcp add fingerstyle-tab-mcp-server -- npx Transcripts, channel stats, search
автор: YouTubeAI image generation using various models.
автор: modelcontextprotocolUnified GPU inference API with 30 AI services (LLM, image gen, video, TTS, whisper, embeddings, reranking, OCR) as MCP tools. Pay-per-use via x402 USDC or API k
автор: gpu-bridgeA powerful image generation tool using Google's Imagen 3.0 API through MCP. Generate high-quality images from text prompts with advanced photography, artistic,
автор: hamflxНе уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории media