Connects Claude to PoetryDB's public API for searching and browsing classic poetry without authentication. You get 12 tools across three categories: catalog browsing, targeted search by author, title, line text, or line count, and discovery helpers for random poems, sonnets, and haikus. The search_combined tool lets you query multiple fields at once, like finding all 14-line Shakespeare poems. Useful when you're building literary analysis workflows, need poetry datasets for testing, or want to add classic verse lookup to an assistant without maintaining your own corpus. Runs over stdio via npx, no API key needed. Built on top of thundercomb's poetrydb project.
Unofficial MCP server for exploring classic poetry through PoetryDB.
| Metric | Value |
|---|---|
| Tools | 12 |
| Categories | 3 |
| Transport | stdio |
| Auth | none |
| MCP Registry name | io.github.lacausecrypto/poetrydb |
| npm package | mcp-poetry |
| Source API | https://poetrydb.org |
| Content | classic poetry by author, title, line text, and form |
npm install -g mcp-poetry
Or from source:
npm install
npm run build
This server is published to the MCP Registry under:
io.github.lacausecrypto/poetrydb
{
"mcpServers": {
"poetrydb": {
"command": "npx",
"args": ["-y", "mcp-poetry"]
}
}
}
For a local checkout, replace the command with:
{
"mcpServers": {
"poetrydb": {
"command": "node",
"args": ["/absolute/path/to/mcp-poetrydb/dist/index.js"]
}
}
}
catalog_overview: list categories and available toolscatalog_category: show tools for a specific categorysearch_by_author: find poems by author namesearch_by_title: find a poem by titlesearch_by_lines: search text inside poem linessearch_by_linecount: find poems by exact line countsearch_combined: query multiple PoetryDB fields in one requestlist_authors: list all available authorsrandom_poem: fetch one or more random poemsget_sonnets: fetch 14-line poemsget_haikus: fetch 3-line poemslist_titles: list poem titlesRandom poem please.
Expected tool:
random_poem({ "count": 1 })
Show me the available poets.
Expected tool:
list_authors({})
Find Ozymandias.
Expected tool:
search_by_title({ "title": "Ozymandias" })
Show me poems containing the word "love".
Expected tool:
search_by_lines({ "text": "love" })
Give me 14-line poems by Shakespeare.
Expected tool:
search_combined({ "fields": "author,linecount", "values": "Shakespeare;14" })
List Shakespeare results, but only return title and linecount.
Expected tool:
search_by_author({ "author": "Shakespeare", "fields": "title,linecount" })
Start with the catalog, then show me the discovery tools, then give me a sonnet.
Typical tool sequence:
catalog_overview({})
catalog_category({ "category_id": "discovery" })
get_sonnets({})
npm run build
npm run test:ci
npm test
npm pack --dry-run
Environment variables:
POETRYDB_BASE_URLPOETRYDB_REQUEST_TIMEOUT_MSPOETRYDB_REQUEST_RETRIESio.github.lacausecrypto/poetrydbAdditional implementation notes are in documentation.md.
POETRYDB_BASE_URLdefault: https://poetrydb.orgOverride the PoetryDB API base URL.
POETRYDB_REQUEST_TIMEOUT_MSdefault: 20000Per-request timeout in milliseconds.
POETRYDB_REQUEST_RETRIESdefault: 2Retry count for retryable PoetryDB failures.
com.mcparmory/google-search
io.github.pipeworx-io/brave-search
marcopesani/mcp-server-serper
brave/brave-search-mcp-server
com.mcparmory/google-search-console
acamolese/google-search-console-mcp