LegendKeeper MCP server
io.github.chase-roohms/legendkeeper-mcp·v0.1.2·3 starsRead and build LegendKeeper worlds from AI assistants: wiki pages, maps, timelines, facts and tags.
3 stars65 downloads/wk
Reviews
Write oneNobody has reviewed LegendKeeper yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
LegendKeeper tools (31, 17 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
api_requestCall any LegendKeeper REST v3 endpoint of this project directly (advanced: boards, calendars, block-level edits, properties, invites, restores…). Returns the raw JSON response. Writes are disabled in read-only mode.
browse_treeShow the resource tree (the world's wiki hierarchy) as an indented outline with ids, icons, tags and child counts. Start here to see how a world is organized.
create_documentwrite actionAdd a document (tab) to a resource: a page, a map, a timeline or a board. A resource holds at most 5.
create_from_templatewrite actionCreate a resource from a template (copies its documents, properties, icon and tags).
create_map_featurewrite actionAdd a pin, label, region, path or folder to a map document. Coordinates are [lat, lng] in the map's frame (read_document on the map shows its bounds), or image pixels with pixel_coordinates=true.
create_resourcewrite actionCreate a resource (wiki article, location, character…), optionally with page content in Markdown. Reuse existing tags (list_tags) and give it an icon. Returns the new id and its documents.
create_resourceswrite actionCreate up to 100 resources in one atomic request: ideal for scaffolding a region, a cast of NPCs or a whole hierarchy. Give items a `key` and nest later items under them with `parent_key`.
create_timeline_eventwrite actionAdd an event to a timeline document. Link it to the page that tells the full story.
create_timeline_lanewrite actionAdd a lane (row) to a timeline, placed after the existing lanes.
delete_documentwrite actionDelete one document (tab) of a resource. It can be restored with api_request (POST /resources/{id}/docs/{docId}/restore).
delete_map_featurewrite actionDelete a feature (pin, label, region, path or folder) from a map.
delete_resourcewrite actionMove a resource (with its documents, and children if cascade=true) to the trash. Restore it with restore_resource using the id returned here.
delete_timeline_eventwrite actionDelete an event from a timeline.
get_resourceGet one resource's details: path, tags, aliases, icon, banner, documents, sidebar properties (facts) and children. Use read_document to read a document's content.
list_assetsList the world's asset library (uploaded images, maps, folders) with ids and URLs. Image URLs can be used in page images, banners, map images and events.
list_calendarsList the calendars timelines can use (built-in ones like gregorian, harptos, exandria, plus custom calendars): id, name, months and eras.
list_membersList the members of the world and their roles (emails are only visible to ADMIN keys).
list_projectsList the LegendKeeper projects (worlds) this server is configured for, with the default project and whether writes are enabled. Each API key belongs to exactly one project.
list_tagsList every tag used in the world with how many resources carry it. Check this before tagging so you reuse existing tags with the exact same spelling.
list_templatesList resource templates (id, name, parent). Use create_from_template to instantiate one.
move_resourceMove a resource (and its children) to another parent and/or position among its siblings.
read_documentRead a document of a resource. Pages come back as Markdown (with mentions as [Name](lk://resources/id) links); maps list their pins/regions/paths with coordinates; timelines list lanes and events; boards list their text. Without `document`, the first page is used, else the first map, timeline or board.
restore_resourceRestore a deleted resource from the trash (its parent must not be deleted).
searchFull-text search across resource names, aliases and document content (best match first). Returns ids, paths, tags and the matching passage.
set_factsSet at-a-glance facts (e.g. Race, Age, Ruler, Population) as key-value rows in the page's infobox or the resource's sidebar. Creates the infobox / property group when it does not exist yet.
update_documentwrite actionRename a document, hide/show it, toggle full width, set a timeline's calendar or a map's image.
update_map_featurewrite actionChange a map feature: rename, move, reshape, relink, restyle or hide it.
update_resourcewrite actionChange a resource's name, tags, aliases, icon, visibility, lock or banner. Content is edited with write_page; facts with set_facts; position in the tree with move_resource.
update_timeline_eventwrite actionChange a timeline event's name, dates, lane, link or style.
upload_imagewrite actionUpload an image to the world's asset library and return its asset id and URL. Use the URL in a page image (), a resource banner (update_resource banner_url) or as a map image (create_document / update_document map_image_asset_id).
write_pagewrite actionWrite Markdown to a page document. [[Name]] and [text](lk://resources/<id>) become mentions; callouts, secrets, tables, task lists and images are supported. Writes are atomic; pass expected_version (from read_document) so edits made in the app after you read the page are never overwritten.
Public scan report
scanner v0.1.10 · 2026-10-29 · same rubric, same numbers if you re-run it
- Code scan28 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitystatic API keys via environment variables6/15
- Maintenancelast push 5 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How LegendKeeper compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 83/100
- higher than 65% of 48,273 servers
- Tools
- 31
- the typical server has 7
- Tools that change things
- 55%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 3
- more than 80% of 28,534 servers
- Downloads a week
- 65
- more than 53% of 11,915 servers with a package
What its tools let an agent do: 12 read · 9 create · 6 change · 4 delete
Install LegendKeeper in Claude Code, Cursor or VS Code
claude mcp add legendkeeper-mcp -- uvx legendkeeper-mcp
What the publisher says
From the LegendKeeper repository's README, as published. We do not edit it. Read it on GitHub
legendkeeper-mcp
<!-- mcp-name: io.github.chase-roohms/legendkeeper-mcp -->
An MCP server that lets AI assistants (Claude, Copilot, Cursor, …) read and build your LegendKeeper worlds: wiki pages, infobox facts, map pins, timelines, tags, templates and images, through LegendKeeper's official v3 REST API.
Unofficial. This project is not made, endorsed or supported by LegendKeeper. It runs locally on your machine
with your own API key.
You: Create a tavern called The Drunken Dragon in Waterdeep, give it an infobox with its owner and
a pin on the city map, and mention it on Volo's page.
Claude: (search → create_resource → set_facts → create_map_feature → write_page) Done! ...Contents
- Features
- Requirements
- Quick start
- Client setup
- Configuration
- Tools
- How pages are edited (Markdown)
- Safety
- Troubleshooting
- Development
- Releasing
Features
them. An api_request escape hatch reaches every other v3 endpoint.
- 31 curated tools designed for LLMs. Resources accept names as well as ids, and errors explain how to fix
secrets, collapsible sections, task lists, tables and images are supported. Blocks Markdown can't express (infoboxes, embeds, collections…) are preserved verbatim on rewrite. See How pages are edited.
- Pages as Markdown, both ways. [[Wiki Links]] become real LegendKeeper mentions. Callouts, GM-only
of the page. Every write is version-checked (If-Match), so concurrent edits in the app are never silently overwritten.
- Section-level editing: append, prepend, replace or extend one heading's section without touching the rest
timeline events and lanes (human dates such as "3 March 1204"), templates, batch creation of up to 100 linked resources, and image uploads from disk or URL.
- Structured worldbuilding: infobox and sidebar facts, map pins/regions/paths (lat/lng or image pixels),
behind a bearer token.
- Multiple worlds from one server (one API key per world), plus a read-only mode.
- Two transports: stdio for desktop clients, or a long-running Docker container serving streamable HTTP
double-create, and rate-limit tracking.
- Robust client: retries with backoff, honors Retry-After, idempotency keys on every POST so retries never
LegendKeeper's published OpenAPI spec. A weekly CI job re-checks against the latest spec.
- Contract-tested: the test suite runs against a fake API that validates every request and response against
Requirements
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
LegendKeeper: common questions
- Is LegendKeeper MCP server safe?
- Mostly: it is graded B (83/100). Read the LegendKeeper safety report
- How do I install LegendKeeper?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does LegendKeeper need an API key?
- Yes. The registry entry asks for
LEGENDKEEPER_API_KEY. - Is LegendKeeper maintained?
- The last commit was 9 days ago (2026-10-24). The latest release is v0.1.2.
- How does LegendKeeper compare with other MCP servers?
- safety score 83/100 (higher than 65% of 48,273 servers); tools 31 (the typical server has 7); tools that change things 55% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.