← Back to search

io.github.cyanheads/openlibrary-mcp-server

cyanheads streamable_http Scanned 1d ago

Read-only access to Open Library — 20M+ book editions, authors, subjects, and cover images.

B
89.2 / 100

Versions

0.1.10latest
first seen Jun 5, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 10

openlibrary_get_work
annotations: verified low

Fetch a work by Open Library Work ID (OL…W). Returns title, description, subjects, cover IDs, and linked author IDs for follow-up lookups. Works represent the abstract book concept independent of any specific edition. A merged work ID resolves to the work it was merged into. To reach a work from an ISBN, call openlibrary_get_edition with id_type "isbn" — its work_id output is the parent work. Note: author names are not included — use openlibrary_get_author or openlibrary_search_books for names.

input object output object subjects array subject_times array subject_people array subject_places array
readOnlyHint true openWorldHint true idempotentHint true
openlibrary_get_author_works
annotations: verified low

List works by an author. Returns titles, cover IDs, and work OLIDs for drilling into editions or details. Use openlibrary_get_author for author bio and details, or openlibrary_get_editions to explore specific printings.

input object limit number total number offset number output object author_id string totalCount number
readOnlyHint true openWorldHint true
openlibrary_get_cover_url
annotations: verified low

Resolve a cover image URL for a book or author photo. Returns a direct HTTPS URL in the requested size (S/M/L). The Covers API always returns HTTP 200 — missing covers return a 1×1 placeholder GIF, not a 404 — so the identifier format is validated locally first: "id" must be numeric, "isbn" 10 or 13 digits (an ISBN-10 may end in an X check digit), "olid" an edition OLID (OL…M) for target "book" and an author OLID (OL…A) for target "author". Identifiers with path separators or control characters, and author-by-ISBN lookups, are rejected before any request. URLs can be embedded in markdown as ![cover](url).

input object output object
readOnlyHint true idempotentHint true
openlibrary_search_books
annotations: verified low

Full-text book search across Open Library works. Supports field filters (title, author, subject, publisher, ISBN, language) and returns work-level records with edition counts, cover IDs, and reading availability. Use query for general search or combine specific field filters. Results are work-level — drill into editions via openlibrary_get_editions.

input object author string offset number
readOnlyHint true openWorldHint true
openlibrary_search_inside
annotations: verified low

Search the full text of books scanned by the Internet Archive — the "which book contains this passage?" lookup that the metadata tools cannot answer. Quote a phrase for an exact-phrase match; bare terms match anywhere in the text. Each result is an Internet Archive item with the matching passages as snippets, plus a relevance score. The full-text index is far slower than the metadata endpoints, and a search usually takes 10–30 seconds. Use it when the passage is the question, and use openlibrary_search_books to search by title, author, or subject. Results key on Internet Archive items rather than Open Library works: chain the returned ia_identifier to archive.org, or match it against the ia_identifiers on openlibrary_search_books results to reach the catalogue record.

input object total number offset number output object
readOnlyHint true openWorldHint true
openlibrary_get_editions
annotations: verified low

List editions of a work — different publishers, languages, formats, and print runs. Returns ISBNs, publisher, language, page count, and edition OLIDs. Use after openlibrary_get_work or openlibrary_search_books to find a specific printing. A merged work ID resolves to the work it was merged into. To reach a work from an ISBN, call openlibrary_get_edition with id_type "isbn" — its work_id output is the parent work.

input object total number offset number output object isbn_10 array publishers array
readOnlyHint true openWorldHint true idempotentHint true
openlibrary_search_authors
annotations: verified low

Search Open Library authors by name. Returns Open Library Author IDs, names, birth/death dates, top works, and subject associations. Use author IDs for openlibrary_get_author (bio, remote IDs) or openlibrary_get_author_works (list of works).

input object limit number query string total number offset number output object author_id string work_count number alternate_names array
readOnlyHint true openWorldHint true
openlibrary_get_subject
annotations: verified low

