PoetryDB MCP Server
Classic poetry search and discovery via PoetryDB.
Open source Open in the app JSON README (API)
About
Classic poetry search and discovery via PoetryDB.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- lacausecrypto
- Origin
- official
- Category
- ferramentas
- Transport
- local
- Version
- 1.0.1
- Stars
- 2
- Last push
- 2026-04-12T16:05:00Z
- Repository state
- ativo
- Language
- TypeScript
- License
- MIT
- Added
- 2026-08-29 04:00:22
- Updated
- 2026-08-29 04:00:22
- Origin id
io.github.lacausecrypto/poetrydb
README
# PoetryDB MCP Server
[](https://www.npmjs.com/package/mcp-poetry)
[](https://github.com/lacausecrypto/mcp-poetrydb/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/mcp-poetry)
[](https://nodejs.org/)
[](./LICENSE)
Unofficial MCP server for exploring classic poetry through [PoetryDB](https://poetrydb.org).
## At a glance
| 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 |
## Install
```bash
npm install -g mcp-poetry
```
Or from source:
```bash
npm install
npm run build
```
## MCP Registry
This server is published to the MCP Registry under:
```text
io.github.lacausecrypto/poetrydb
```
## Claude Desktop
```json
{
"mcpServers": {
"poetrydb": {
"command": "npx",
"args": ["-y", "mcp-poetry"]
}
}
}
```
For a local checkout, replace the command with:
```json
{
"mcpServers": {
"poetrydb": {
"command": "node",
"args": ["/absolute/path/to/mcp-poetrydb/dist/index.js"]
}
}
}
```
## Tools
### Catalog
- `catalog_overview`: list categories and available tools
- `catalog_category`: show tools for a specific category
### Search
- `search_by_author`: find poems by author name
- `search_by_title`: find a poem by title
- `search_by_lines`: search text inside poem lines
- `search_by_linecount`: find poems by exact line count
- `search_combined`: query multiple PoetryDB fields in one request
- `list_authors`: list all available authors
### Discovery
- `random_poem`: fetch one or more random poems
- `get_sonnets`: fetch 14-line poems
- `get_haikus`: fetch 3-line poems
- `list_titles`: list poem titles
## Example requests
### Simple
```text
Random poem please.
```
Expected tool:
```text
random_poem({ "count": 1 })
```
### Browse
```text
Show me the available poets.
```
Expected tool:
```text
list_authors({})
```
### Targeted search
```text
Find Ozymandias.
```
Expected tool:
```text
search_by_title({ "title": "Ozymandias" })
```
### Text search
```text
Show me poems containing the word "love".
```
Expected tool:
```text
search_by_lines({ "text": "love" })
```
### Form-based discovery
```text
Give me 14-line poems by Shakespeare.
```
Expected tool:
```text
search_combined({ "fields": "author,linecount", "values": "Shakespeare;14" })
```
### More advanced
```text
List Shakespeare results, but only return title and linecount.
```
Expected tool:
```text
search_by_author({ "author": "Shakespeare", "fields": "title,linecount" })
```
### Multi-step exploration
```text
Start with the catalog, then show me the discovery tools, then give me a sonnet.
```
Typical tool sequence:
```text
catalog_overview({})
catalog_category({ "category_id": "discovery" })
get_sonnets({})
```
## Development
```bash
npm run build
npm run test:ci
npm test
npm pack --dry-run
```
Environment variables:
- `POETRYDB_BASE_URL`
- `POETRYDB_REQUEST_TIMEOUT_MS`
- `POETRYDB_REQUEST_RETRIES`
## Notes
- No API key is required.
- This package is not affiliated with PoetryDB.
- Built for MCP clients that prefer a compact stdio server over a custom PoetryDB integration.
- MCP Registry identity: `io.github.lacausecrypto/poetrydb`
## Attribution
- PoetryDB: [poetrydb.org](https://poetrydb.org)
- Upstream project: [thundercomb/poetrydb](https://github.com/thundercomb/poetrydb)
Additional implementation notes are in [documentation.md](./documentation.md).