Read-only MCP server for shakespeare-monologues.org - search and fetch Shakespeare monologue metadata over the Model Context Protocol
Shakespeare's Monologues — MCP server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
A small, read-only Model Context Protocol server
that lets MCP-capable AI clients search and fetch Shakespeare monologue metadata from
shakespeare-monologues.org.
It's a **thin, stateless wrapper** over the site's public JSON index
(/api/monologues.json) — no database, no secrets. Every result carries the
monologue's permalink url (where the full text, scene context, and modern-English
paraphrase live) and an attribution note.
Tools
| Tool | What it does |
| --- | --- |
| search_monologues | Free-text search (character / play / first line) + filters: gender, play, style, act, limit. |
| get_monologue | One monologue's index entry by numeric id. |
| random_monologue | A random monologue, optional gender / play filters. |
| list_plays | Every play with its classification and monologue count. |
| list_all_monologues_for_a_character | Every monologue spoken by a named character. |
| get_monologue_of_the_day | The current Monologue of the Day (latest social post). |
| get_paraphrased_monologue | A monologue's full text + its modern-English paraphrase (AI-generated; may be null if not yet generated). |
| get_scene_summary | AI-generated summary of the scene a monologue is in (by monologue id). |
| get_play_summary | AI-generated summary of a play (by title). |
| send_feedback | Lets an agent report a missing capability, a problem, or praise. Added by the PostHog analytics SDK; only present when analytics is on. |
> The paraphrase and summaries are AI-generated (Claude) and only partially cached so far,
> so those tools return null where content hasn't been generated yet.
Run locally
Two transports, same tools. server.ts builds the tool surface and knows
nothing about how it's reached; index.ts serves it over HTTP and stdio.ts
over stdio.
**Over stdio**, the way an MCP client spawns a local server:
**Over HTTP**, which is how the hosted instance runs:
Health check: GET /health → {"ok":true}.
Neither mode needs credentials — the server reads the site's public JSON index.
Set MONOLOGUES_API_URL to point it elsewhere, and POSTHOG_PROJECT_API_KEY=""
to disable analytics.
Connecting a client
Remote MCP means users add a **URL**, no install. In a client that supports remote /
custom MCP servers (Claude Desktop connectors, etc.), add:
Or run it yourself over stdio, with no hosted dependency:
For clients configured with a JSON config file, use the streamable-HTTP transport: