@tdcompanion/mcp-server
v1.4.0
Published
MCP server for the True Dungeon Companion API — exposes token, bonus, and rulebook data as tools for Claude and other MCP clients.
Maintainers
Readme
TDC MCP Server
An MCP server that exposes True Dungeon Companion game data — tokens, set/group bonuses, and rulebook pages — as tools for Claude and other MCP clients.
Tools
| Tool | Description |
|------|-------------|
| search_tokens | Search tokens by name, slot, rarity, or class |
| advanced_search_tokens | Build arbitrary AND/OR filter trees across 29 fields (abilities, stats, damage, etc.) |
| get_token | Get full detail for a single token (effects, slots, damage wheel, etc.) |
| list_set_bonuses | List all set bonuses with tier effects |
| get_set_bonus | Get a single set bonus by id |
| list_group_bonuses | List all group bonuses with tier effects |
| get_group_bonus | Get a single group bonus by id |
| list_rulebook_pages | List all rulebook pages (title + path) |
| get_rulebook_page | Get the full text content of a rulebook page |
| get_api_version | Get the running TDC API build version and start time |
Quick start (npx)
No install or build needed. Add to your .claude/settings.json:
{
"mcpServers": {
"tdc": {
"command": "npx",
"args": ["@tdcompanion/mcp-server"],
"env": {
"TDC_API_KEY": "tdc_live_<your-key>"
}
}
}
}Environment variables
| Variable | Default | Description |
|----------|---------|-------------|
| TDC_API_BASE_URL | https://api.tdcompanion.app | API base URL (must point at the API host, not the web app) |
| TDC_API_KEY | (none) | Optional bearer key for higher rate limits (600 req/min vs 60) |
The server works without an API key (anonymous access), but authenticated keys get 10x the rate limit. Generate one from your profile's Developer tab at https://tdcompanion.app/profile.
Development
cd src/MCP/@tdcompanion/mcp-server
npm install
npm run build # compile TypeScript → dist/
npm start # run locally via stdioPublishing
npm run build
npm publishThe prepublishOnly script runs the build automatically. The files field in package.json ensures only dist/ is included in the published package.
Changelog
1.1.0
- Added
get_set_bonus,get_group_bonus, andget_api_versiontools. - Stricter input validation: pagination is clamped (
skip >= 0,take1–200), andslot/rarity/classreject unknown values up front. advanced_search_tokensvalidates thefilterJSON is a FilterExpression object before sending.- All tools return a clean
{ isError: true }result on failure instead of throwing. - Rulebook HTML stripping now handles numeric entities (
&#x…;,&#…;) and preserves list structure. - List-style tools truncate output over ~20k chars with a clear "…N more truncated" footer.
