worldanvil-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WA_AUTH_TOKEN | No | Your personal API token from World Anvil. | |
| WA_API_BASE_URL | No | Base URL of a proxy that injects an application key. Alternative to WA_APPLICATION_KEY. | |
| WA_APPLICATION_KEY | No | Your application key from World Anvil. Required unless using a proxy. |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_identityA | Return the authenticated World Anvil user (id + username). Use to verify credentials are working. |
| list_worldsA | List all worlds owned by (or shared with) the authenticated user, with their ids. Usually the first call in a session — most other tools need a world_id from here. |
| get_worldA | Full details of one world: description, settings, counts and links. Use list_worlds first to find the world_id. |
| list_articlesA | List ALL articles in a world (auto-paginates; nothing is hidden). Every World Anvil entity — NPCs (person), locations, organizations, session reports, plots, myths — is an article with a template type, shown as [type] on each line. Optionally filter by category or template type. For keyword lookups prefer search_articles. |
| search_articlesA | Find articles in a world by keyword. Case-insensitive match against title, slug and tags. Multiple words must all match. Fast (metadata only) — to search inside article body text use search_content instead. Use get_article on a result id to read content. |
| get_articleA | Read one article in full: content (BBCode), sidebar, tags, category, relations, and template-specific fields (a person's dob/ethnicity/organizations, etc.). Content uses World Anvil BBCode; links to other articles appear as @Title mentions — those uuids can be fetched with get_article too, which makes this the way to walk the world's knowledge graph for context. |
| create_articleA | Create a new article in a world. Content is World Anvil BBCode ([h1]..[/h1], [b], [url], @Title mentions). New articles default to private+draft so you can review before publishing (pass state='public' and is_draft=false to publish immediately). |
| update_articleA | Update an existing article. Only the fields you provide are changed. NOTE: content is REPLACED wholesale — to edit, get_article first, modify, send back the full body. |
| delete_articleA | PERMANENTLY delete an article. This is irreversible — World Anvil has no trash bin for articles. Confirm with the user before deleting anything they didn't explicitly name. |
| list_categoriesA | List all categories (folders) of a world. Articles reference these by id in their category= field; use the ids to filter list_articles or to file new articles. |
| create_categoryA | Create a category (folder) in a world, optionally nested under a parent category. |
| update_categoryA | Rename a category or move it under a different parent. Only provided fields change. |
| delete_categoryA | PERMANENTLY delete a category (irreversible). Articles inside are NOT deleted — they become uncategorized. Confirm with the user first. |
| search_contentA | Full-text search INSIDE the world's text: article bodies (content, sidebars, footnotes …), GM-only secrets, and notebook notes, returning matches with context snippets. All words must appear in the same entity (case-insensitive). Backed by a local cache that self-refreshes on every call, so results are always current; the very first call on a world builds the cache and can take a minute. For title/tag lookups search_articles is faster. |
| find_referencesA | Find every article, secret or note that LINKS TO a given article. World Anvil stores links as @Title mentions, so this searches cached text for the target's uuid — exact backlinks, no false positives from name coincidences. Use it for questions like 'where is this NPC mentioned?' or before deleting an article. Self-refreshing cache; first call on a world builds it (can take a minute). |
| list_assetsA | List a world's non-article resources: secrets (GM-only notes), maps, timelines, histories (timeline events), notebooks, or subscribergroups (player visibility groups). Auto-paginates; returns one line per asset with its id. Use get_asset to read one in full. For articles use list_articles instead. |
| get_assetA | Read a single asset in full. kind=map returns the ASSEMBLED hierarchy (map + layers + marker groups + all markers with their article links — several API calls, worth it: markers are where geography meets lore). kind=notebook returns notebook + sections + notes. secret/timeline/history/subscribergroup return the entity itself. For articles use get_article. |
| export_worldA | Clone a COMPLETE world to a local directory as raw full-granularity JSON — articles, categories, secrets, map hierarchies (layers/groups/markers), timelines, histories, notebooks+notes, subscriber groups, world meta — plus downloaded image binaries and an entities.json id→{title,slug,file} index for rewriting @mention links during migration. Makes hundreds of API calls; takes minutes on a large world. Returns a summary; data goes to disk, NOT into context — read specific exported files afterwards if needed. Refuses to write into a non-empty directory that isn't a previous export. Requires an absolute output path. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/daireb/worldanvil-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server