Labsco
MCP SERVER

Perseus Digital Library

by tonyjurg

Read and search Greek and Latin classics straight from Perseus — passages by CTS URN, readable plaintext, and Scaife search.

Encyclopedic & Cultural ReferenceVerified
Summary
The URN you guess is often not the URN Perseus has.

Edition identifiers differ between Perseus CTS and Scaife search results, and the live inventory changes, so the discovery tools are not decoration — resolve the author and work first, then build the passage URN from what came back. Heavy request loops draw a 429 from Perseus, which the server surfaces rather than silently retrying.

What it is

A local server over the Perseus Digital Library and the Scaife API. It fetches passages by CTS URN as raw CTS XML or plain readable text, walks a work's citation references, and searches Greek and Latin texts in Unicode or Beta Code.

What you get
  • Passages — get_passage, get_passage_plus for surrounding metadata, get_passage_plaintext for readable text
  • Navigation — get_valid_references, get_valid_references_json, count_valid_references, get_first_urn, get_prev_next_urn, get_label
  • Discovery — get_capabilities, list_text_groups, find_author_names, get_author_resources, get_work_resources
  • Search — search_perseus across the corpus, search_within_text inside one edition, get_passage_highlights for token positions in a passage
  • Scaife JSON — get_scaife_library_metadata, get_scaife_passage_json, get_scaife_passage_text
  • Cache control — get_cache_status, refresh_metadata_cache, clear_metadata_cache
  • Greek queries accept Unicode or Beta Code, and search by inflected form or by dictionary lemma
Requirements

Python. Install perseus-mcp from PyPI (or pip install -e . from the repo) and run the perseus-mcp command over stdio. No account, no key. Discovery and navigation results cache to disk under .cache/perseus-mcp in the working directory — PERSEUS_MCP_CACHE_DIR points that at an absolute path so notebooks and MCP clients share one cache, PERSEUS_MCP_CACHE_TTL_SECONDS changes the default of 86400 seconds, and PERSEUS_MCP_DISABLE_CACHE=1 turns it off.

Setup effort

One command — pip install perseus-mcp