tuxguitar-claude-mcp
Lets Claude create guitar and bass tablature as TuxGuitar-compatible .gp5 files, including tracks, tuning, measures, notes, and effects such as palm mute, tremolo picking, bends, and harmonics.
README
tuxguitar-claude-mcp
An MCP server that lets Claude write guitar/bass tabs — tracks, tuning,
measures, notes, and tab effects like palm mute, tremolo picking, bends, and harmonics — directly
as .gp5 files that TuxGuitar can open.
This is Phase 1: file-based only. There is no live control of a running TuxGuitar instance (that would be a future Phase 2, not yet designed).
How it works
The MCP server (TypeScript, @modelcontextprotocol/sdk) holds an in-memory song state that Claude
builds up tool call by tool call — create tracks, add measures, set tuning, insert beats and notes.
save_song hands that state to a small Java helper (song-writer/, built on the TuxGuitar
libraries themselves) which serializes it to a real .gp5 file.
Requirements
- Windows, with TuxGuitar installed. The server shells out to the JRE bundled with that
install (
jre\bin\java.exe) and to TuxGuitar's own libraries to write valid.gp5files — TuxGuitar itself does not need to be running. Defaults toC:\Program Files\tuxguitar; override with theTUXGUITAR_HOMEenvironment variable if yours is installed elsewhere. - Node.js (18+) for the MCP server.
- Java 21 to build the Java helper once (e.g. Eclipse Temurin JDK 21). It is not needed at runtime — TuxGuitar's bundled JRE handles that.
- Claude Code (or another MCP-compatible client) to register and use the server.
Setup
1. Build the Java song-writer
powershell -ExecutionPolicy Bypass -File song-writer\build.ps1
Optional, run its tests:
powershell -ExecutionPolicy Bypass -File song-writer\test.ps1
2. Build the MCP server
npm install
npm run build
npm run test
3. Register it with Claude Code
Add it to mcpServers in your Claude Code config (globally in ~/.claude.json, or in a project's
.mcp.json):
"tuxguitar": {
"type": "stdio",
"command": "node",
"args": ["<path-to-repo>\\dist\\index.js"],
"env": {}
}
If TuxGuitar isn't installed at C:\Program Files\tuxguitar, set TUXGUITAR_HOME in env:
"env": { "TUXGUITAR_HOME": "D:\\Apps\\tuxguitar" }
Restart Claude Code so it picks up the new server.
Tools
| Tool | What it does |
|---|---|
tuxguitar_ping |
Checks that Java and the song-writer helper are reachable. |
new_song |
Starts a new, empty song (discards current state). |
set_song_info |
Sets title and/or artist of the current song. |
get_song |
Returns the current song state as JSON. |
save_song |
Writes the current song state out as a .gp5 file. |
create_track |
Creates a new track (guitar/bass) with a tuning. |
list_tracks |
Lists all tracks of the current song. |
set_tuning |
Changes the tuning of an existing track. |
add_measure |
Adds a new measure at the end of the song (applies to all tracks). |
set_tempo |
Sets the tempo (BPM) of an existing measure. |
set_time_signature |
Sets the time signature of an existing measure. |
add_beats |
Inserts an ordered list of beats (rhythmic slots with notes) into one track's measure. |
clear_measure |
Removes all beats of one track in a given measure. |
Manual integration test
- Call
tuxguitar_ping— expect"ok". - Call
new_song,create_track,add_measure,add_beats,save_songin sequence. - Open the resulting
.gp5file in the real TuxGuitar app and check it visually/aurally.
Known limitations
- Phase 1 only: no live control of a running TuxGuitar instance.
add_beatsdoesn't validate that beats fit within a measure's total length — silent overfill is accepted.- Measures with no beats stay inconsistent: measure 0 is genuinely empty, later measures keep TuxGuitar's own auto-filled rest beat.
- Windows-only.
Troubleshooting
- "Unknown track_id" / "Unknown measure_index": check the order of calls — tracks and measures
must exist before
add_beatsreferences them. tuxguitar_pingfails: check thatsong-writer\dist\tuxguitar-song-writer.jarexists (rerunbuild.ps1) and thatTUXGUITAR_HOME(or the defaultC:\Program Files\tuxguitar) points at a real TuxGuitar install.
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.