Koskamo

Fretwork MCP

An MCP server providing guitar tools for AI assistants, including identifying chords from fret positions, retrieving chord shapes and diagrams, transposing chords, finding capo positions, locating scales on the fretboard, determining song keys, finding playable songs, checking guitar levels, and generating practice plans.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Fretwork MCP logo, by FretworkVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Fretwork
MCP endpoint (Streamable HTTP)
https://mcp.guitarfretwork.com/mcp
Vendor documentation

What you can do with it

  • Identify chords from fret positions
  • Get chord shapes and diagrams
  • Transpose chords to new keys
  • Generate daily practice plans

Source and maintenance

Vendor evidenceRegistry 1.0.1

Protocol and capabilities

Server
fretwork 1.0.1
MCP protocol
2025-06-18
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Fretwork Guitar Tools help people learn and play guitar. Use identify_chord when someone describes a shape by its frets; get_chord_shapes to show how to play a named chord; transpose_chords and find_capo to change key; get_scale for scales on the fretboard; find_key to name a song's key; find_songs to suggest songs for the chords a learner knows; guitar_level_check then make_practice_plan to plan practice. All tools are read-only and work in standard tuning (E A D G B E), low E string first. Text chord and scale diagrams are monospace; each result includes a link to the matching free page on guitarfretwork.com.

Tools

9 advertised

identify_chord — Identify a guitar chord
Advertised by the server during the last successful anonymous check.
Advertised read-only

Names the chord a guitarist is holding from the fret on each string (standard tuning), lists its notes and returns a chord diagram. Use when someone asks "what chord is this?" and gives frets like x32010, 3-2-0-0-0-3 or "0 2 2 1 0 0" (low E string first; x = muted string).

