Foundry VTT BridgeCAUTION
An MCP (Model Context Protocol) server that bridges Foundry VTT data with Claude Desktop, enabling users to chat with their game world data using their own Claude subscription.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Connect Foundry VTT to Claude Desktop for AI-powered campaign management through the Model Context Protocol (MCP). It currently supports Dungeons and Dragons Fifth Edition, Pathfinder Second Edition, Das Schwarze Augen Fifth Edition, Cosmere RPG System, Warhammer Fantasy Roleplay 4th Edition, & Mongoose Traveller 2nd Edition. The majority of MCP tools are system agnostic or have features that are aware of the system it is working with, excluding some DSA 5 specific tools.
Overview
The Foundry MCP Bridge enables natural AI conversations with your Foundry VTT game data:
- Quest Creation: Create quests from prompts that incorporate what exists in your world and journals
- Character Management: Query character stats, abilities, and information
- Compendium Search: Find items, spells, and creatures using natural language
- Content Creation: Generate actors, NPCs, and quest journals from simple prompts
- Scene Information: Access current scene data and world details
- Dice Coordination: Interactive roll requests with player targeting
- Campaign Management: Multi-part quest and campaign tracking
- Map Generation: Create maps from prompts and automatically upload them into scenes in Foundry VTT using the optional ComfyUI component
Installation
Prerequisites
- Foundry VTT v13 or v14
- Claude Desktop with MCP support
- Windows (for automated installer) or Node.js 18+ for manual installation
Option 1: Windows Installer
Video guide for Windows Installer
- Download the latest
FoundryMCPServer-Setup-vx.x.x.exefrom Releases - Run the installer - it will:
- Install the MCP server with bundled Node.js runtime
- Configure the Claude Desktop MCP server settings
- Optionally install the Foundry module and ComfyUI Map Generation to your VTT i
09c9c8d1f759OBSERVED · 2026-10-07Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add shared --env FOUNDRY_REJECT_UNAUTHORIZED=${FOUNDRY_REJECT_UNAUTHORIZED} -- npx -y @foundry-mcp/[email protected]{
"mcpServers": {
"shared": {
"command": "npx",
"args": [
"-y",
"@foundry-mcp/[email protected]"
],
"env": {
"FOUNDRY_REJECT_UNAUTHORIZED": "${FOUNDRY_REJECT_UNAUTHORIZED}"
}
}
}
}Exposed tools (45)
23 read · 16 write · 6 destructive. Blast radius: 6 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
assign-actor-ownership | read | Assign ownership permissions for actors to players. Supports individual assignments like |
cancel-map-job | read | Cancel a running map generation job |
check-mac-setup-status | read | Check if ComfyUI and AI models are installed on Mac (Apple Silicon only). Returns installation status and whether system can run AI map generation. |
check-map-status | read | Check status of map generation job. Progress updates appear automatically in Foundry VTT. DO NOT check frequently - this wastes tokens. Only check if user explicitly asks for status. |
control-playlist | write | Playback control for playlists and their sounds: play (playAll), stop (stopAll), cycle-mode (sequential -> shuffle -> soundboard), play-sound, stop-sound. Playlist and sound accept ids or unique names. |
create-actor-from-compendium | write | Create one or more actors from a specific compendium entry with custom names. Use search-compendium first to find the exact creature you want, then use this tool with the packId and itemId from the search results. |
create-campaign-dashboard | write | Create a comprehensive campaign dashboard journal with navigation, progress tracking, and part management |
create-dsa5-character-from-archetype | write | Create a DSA5 character from an archetype (e.g., Allacaya, Wulfgrimm). Allows customization of name, age, biography, and other details. Use search-compendium first to find available archetypes in DSA5 character packs. |
create-quest-journal | write | Create a new quest journal entry with AI-generated content based on natural language description |
delete-tokens | destructive | Delete one or more tokens from the current scene |
dnd5e-add-feature | write | [D&D 5e only] Add a feature, attack, spellcasting setup, or spells to an existing actor. |
dnd5e-add-features-from-compendium | write | [D&D 5e only] Import class features and monster features from an official compendium |
dnd5e-create-npc | write | [D&D 5e only] Create a new NPC actor from scratch with a full Level-2 stat block: |
generate-map | write | Start AI map generation using D&D Battlemaps SDXL (async) |
get-available-conditions | read | Get a list of all available status effects/conditions that can be applied to tokens in the current game system |
get-compendium-entry-full | read | Retrieve complete stat block data including items, spells, and abilities for actor creation |
get-compendium-item | read | Retrieve detailed information about a specific compendium item. Use compact mode for UI performance when full details are not needed. |
get-current-scene | read | Get information about the currently active scene, including tokens, layout, and the music binding (playlist + playlistSound) |
get-mac-setup-progress | write | Get current progress of Mac setup (if running). Shows download progress, installation stage, and any errors. |
get-token-details | read | Get detailed information about a specific token including all properties and linked actor data |
get-world-info | read | Get basic information about the Foundry world and system |
link-quest-to-npc | read | Link an existing quest journal to an NPC in the world |
list-actor-ownership | read | List current ownership permissions for actors, showing which players have what access levels. |
list-characters | read | List all available characters with basic information |
list-compendium-packs | read | List all available compendium packs |
list-dsa5-archetypes | read | List available DSA5 character archetypes from compendium packs. Helps users discover available templates for character creation. |
list-journals | read | List all journal entries, or read a specific journal/page. Without parameters: lists all journals with their pages (id, name, type). With journalId: reads the journal |
list-scenes | read | List all available Foundry VTT scenes with their details, including the music binding (playlist + playlistSound) for each scene |
manage-actors | destructive | Create, update, or delete Actor documents in Foundry VTT. Works with any game system.\n |
manage-effects | destructive | Create, update, or delete an ActiveEffect on an Actor or on an embedded Item owned by that Actor. Effect payloads are generic Foundry ActiveEffect document data. Use parentType |
manage-world-items | read | Manage Item documents in Foundry VTT. Specify the operation with |
move-token | write | Move a token to a new position on the current scene. Can optionally animate the movement. |
remove-actor-ownership | destructive | Remove ownership permissions (set to NONE) for specific actors and players. Equivalent to |
replace-journal-page | destructive | Replace the ENTIRE content of a specific journal page. Use this to overwrite/rewrite a page. For appending progress, use update-quest-journal instead. |
request-player-rolls | read | Request dice rolls from players with interactive buttons. Creates roll buttons in Foundry chat that players can click. VISIBILITY WORKFLOW: Before calling this function, ensure the user has specified whether they want a public or private roll. If they have already specified |
run-mac-setup | write | Auto-install ComfyUI Desktop and SDXL model on Mac (Apple Silicon only). Downloads ~2.7GB total. Use this when user wants to enable AI map generation on Mac. |
search-character-items | read | Search within a character |
search-journals | read | Search through all pages of all journal entries for specific content or keywords. Returns which specific page matched, so you can read it with list-journals using journalId + pageId. |
switch-scene | read | Switch to a different Foundry VTT scene by name or ID |
toggle-token-condition | write | Toggle a status effect/condition on or off for a token. Use this to apply or remove conditions like Prone, Poisoned, Blinded, etc. |
update-scene-music | destructive | Set or clear the music binding of a scene. Pass playlist and optionally playlist_sound (ids or unique names, null to clear). Writes through the scene document API and syncs live to connected clients. |
update-token | write | Update various properties of a token such as visibility, disposition, size, rotation, elevation, or name |
use-item | read | Use an item on a character (cast spell, use ability, activate feature, consume item). Opens the item dialog in Foundry VTT for the GM to configure options and confirm. Optionally specify targets by name. Returns immediately with status |
wfrp4e-add-items | write | [WFRP4e only] Add skills, talents, traits, trappings, careers, weapons, spells and |
wfrp4e-update-actor | write | [WFRP4e only] Update an existing actor |
Trust audit
CAUTIONgrade C · trust 80/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (11 observation(s))
- Network
- declared (7 observation(s))
- Shell
- declared (5 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (20)
INetC.dll
INetC.dll
INetC.dll
INetC.dll
7zr.exe
const response = await fetch('http://127.0.0.1:31411/system_stats', {const response = await fetch('http://127.0.0.1:31411/system_stats', {delete-tokens, manage-actors, manage-effects, remove-actor-ownership, replace-journal-page, update-scene-music
.prettierignore
normalize-payload.test.ts
zip -r ../../foundry-vtt-mcp.zip . -x ".*" -x "node_modules/*"
zip -r ../../foundry-vtt-mcp.zip . -x ".*" -x "node_modules/*"
import { FoundryClient } from '../../foundry-client.js';import { Logger } from '../../logger.js';import { ErrorHandler } from '../../utils/error-handler.js';const byteCharacters = atob(data.imageData);
@primno/dpapi, @types/node, @typescript-eslint/eslint-plugin, @typescript-eslint/parser, esbuild-analyzer, eslint, eslint-config-prettier, eslint-plugin-prettier
socket.io-client, @types/node, typescript, @league-of-foundry-developers/foundry-vtt-types
@foundry-mcp/shared, @modelcontextprotocol/sdk, axios, dotenv, ws, werift, winston, zod
zod, typescript
Gates applied: no_behavioural_pass.
09c9c8d1f759full audit observations/trust-audit/mcp-server/adambdooley__foundry-vtt-bridge.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-07 | 09c9c8d1f759 | CAUTION | C | 80 | first audit |
Questions
What is the Foundry VTT Bridge MCP server?
An MCP (Model Context Protocol) server that bridges Foundry VTT data with Claude Desktop, enabling users to chat with their game world data using their own Claude subscription.
What tools does Foundry VTT Bridge expose?
45 in total: 23 read-only, 16 that write, and 6 that can delete or overwrite (delete-tokens, manage-actors, manage-effects, remove-actor-ownership, replace-journal-page). Every one is listed on this page with its risk.
Is Foundry VTT Bridge safe to connect to an agent?
With care. The audit graded it C (80/100) and found 20 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 6 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Foundry VTT Bridge need?
It reads FOUNDRY_REJECT_UNAUTHORIZED from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Foundry VTT Bridge run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as @foundry-mcp/shared at 0.8.4.
How current is this page?
The grade is for one exact copy of the source (09c9c8d1f759), read on 2026-10-07. The repository is watched and re-audited when it changes.