Technical reference for Mimir’s Model Context Protocol (MCP) server — the sidecar that enables AI assistant integration.
The MCP server (mimir-mcp) runs as a Tauri sidecar process. It connects to the same SQLite database as the main app and exposes 54 tools across 8 categories.
- Binary:
mimir-mcp (built to crates/mimir/binaries/mimir-mcp-{target-triple})
- Protocol: MCP over stdio
- Database: Shared SQLite database (same file the desktop app uses; default location varies by platform — see below)
- Plugin: Claude Code plugin at
crates/mimir-mcp/plugin/
The database path is resolved from the MIMIR_DATABASE_PATH environment variable, falling back to a platform default:
| Platform |
Default database path |
| macOS |
~/Library/Application Support/com.mimir.app/data/mimir.db |
| Linux |
$XDG_DATA_HOME/com.mimir.app/data/mimir.db (falls back to ~/.local/share/com.mimir.app/data/mimir.db when XDG_DATA_HOME is unset) |
| Windows |
No default — MIMIR_DATABASE_PATH must be set |
See Environment Variables for details.
Most tools operate on an active campaign. Until a campaign is selected with set_active_campaign, campaign-scoped tools return a NoActiveCampaign error (No active campaign. Use set_active_campaign first.). The active campaign is held in memory per server process — it is not persisted, so each new server process starts with no campaign selected.
| Tool |
Description |
list_campaigns |
List all available campaigns |
set_active_campaign |
Set the active campaign (required by most tools) |
get_campaign_details |
Get campaign info including modules and characters |
get_campaign_sources |
Get enabled source books for a campaign |
create_campaign |
Create a new campaign |
update_campaign |
Update campaign name or description |
delete_campaign |
Delete a campaign and all its data |
export_campaign |
Export campaign as shareable archive |
import_campaign |
Import campaign from archive |
preview_archive |
Preview archive contents without importing |
| Tool |
Description |
create_module |
Create new module in active campaign |
list_modules |
List all modules in active campaign |
get_module_details |
Get module info including documents, monsters, items |
update_module |
Update module name or description |
delete_module |
Delete module and all contents |
add_monster_to_module |
Add monster from catalog or homebrew to module |
remove_monster_from_module |
Remove monster from module |
add_item_to_module |
Add catalog item as loot to module |
| Tool |
Description |
list_documents |
List campaign-level or module-level documents |
read_document |
Read full content of a document |
create_document |
Create document (backstory, read_aloud, dm_notes, description, custom) |
edit_document |
Rename a document, edit its content with search and replace, or both |
delete_document |
Delete a document |
reorder_document |
Reorder documents by swapping sort positions |
| Tool |
Description |
list_characters |
List characters with optional filters (type, module, location, faction) |
get_character |
Get detailed character info including classes and inventory |
create_character |
Create NPC or PC (auto-populates proficiencies from catalog) |
edit_character |
Update ability scores, currency, race, background, traits |
delete_character |
Delete character and all associated data |
level_up_character |
Level up character (handles HP, multiclass, ASI/feats, spells) |
add_item_to_character |
Add catalog item to character inventory |
remove_item_from_character |
Remove item from character inventory |
update_character_inventory |
Update item quantity, equipped, or attuned state |
get_character_inventory |
Get inventory (filterable by equipped/attuned) |
add_character_spell |
Add spell to character’s known spells |
remove_character_spell |
Remove spell from character |
list_character_spells |
List character’s known spells (filterable by class/prepared) |
add_character_feat |
Record a catalog feat for a character outside level-up |
list_character_feats |
List character’s feats with source and how each was gained |
remove_character_feat |
Remove a feat from a character by name |
| Tool |
Description |
create_map |
Upload UVTT file to create new map |
list_maps |
List maps (optionally filtered by module) |
get_map |
Get map details including token placements |
update_map |
Update map metadata (name, description, lighting) |
delete_map |
Delete map and associated UVTT asset |
add_token_to_map |
Add monster or NPC token to map |
list_tokens_on_map |
List all tokens (optionally visible only) |
remove_token |
Remove token placement from map |
| Tool |
Description |
generate_map |
Generate Dungeondraft map from YAML config or biome preset |
list_map_presets |
List available biome presets |
validate_map_config |
Validate YAML config without generating |
A single search_catalog tool searches all catalog categories.
| Tool |
Description |
search_catalog |
Search the D&D 5e catalog by category |
Parameters:
| Parameter |
Type |
Description |
category |
string (required) |
One of: monster, item, spell, race, class, background, feat, condition |
name |
string |
Search by name (partial match) |
limit |
integer |
Maximum results (default: 20) |
cr_min / cr_max |
number |
Challenge rating range (monsters only) |
monster_type |
string |
Creature type, e.g. undead, dragon (monsters only) |
include_homebrew |
boolean |
Include homebrew monsters from the active campaign (monsters only, default: true) |
rarity |
string |
common, uncommon, rare, very rare, legendary, artifact (items only) |
item_type |
string |
e.g. weapon, armor, wondrous item (items only) |
level |
integer |
Spell level, 0 for cantrips (spells only) |
school |
string |
School of magic, e.g. evocation (spells only) |
class_name |
string |
Filter by class spell list (spells only) |
Results are filtered to the active campaign’s enabled sources when a campaign is set.
Homebrew items, monsters, and spells share a unified tool set. Every call takes a
content_type parameter: item, monster, or spell.
| Tool |
Description |
list_homebrew |
List homebrew content of one type in the active campaign |
get_homebrew |
Get a homebrew entry by ID |
create_homebrew |
Create new homebrew, or clone from the catalog with cloned_from_name + cloned_from_source |
update_homebrew |
Update a homebrew entry |
delete_homebrew |
Delete a homebrew entry by ID |
create_homebrew parameters:
| Parameter |
Type |
Description |
content_type |
string (required) |
item, monster, or spell |
name |
string (required) |
Name of the homebrew content |
data |
string |
JSON string with content data. Required when not cloning; when cloning, fields here override the catalog data |
item_type |
string |
Items only: weapon, armor, potion, ring, rod, scroll, staff, wand, wondrous item, adventuring gear |
rarity |
string |
Items only: common, uncommon, rare, very rare, legendary, artifact |
cr |
string |
Monsters only, e.g. 1/4, 1, 5, 20 |
creature_type |
string |
Monsters only, e.g. humanoid, dragon, undead |
size |
string |
Monsters only: T, S, M, L, H, G |
level |
integer |
Spells only: 0 for cantrip, 1–9 |
school |
string |
Spells only, e.g. evocation, necromancy |
cloned_from_name |
string |
Catalog entry to clone from; must be used with cloned_from_source |
cloned_from_source |
string |
Source book of the cloned entry (e.g. PHB, DMG, MM) |
For installation and setup, see the AI Assistant How-To.
| Command |
Description |
/mimir-campaigns |
List all available campaigns |
/create-module |
Create a new module in the active campaign |
/search-monsters |
Search the D&D monster catalog |
/search-spells |
Search the D&D spell catalog |
/generate-map |
Generate a procedural Dungeondraft map |
| Skill |
Description |
/mimir-dm |
General campaign management |
/encounter-balance |
Analyze encounter difficulty |
/loot-audit |
Audit treasure distribution |
/session-prep |
Pre-session readiness review |
/continuity-check |
Find contradictions across documents |
/npc-network |
Map NPC relationships |
/pressure-test |
Stress-test scenarios |
/mapgen |
Creative direction for map generation |