mcp-imslp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
IMSLP, the International Music Score Library Project, is
also called the Petrucci Music Library. It is a free library of classical music
run by volunteers, holding the sheet music, the parts, the arrangements and the
recordings of works whose copyright has lapsed, together with what its pages say
about each composer. It reviews the copyright of every score for Canada, the
United States and the European Union separately, and publishes its pages under
CC BY-SA 4.0.
This server connects a chat client to that library. You can search the works and
the people it catalogues, read a work with its opus number, its key, its
instrumentation and the year it was written, page through the editions a work
holds with their publishers, editors and copyright terms, read what the library
says about a composer, and browse a genre, a key or an instrumentation. It reads
the library and links to it, and it needs no API key and no account.
_Version française_
---
Install
**One-click install**
**Claude Code**
**Claude Desktop, Cursor, and any client using the standard config format**
Node 24 or later is required, and no environment variable has to be set.
With Docker
-i keeps stdin open, which is where the protocol travels, and -t is left out
because a TTY rewrites the stream. The container needs outbound HTTPS to
imslp.org, and nothing else: no volume, no port, no credential.
Bundle, without npm
Download mcp-imslp-1.0.1.mcpb from
the latest release and
open it. A client that supports MCP bundles installs it on its own, with no npm
and no configuration file to edit. The bundle carries its dependencies, so
nothing is fetched at install time.
What you can ask
- "What does IMSLP hold of Chopin's nocturnes?"
- "Read me the page of Erik Satie and tell me when he lived."
- "List the editions of Debussy's Clair de lune, with who published each one."
- "Is the Henle edition of that piece free to use in the United States?"
- "Show me works for solo cello in the library."
The ordinary path runs from a search to a work: search_works names the page of
a work, and get_work reads that page. The same holds for a person, from
search_people to get_person or list_person_works.
Tools
| Tool | What it does |
| ------------------- | ---------------------------------------------------------------------------- |
| search_works | Finds the page of a work by title, composer or words on the page. |
| search_people | Finds the category a composer, editor, arranger or performer is filed under. |
| get_work | Reads one work: its facets, its sections and its copyright terms. |
| list_work_files | Pages through the editions a work holds, with their files. |
| list_person_works | Reads the works the library files under one person. |
| get_person | Reads what the library holds about one person. |
| browse_category | Reads the works filed under a genre, a key or an instrumentation. |
A work is addressed by the title of its page, written Work (Composer), as in
Nocturnes, Op.9 (Chopin, Frédéric). A person is addressed by a category,
written Category:Surname, Forename. Both come back from a search, and the
Category: prefix may be left out.
The library titles a work in the language its composer used, so Die Zauberflöte
finds the opera where The Magic Flute finds the pages written about it. A thin
answer for a famous work is a sign the title is in another language.
search_works
Searches the pages of the works for words appearing anywhere on them, so a title,
a composer or a dedication all find the works carrying them.
| Argument | Type | Required | What it does |
| -------- | ------------------------------- | -------- | -------------------------------------------------------- |
| query | string, 1 to 300 characters | yes | What to look for across the pages of the works. |
| limit | integer, 1 to 50, default 10 | no | Rows to serve. |
| offset | integer, 0 or more, default 0 | no | Rows to skip, using the next_offset of a prior answer. |
**In return:** rows carrying page, which get_work takes; work and
composer, read off that title; page_url; snippet, the words around the
match; size_bytes, words and last_edited as the library states them. The
envelope carries returned, has_more and next_offset, which is the offset to
read on from. total is always null: the library publishes no count of what a
search matched. composer is null on a title written outside the
Work (Composer) form, and snippet is null on a row the search summarised
with nothing.
search_people
Finds the composers, editors, arrangers and performers by name. The library