Browse works by subject. Returns matching works with edition counts and cover IDs, plus the total work count for the subject. Case and spacing are normalized before lookup, so "Science Fiction" and "science_fiction" are the same request. Subject tags are user-contributed and the vocabulary varies — when a subject returns no works, try a different word form (singular/plural), a synonym, or a broader term.

input object offset number output object work_id string work_count number subject_key string author_names array subject_name string edition_count number
readOnlyHint true openWorldHint true
openlibrary_get_edition
annotations: verified low

Resolve one or more editions by identifier: ISBN-10, ISBN-13, OCLC, LCCN, or Open Library Edition ID (OL…M). Every identifier in a call shares one id_type — pass id_type "isbn" for both ISBN-10 and ISBN-13. Up to ${MAX_IDENTIFIERS} identifiers resolve in a single upstream request, so a bibliography or shelf export costs one call rather than one per book; a large batch is a large response, so ask for what you need. Returns full edition metadata including authors, publisher, language, all identifier types, and the parent work ID, with author names inline and no secondary lookup; when the edition record itself lists no authors, they are recovered from the parent work and marked as such, and a notice names any edition whose recovery failed. Partial success is the norm — identifiers that resolve come back in editions, the rest are listed in unresolved with a reason, and the call fails only when nothing resolved.

input object output object edition_id string
readOnlyHint true openWorldHint true idempotentHint true
openlibrary_get_author
annotations: verified low

Fetch author detail by Open Library Author ID (OL…A). Returns bio, birth/death dates, photo IDs, and linked identifiers from Wikidata, VIAF, ISNI, Goodreads, and LibraryThing. Use openlibrary_search_authors to find an author ID first.

bio string isni string viaf string input object output object wikidata string author_id string goodreads string birth_date string death_date string librarything string
readOnlyHint true openWorldHint true idempotentHint true

Permissions 2

shell high
Server uses shell capabilities via: child_process, spawn(), spawnSync()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 31

info
Tool 'openlibrary_get_work' annotations are consistent annotation_checker · 80%
info
Tool 'openlibrary_get_author_works' annotations are consistent annotation_checker · 80%
info
Tool 'openlibrary_get_cover_url' annotations are consistent annotation_checker · 80%
info
Tool 'openlibrary_search_books' annotations are consistent annotation_checker · 80%
info
Tool 'openlibrary_search_inside' annotations are consistent annotation_checker · 80%
info
Tool 'openlibrary_get_editions' annotations are consistent annotation_checker · 80%
info
Tool 'openlibrary_search_authors' annotations are consistent annotation_checker · 80%
info
Tool 'openlibrary_get_subject' annotations are consistent annotation_checker · 80%
info
Tool 'openlibrary_get_edition' annotations are consistent annotation_checker · 80%
info
Tool 'openlibrary_get_author' annotations are consistent annotation_checker · 80%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
low
Cross-tool reference in 'openlibrary_get_subject': Integration: 'works with edition' cross_tool_detector · 30%
info
package.json metadata manifest_parser · 100%
info
Tool: openlibrary_get_work manifest_parser · 75%
info
Tool: openlibrary_get_author_works manifest_parser · 75%
info
Tool: openlibrary_get_cover_url manifest_parser · 75%
info
Tool: openlibrary_search_books manifest_parser · 75%
info
Tool: openlibrary_search_inside manifest_parser · 75%
info
Tool: openlibrary_get_editions manifest_parser · 75%
info
Tool: openlibrary_search_authors manifest_parser · 75%
info
Tool: openlibrary_get_subject manifest_parser · 75%
info
Tool: openlibrary_get_edition manifest_parser · 75%
info
Tool: openlibrary_get_author manifest_parser · 75%
info
Transport: streamable-http manifest_parser · 80%
info
Required env vars (6) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
high
Permission: shell access detected permission_analyzer · 95%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 11 components sbom_generator · 100%
high
Hardcoded Password found in cyanheads-openlibrary-mcp-server-715f6d6/framework-skills/api-utils/references/security.md secret_scanner · 65%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%