ScanSing: sheet music to MusicXML
Server Details
ScanSing reads printed sheet music. Give Claude a PDF or a photo of a score and it gets back MusicXML, the format MuseScore, Sibelius, Finale and Dorico open. It is the recogniser inside the ScanSing app for choir singers, offered as a connector.
Once a score is recognised, Claude can answer questions about it without recognising it again:
what the key, time signature, tempo and length are, and each part's range, clefs and lyrics;
one voice on its own, for example just the alto line of a choir piece;
the score or a part moved to another key, with notes respelled for the new key signature;
a MIDI file, one track per part, to listen to or rehearse with;
a short-lived download link to open the result in a browser or notation app.
It handles PDFs up to 40 pages and PNG, JPEG, HEIC, TIFF and WebP images, can recognise selected pages of a long PDF, and can split a songbook into one MusicXML per piece. A file can be given as a web link or a small image; in Claude Code, a file on your computer is sent through a one-time upload link.
Recognition spends pages from your ScanSing plan, so it is the only tool that is not read-only. Everything else works on the stored result and is free. The first connection with a new email comes with 20 free pages; paid plans start at $9 a month for 300 pages. Scores and results are deleted about an hour after recognition and are never used for training.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 14 tools
Most tools have clearly distinct roles across recognition, inspection, description, export, and transformation. There is some potential confusion between get_musicxml, extract_part, get_download_link, export_midi, and export_score because several return or link to score representations, but the descriptions mostly clarify the differences.
All tool names use snake_case and follow a predictable verb_noun pattern such as describe_score, export_midi, get_musicxml, and transpose_score. The naming is consistent throughout with no mixed casing or vague standalone verbs.
The 14 tools are well scoped for a sheet-music recognition and export server. Recognition, status, description, export, transposition, labeling, upload, and quota operations each justify their place.
The surface covers the core lifecycle: inspect, recognize, check status, describe, retrieve MusicXML, export, transpose, extract parts, label notes, and manage upload links and usage. A minor gap is the lack of a tool to list or rediscover earlier recognitions, which could leave users stranded if they lose an id.
Publisher details
- Operator
- Andrei Bocharnikov (ScanSing) · Publisher source
- Operator website
- https://scansing.app · Publisher source
- Vendor relationship
- First-party · Publisher source
- Documentation
- https://scansing.app/mcp/ · Publisher source
- Trust center
- Not available
- Restrictions
- Requires a ScanSing account (sign in with OAuth or an API key). New accounts get 20 free pages; more pages need a paid plan from $9/month. · Publisher source
Available Tools
14 toolsdescribe_scoreDescribe a scoreARead-onlyIdempotentInspect
What is in a recognised score: title, composer, key, time signature, tempo,
duration, and per part its name, range (lowest/highest note), clefs and lyrics.
key is the signature as printed; keyName and mode say major or minor as the
engine reads it off the music (e.g. 'E minor'; mode null when it cannot tell).
Cheaper than reading the MusicXML; nothing is recognised again.
Inputs: recognition_id (required), file. Returns: object
export_midiExport MIDIARead-onlyIdempotentInspect
A link to the score as a MIDI file (one track per part) to listen to or rehearse with; optionally one part and transposed. Repeats are played once.
Inputs: recognition_id (required), key, file, part, +2 more. Returns: object
export_scoreExport PDF or PNGARead-onlyIdempotentInspect
A short-lived link to the score engraved as sheet music to print or view: a PDF of every page, or PNG pages. Works on any recognition: the original, one from label_notes (its names are engraved under the notes), and optionally one part, transposed or labelled on the way. The score is laid out anew from the MusicXML, not drawn over the scan. Nothing is recognised again, no pages are charged.
Inputs: recognition_id (required), key, file, page, +7 more. Returns: object
extract_partExtract a partARead-onlyIdempotentInspect
The MusicXML of one part (or a few) of a recognised score, e.g. the alto line of a choir piece. Part names are in describe_score.
Inputs: part (required), recognition_id (required), file, save_to. Returns: object
fit_rangeDoes it fit a rangeARead-onlyIdempotentInspect
Whether a part (default: the whole score) lies within a range, a singer's voice,
an instrument's compass, a kalimba's tines, and how to make it: lowest/highest
are its notes now, fits every transposition that puts them inside low…high,
nearest first, with the key it lands in (empty: no shift fits). Pass a shift's
semitones to transpose_score. Nothing is recognised again, no pages are charged.
Inputs: low (required), high (required), recognition_id (required), file, +1 more. Returns: object
get_download_linkDownload linkARead-onlyIdempotentInspect
A short-lived link to the MusicXML, MIDI or MP3 that opens without a key: give it
to the user to open in a browser, MuseScore, Sibelius or a DAW. It lives as long
as the recognition (about an hour). labels names each note in the MusicXML.
An MP3 is the same MIDI rendered; it has no tempo of its own.
Inputs: recognition_id (required), key, file, part, +4 more. Returns: object
get_musicxmlGet MusicXMLARead-onlyIdempotentInspect
The MusicXML of an earlier recognition, a slice at a time (or saved to a local file).
With labels, each note's name is written under it (see label_notes); no pages are charged.
Inputs: recognition_id (required), labels, offset, save_to, +2 more. Returns: object
get_recognitionGet a recognitionARead-onlyIdempotentInspect
Status and summary of an earlier recognition.
Inputs: recognition_id (required). Returns: object
get_upload_linkUpload a local fileAInspect
A one-off URL to upload a local file to and have it recognised, for when the file
is on the user's machine and this server is remote. Run the returned command in a
shell on that machine (with the file's path in place of FILE): it uploads the file,
waits for the recognition (seconds to minutes) and prints its summary with id.
Then use get_musicxml, describe_score etc. with that id. The URL works once, within
15 minutes; for another file ask for another link. Not for a file attached to the
chat: pass that to recognize_sheet_music as attachment.
Inputs: mode, pages, labels, filename, +1 more. Returns: object
get_usagePages left this monthARead-onlyIdempotentInspect
Pages this key has used and has left this month, and its plan. Shared keys (plan owner/shared) have no quota and report nulls.
Inputs: no named parameters. Returns: object
inspect_scoreCount pagesARead-onlyIdempotentInspect
The kind and page count of a file, without recognising it or charging pages.
Use it to pick pages for a long PDF or to check the quota (get_usage) first.
Calls the ScanSing API, see https://scansing.app/mcp/.
Inputs: url, path, attachment, file_base64. Returns: object
label_notesLabel notesAInspect
A new recognition whose MusicXML has each printed note's name written under it
as a lyric line of its own, as method books print it for beginners: a chord is
named top to bottom, sung words stay where they are. letters and solfege-fixed name
the pitch; movable-do, degrees and kalimba count from the key's tonic. The returned id is the
labelled result (use it with export_score for a printable PDF, extract_part,
transpose_score…); the original labelledFrom stays as it was. Nothing is
recognised again, no pages are charged.
Inputs: recognition_id (required), key, scheme, save_to. Returns: object
recognize_sheet_musicRecognize sheet musicAInspect
Recognize a PDF or image of sheet music and return its MusicXML with a summary (pages, parts, measures, warnings). Give exactly one of url, attachment, file_base64 or path. A file on the user's own machine (a remote server cannot read it, and a PDF is too big for base64): use get_upload_link instead. Calls the ScanSing API, see https://scansing.app/mcp/.
Inputs: url, mode, path, pages, +7 more. Returns: object
transpose_scoreTransposeARead-onlyIdempotentInspect
The MusicXML moved to another key: by semitones (-2 = a tone down) or to a
key (nearest direction; give both to choose the octave). Notes are respelled
for the new key signature; chord symbols move too.
Inputs: recognition_id (required), key, file, part, +2 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
ScoreStarling is an all-in-one AI sheet music assistant. Ask for anything to do with sheet music: transcribe a song from audio, video or a link, read a PDF or photo, add chords, change the key, make it easier, turn it into guitar TAB or jianpu, or arrange it for another instrument. Every change lands on a real score you can hear, fix and download (PDF, MIDI, MusicXML, guitar TAB, jianpu, audio). Hosted remote server with OAuth sign-in. Free accounts get monthly credits and free previews; prices are at scorestarling.com/pricing. Setup: https://scorestarling.com/mcp
Read-only sheet music discovery and practice tools, with browser-local recognition guidance.
Convert MusicXML, MIDI, ABC, MEI and Humdrum, print sheet music, and verify every note survived.
Choir management for AI assistants: events, RSVP, announcements and sheet music of your choir.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables Claude AI to convert, edit, and analyze MuseScore files (.mscz, .musicxml, MIDI) through natural language commands, supporting format conversion, transposition, harmony analysis, and more.201-
- AlicenseNot gradedqualityBmaintenanceEnables AI tools to convert music scores between MusicXML, MIDI, ABC, MEI and Humdrum while verifying each result note by note and reporting exactly what was kept or lost. Also supports rendering printable sheet music and audio previews, transposing, extracting parts or bars, validating bars, and comparing versions across formats.MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that transcribes audio files into MIDI and MusicXML scores, converts MIDI to notation, and extracts playable note data for DAWs. It enables Claude to turn raw recordings into editable, shareable music scores via three simple tools.1-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to compose real music from chord-symbol descriptions into MIDI files and audio previews, with musicology cross-checks on every chord.1AGPL 3.0
Glama MCP Gateway
Add one secure layer between your agents and this server.