songsterr-mcp
Supports reading and writing Guitar Pro (.gp5) files, enabling fetching, transposing, and exporting guitar tablatures in Guitar Pro format.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@songsterr-mcpsearch for 'Nothing Else Matters' and transpose to open G tuning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
songsterr-mcp
MCP server for fetching Songsterr tabs and transposing them between tunings and string counts — e.g. taking a song tabbed for 6-string C standard and re-fingering it, pitch-perfect, for a 7-string in B standard.
Status: working, pending live API verification. The transposition engine and the full Guitar Pro pipeline (parse → re-finger → ASCII / .gp5 export) are implemented and covered by tests, including an end-to-end GP5 round-trip. The Songsterr client uses a mix of documented-legacy and unofficial endpoints that still need verification against the live site (see below).
Tools
Tool | Purpose |
| Find songs by title/artist pattern |
| Download a song's Guitar Pro source (cached), list tracks + tunings |
| Re-finger a track onto a new tuning/string count; ASCII or .gp5 out |
| Enumerate tuning presets |
Typical flow: search → get_tab (pick a track) → transpose with
target_tuning="b_standard_7" → read the ASCII or open the written .gp5.
semitone_shift changes actual key; 0 preserves the original pitch across the
tuning change.
Related MCP server: Bandmate MCP Server
Install & run
pip install -e .
python -m songsterr_mcp.server # stdio transportClaude Desktop / Claude Code config:
{
"mcpServers": {
"songsterr": { "command": "python", "args": ["-m", "songsterr_mcp.server"] }
}
}Tests: pytest tests/
Architecture
src/songsterr_mcp/
├── server.py # FastMCP tool definitions (thin; no business logic)
├── client.py # Songsterr HTTP client + on-disk cache (~/.cache/songsterr_mcp)
├── gp_io.py # pyguitarpro <-> engine model adapter; ALL string-number
│ # flipping (GP is high->low, engine is low->high) lives here
├── refinger.py # the engine: pitch decode -> candidates -> beam search
├── tuning.py # presets, note<->MIDI, tuning spec parsing
└── ascii_tab.py # monospace tab renderingThe engine never touches Guitar Pro objects or HTTP — it operates on a neutral
Beat/Note model, so it's independently testable and reusable (e.g. against
alphaTex or MusicXML sources later). See docs/ALGORITHM.md for the full
re-fingering algorithm, cost model, and known limitations.
Songsterr API caveats
Legacy REST endpoints (
/a/ra/songs.json?pattern=) are publicly documented, keyless, and stable.The modern endpoints (
/api/songs,/api/meta/{id}/revisions, and the revisionsourceURL pointing at the underlying Guitar Pro file) are unofficial — they power Songsterr's own player and can change without notice.client.pyfalls back to legacy where possible and fails with inspectable errors elsewhere.Songsterr permits non-commercial API use; commercial use requires their approval. This project caches downloads and sends an identifying User-Agent — keep it that way.
License
GPL-3.0 — free software in the OSI/FSF sense, commercial use included.
Note the code license and the API terms are separate things: this code is GPL, but Songsterr's API itself permits only non-commercial use without their approval (see caveats above). Likewise, tab content fetched through this tool is copyrighted musical composition belonging to its rights holders; this tool is for personal practice use.
Available Tools
4 toolssongsterr_get_tabARead-only
Download a song's Guitar Pro source file (cached locally).
Returns JSON: {file, tracks: [{index, name, strings, tuning}]}. Pick a track index for songsterr_transpose.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses local caching behavior and full return JSON structure; readOnlyHint annotation is consistent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences with no redundancy, front-loaded with the main action and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential information for a simple tool with one parameter and output schema; minor gaps like error handling are acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not add meaning beyond the schema's parameter description; baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states downloading a Guitar Pro source file, lists return structure, and connects to sibling tool songsterr_transpose, distinguishing its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Indicates when to use (after songsterr_search_songs, before songsterr_transpose) but lacks explicit exclusions or when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
songsterr_list_tuningsARead-onlyIdempotent
List available tuning presets and their notes (low->high).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, idempotentHint=true, and openWorldHint=false. Description adds that tunings are listed with notes in low->high order, which is consistent and adds minor behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 8 words, no extraneous information. Highly efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless listing tool with an output schema, the description is sufficiently complete. It specifies the content (tuning presets) and order (low->high notes). Could optionally mention output format, but that is covered by schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100% (empty schema). The description adds no parameter info, but per guidelines, zero parameters yields a baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'list' and resource 'tuning presets', including ordering detail 'notes (low->high)'. While it implicitly distinguishes from siblings (get tab, search, transpose), it does not explicitly differentiate them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. However, given the simple listing nature and no sibling listing tools, the usage context is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
songsterr_search_songsARead-only
Search Songsterr for songs by title/artist pattern.
Returns JSON: [{id, title, artist}] — pass id to songsterr_get_tab.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description adds the return format (JSON array of objects) and chaining behavior. It does not add negative or contradictory behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. It front-loads the purpose and immediately provides output format and a chaining hint, making it efficient for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (1 parameter, 1 required, output schema present), the description covers the core functionality and output. It does not cover error cases or pagination, but for a search tool, this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% according to context, so the description must compensate. It mentions that search is by title/artist pattern and provides an example in the schema, but does not elaborate on the limit parameter or how the pattern is matched. The description adds the output format but lacks parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'search', resource 'songs', and the criteria 'by title/artist pattern'. It distinguishes from siblings by hinting that the output id is used for songsterr_get_tab, and the other siblings (list_tunings, transpose) serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates that after searching, the id should be passed to songsterr_get_tab, implying a workflow. However, it does not explicitly state when to avoid this tool or provide alternatives, but the context from sibling names makes usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
songsterr_transposeAIdempotent
Re-finger a track onto a new tuning/string count, preserving pitch.
Set semitone_shift to also change key. Returns ASCII tab, or the path of a written .gp5, plus any playability warnings.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide idempotentHint=true, and the description adds that pitch is preserved, and returns ASCII tab or .gp5 path plus playability warnings. No contradictions. Describes outputs and warnings beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with key action, no redundant words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given well-documented schema and existing output schema, the description covers purpose, key behavior, and outputs. It lacks explicit mention of file prerequisites but the parameter schema covers that. Overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions already document all parameters, so the tool description adds marginal value (e.g., 'preserving pitch'). The description's additional context about 'plus any playability warnings' is helpful but not critical.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool re-fingers a track to a new tuning while preserving pitch, and mentions semitone_shift for key change. It distinguishes from siblings: songsterr_get_tab retrieves tabs, songsterr_list_tunings lists tunings, songsterr_search_songs searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for transposing tracks onto new tunings, but does not explicitly state when to use vs alternatives, nor when not to use. Prerequisites (file from songsterr_get_tab) are in the parameter schema, not description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.1.0- First observed
songsterr_get_tab - First observed
songsterr_list_tunings - First observed
songsterr_search_songs - First observed
songsterr_transpose
TDQS
Each tool serves a distinct purpose: searching songs, retrieving tabs, listing tunings, and transposing. No functional overlap exists.
All tools use the 'songsterr_' prefix with snake_case. Most follow verb_noun pattern, but 'transpose' lacks a noun, causing a minor inconsistency.
Four tools appropriately cover the core tasks of a tablature service—searching, retrieving, transposing, and exploring tunings—without being too few or excessive.
The tools form a complete workflow: search for songs, retrieve a tab, optionally list tunings, and transpose. No obvious missing operations for the domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Convert projects between Logic, Ableton, FL Studio and REAPER; generate, separate, transcribe
Seven tools over the tabnas parsing engine: parse, validate, diagnose, fixtures, compare.
Look up a guitar chord by name and get a text chord diagram. 12,708 standard-tuning names.
Audio features + harmonic set-building for tracks by name/ISRC. Spotify audio-features replacement.
Related MCP Servers
- AlicenseAqualityCmaintenanceFetches YouTube video subtitles and transcripts with support for multiple languages and output formats (SRT, VTT, TXT, JSON).119Apache 2.0
- FlicenseNot gradedqualityDmaintenanceProvides access to the Bandmate REST API for managing songs with chord notations, lyrics, and metadata, as well as organizing them into lists. Supports searching, creating, updating, and retrieving songs and playlists with optional authentication.1-
- FlicenseNot gradedqualityDmaintenanceEnables users to search for guitar, bass, and drum tabs on Songsterr by song title, artist, or specific tab metadata. It retrieves song details and track lists, providing direct links to view the full tablature on the Songsterr website.-
- AlicenseNot gradedqualityAmaintenanceSearch artists, releases, recordings, works, and labels; traverse relationships; resolve ISRC/ISWC/barcode; fetch cover art via MCP. STDIO or Streamable HTTP.991Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jaegerpicker/SongsterrMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server