identify_chord input schema
{
  "type": "object",
  "required": [
    "frets"
  ],
  "properties": {
    "frets": {
      "type": "string",
      "description": "Six frets from the low E string to the high e string. Use x for a muted string, 0 for open. Examples: \"x32010\", \"3 2 0 0 0 3\", \"8-10-10-9-8-8\"."
    }
  },
  "additionalProperties": false
}
identify_chord annotations
{
  "title": "Identify a guitar chord",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_chord_shapes — Show how to play a guitar chord
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns playable guitar shapes for a chord name (open position and movable barre shapes), with frets, fingering where known, the notes in the chord and a text chord diagram. Handles major, minor, 7, maj7, m7, sus2, sus4, add9, 6, m6, 9, dim, m7b5, dim7, aug, power chords and slash chords such as G/B.

get_chord_shapes input schema
{
  "type": "object",
  "required": [
    "chord"
  ],
  "properties": {
    "chord": {
      "type": "string",
      "description": "Chord name, for example \"F\", \"Bm\", \"F#m7\", \"Cadd9\", \"Bbmaj7\", \"G/B\", \"E5\"."
    }
  },
  "additionalProperties": false
}
get_chord_shapes annotations
{
  "title": "Show how to play a guitar chord",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
transpose_chords — Transpose guitar chords to a new key
Advertised by the server during the last successful anonymous check.
Advertised read-only

Moves a song's chords to a new key. Accepts a chord list, a chord chart with lyrics (chord lines are transposed, lyric lines are kept), or inline [C] chords. Give either from_key and to_key, or a number of semitones. Also suggests capo positions that let the guitarist keep easy open shapes in the new key.

transpose_chords input schema
{
  "type": "object",
  "required": [
    "text"
  ],
  "properties": {
    "text": {
      "type": "string",
      "description": "The chords or chord chart, e.g. \"G D Em C\" or a chart with chord lines above lyrics."
    },
    "to_key": {
      "type": "string",
      "description": "Target key, e.g. \"Bb\" or \"C minor\"."
    },
    "from_key": {
      "type": "string",
      "description": "Current key, e.g. \"G\" or \"A minor\". Optional if semitones is given; if missing, the first chord is used."
    },
    "spelling": {
      "enum": [
        "auto",
        "sharps",
        "flats"
      ],
      "type": "string",
      "description": "Accidentals for the result. auto follows the target key."
    },
    "semitones": {
      "type": "integer",
      "maximum": 11,
      "minimum": -11,
      "description": "Semitones to move (+ up, - down). Used when to_key is not given."
    }
  },
  "additionalProperties": false
}
transpose_chords annotations
{
  "title": "Transpose guitar chords to a new key",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_capo — Find the capo position for a key
Advertised by the server during the last successful anonymous check.
Advertised read-only

Works out where to put a capo. Give the key you want to sound in (for example to match a singer or a recording) and, optionally, the open-chord key you want to play shapes in. Returns the capo fret, or the easy options if no shape key is given.

find_capo input schema
{
  "type": "object",
  "required": [
    "sounding_key"
  ],
  "properties": {
    "shape_key": {
      "type": "string",
      "description": "Optional. The key whose open chord shapes you want to play, e.g. \"G\" or \"Em\"."
    },
    "sounding_key": {
      "type": "string",
      "description": "The key the music should sound in, e.g. \"Bb\", \"F# minor\"."
    }
  },
  "additionalProperties": false
}
find_capo annotations
{
  "title": "Find the capo position for a key",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_scale — Show a guitar scale on the fretboard
Advertised by the server during the last successful anonymous check.
Advertised read-only

Gives the notes of a scale in any key and where they fall on the guitar fretboard (standard tuning), string by string, with root notes marked. Scales: major, natural minor, harmonic minor, melodic minor, the seven modes (dorian, phrygian, lydian, mixolydian, locrian), minor pentatonic, major pentatonic, blues and major blues.

get_scale input schema
{
  "type": "object",
  "required": [
    "root",
    "scale"
  ],
  "properties": {
    "root": {
      "type": "string",
      "description": "Key note, e.g. \"A\", \"F#\", \"Bb\"."
    },
    "scale": {
      "type": "string",
      "description": "Scale type, e.g. \"minor pentatonic\", \"major\", \"blues\", \"dorian\"."
    },
    "to_fret": {
      "type": "integer",
      "maximum": 24,
      "minimum": 1,
      "description": "Highest fret to show (default 12)."
    },
    "from_fret": {
      "type": "integer",
      "maximum": 20,
      "minimum": 0,
      "description": "Lowest fret to show (default 0)."
    }
  },
  "additionalProperties": false
}
get_scale annotations
{
  "title": "Show a guitar scale on the fretboard",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_key — Find the key of a song from its chords
Advertised by the server during the last successful anonymous check.
Advertised read-only

Works out the most likely key of a song from its chord progression, gives each chord its Roman numeral, lists the other chords that belong to the key, and suggests which scale to solo with.

find_key input schema
{
  "type": "object",
  "required": [
    "chords"
  ],
  "properties": {
    "chords": {
      "type": "string",
      "description": "The chords in order, e.g. \"G D Em C\" or \"Am F C G\"."
    }
  },
  "additionalProperties": false
}
find_key annotations
{
  "title": "Find the key of a song from its chords",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_songs — Find songs to play with the chords you know
Advertised by the server during the last successful anonymous check.
Advertised read-only

Finds songs a guitarist can play with the chords they already know, from Fretwork's free library of 87 public-domain folk, gospel, blues, campfire and Christmas songs. Each song has chords, key, time signature, level and a free play-along page. Can also list songs that need just one or two new chords.

find_songs input schema
{
  "type": "object",
  "required": [
    "chords_known"
  ],
  "properties": {
    "level": {
      "enum": [
        "any",
        "Easy",
        "Improver",
        "Harder"
      ],
      "type": "string",
      "description": "Filter by level (default any)."
    },
    "chords_known": {
      "type": "string",
      "description": "Chords the player can already play, e.g. \"G C D Em\"."
    },
    "max_new_chords": {
      "type": "integer",
      "maximum": 2,
      "minimum": 0,
      "description": "Also include songs needing up to this many extra chords (default 0)."
    },
    "time_signature": {
      "enum": [
        "any",
        "4/4",
        "3/4",
        "6/8"
      ],
      "type": "string",
      "description": "Filter by time signature (default any)."
    }
  },
  "additionalProperties": false
}
find_songs annotations
{
  "title": "Find songs to play with the chords you know",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
guitar_level_check — Check a guitarist's level
Advertised by the server during the last successful anonymous check.
Advertised read-only

A quick self-assessment that places a guitarist on Fretwork's 10-stage learning path (Stage 0 Getting Started to Stage 9 Artistry) from yes/no answers to up to nine questions about what they can already play, and says what to learn next. The questions build on each other, so answers are read in order up to the first "no". Called with no answers, it returns the nine questions.

guitar_level_check input schema
{
  "type": "object",
  "properties": {
    "play_the_changes": {
      "type": "boolean",
      "description": "Can you solo over a progression and target the chord tones as the chords change?"
    },
    "tune_and_clean_notes": {
      "type": "boolean",
      "description": "Can you tune the guitar and play a clean note on every string?"
    },
    "change_chords_in_time": {
      "type": "boolean",
      "description": "Can you change between basic open chords (like G, C, D, Em) in time and play a whole simple song?"
    },
    "transcribe_and_tension": {
      "type": "boolean",
      "description": "Can you transcribe a full solo and improvise with tension and release?"
    },
    "bends_vibrato_full_solo": {
      "type": "boolean",
      "description": "Can you play a solo with in-tune bends, vibrato and clear phrases?"
    },
    "riff_blues_and_short_solo": {
      "type": "boolean",
      "description": "Can you play a riff, a 12-bar blues and a short solo of your own?"
    },
    "barre_chords_and_16th_groove": {
      "type": "boolean",
      "description": "Can you play any major or minor barre chord and hold a 16th-note strumming groove?"
    },
    "four_chord_song_with_pattern": {
      "type": "boolean",
      "description": "Can you play a four-chord song start to finish with a strumming pattern?"
    },
    "keys_and_pentatonic_anywhere": {
      "type": "boolean",
      "description": "Can you name the chords in any key and solo with the pentatonic scale anywhere on the neck?"
    }
  },
  "additionalProperties": false
}
guitar_level_check annotations
{
  "title": "Check a guitarist's level",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
make_practice_plan — Make a guitar practice plan
Advertised by the server during the last successful anonymous check.
Advertised read-only

Builds a daily guitar practice routine and a 4-week focus plan sized to the player's level, the minutes they have each day and their goal (songs, strumming, fingerpicking, lead, barre chords, theory or general). Uses Fretwork's 10-stage curriculum, where stage 0 is for someone who has never played.

make_practice_plan input schema
{
  "type": "object",
  "properties": {
    "goal": {
      "enum": [
        "general",
        "songs",
        "strumming",
        "fingerpicking",
        "lead",
        "barre_chords",
        "theory"
      ],
      "type": "string",
      "description": "Main goal (default general)."
    },
    "stage": {
      "type": "integer",
      "maximum": 9,
      "minimum": 0,
      "description": "Fretwork stage 0–9 (0 = never played, 1 = first chords, 2 = rhythm & songs, 3 = riffs & first solos, 4 = barre chords, 5 = scales & keys, 6 = lead guitar, 7–9 = advanced)."
    },
    "days_per_week": {
      "type": "integer",
      "maximum": 7,
      "minimum": 1,
      "description": "Practice days per week (default 5)."
    },
    "minutes_per_day": {
      "type": "integer",
      "maximum": 120,
      "minimum": 10,
      "description": "Practice minutes per day (default 20)."
    }
  },
  "additionalProperties": false
}
make_practice_plan annotations
{
  "title": "Make a guitar practice plan",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
241 ms
95th percentile latency
241 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 241 ms · metadata changed · 9 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http fretwork-mcp https://mcp.guitarfretwork.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add fretwork-mcp --url https://mcp.guitarfretwork.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable fretwork-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "fretwork-mcp": {
      "url": "https://mcp.guitarfretwork.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "fretwork-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.guitarfretwork.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start fretwork-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "fretwork-mcp": {
      "type": "http",
      "url": "https://mcp.guitarfretwork.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http fretwork-mcp https://mcp.guitarfretwork.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "fretwork-mcp": {
      "url": "https://mcp.guitarfretwork.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "fretwork-mcp": {
      "serverUrl": "https://mcp.guitarfretwork.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Fretwork MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Fretwork MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing