MCP Server

String Warrior publishes a Model Context Protocol server at stringwarrior.com/mcp — nine tools an LLM client can call for real fret numbers, scale formulas and tunings instead of guessing. Read-only, no account, no API key: point a client at the URL below and go.

Install

The endpoint is https://stringwarrior.com/mcp over Streamable HTTP. Two ways to add it:

Cursor

Add this to .cursor/mcp.json (project) or your global Cursor MCP settings:

{
  "mcpServers": {
    "stringwarrior": {
      "url": "https://stringwarrior.com/mcp"
    }
  }
}

Claude Desktop

Settings → Connectors → Add custom connector, then paste https://stringwarrior.com/mcp as the URL.

Tools (v1)

Nine tools, all read-only. Every response that names a String Warrior page includes its canonical URL, so a client can cite the source.

  • list_instruments — every instrument this server has data for, with its tuning and a link to its chord library.
  • list_chord_qualities — the chord qualities one instrument actually voices (major, m7, dom7, sus4, add9, …).
  • list_scale_types — all 24 scale types, with category and interval formula.
  • get_tuning — one instrument's open-string tuning.
  • get_chord — every voicing for one chord on one instrument: frets, base fret, CAGED shape, and the actual notes/intervals that voicing sounds.
  • get_scale — one scale's notes and degree-spelled interval formula in a given key.
  • transpose_chord — shift one chord symbol by N semitones.
  • transpose_progression — shift a whole progression from one key to another.
  • get_page_url — build and check the canonical URL for a chord, scale or instrument page, so a client can cite (or verify) a source without guessing at path spelling.

Chord and scale data is read live from the same modules that render the chord library and the scale library — nothing here is a separately maintained copy that could drift from what the site itself publishes.

Example

Ask your client something like “what's an F#m7 chord on guitar, and what scale fits over it?” and it can call get_chord and get_scale instead of recalling fret numbers from training data — then cite the url each response returns.

What this is not

  • Not a chat interface. There is no assistant behind this URL — it answers structured tool calls from an LLM client that supplies its own model.
  • Not authenticated and not for personalization — every call is stateless and the same for every caller.
  • Not a generic music API — the tool catalog is scoped to data this site already owns and publishes as pages.