Skip to main content
Glama
jaegerpicker

songsterr-mcp

by jaegerpicker

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

songsterr_search_songs

Find songs by title/artist pattern

songsterr_get_tab

Download a song's Guitar Pro source (cached), list tracks + tunings

songsterr_transpose

Re-finger a track onto a new tuning/string count; ASCII or .gp5 out

songsterr_list_tunings

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 transport

Claude 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 rendering

The 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 revision source URL pointing at the underlying Guitar Pro file) are unofficial — they power Songsterr's own player and can change without notice. client.py falls 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 tools
songsterr_get_tabA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_tuningsA
Read-onlyIdempotent

List available tuning presets and their notes (low->high).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_songsA
Read-only

Search Songsterr for songs by title/artist pattern.

Returns JSON: [{id, title, artist}] — pass id to songsterr_get_tab.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_transposeA
Idempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 4 tool updatesv0.1.0
    • First observedsongsterr_get_tab
    • First observedsongsterr_list_tunings
    • First observedsongsterr_search_songs
    • First observedsongsterr_transpose

TDQS

A4.2/5.0
Disambiguation5/5

Each tool serves a distinct purpose: searching songs, retrieving tabs, listing tunings, and transposing. No functional overlap exists.

Naming Consistency4/5

All tools use the 'songsterr_' prefix with snake_case. Most follow verb_noun pattern, but 'transpose' lacks a noun, causing a minor inconsistency.

Tool Count5/5

Four tools appropriately cover the core tasks of a tablature service—searching, retrieving, transposing, and exploring tunings—without being too few or excessive.

Completeness5/5

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

ActivitySlowing
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Search artists, releases, recordings, works, and labels; traverse relationships; resolve ISRC/ISWC/barcode; fetch cover art via MCP. STDIO or Streamable HTTP.
    99
    1
    Apache 2.0

Latest Blog Posts

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