Guide
Claude Desktop and Claude Code connect to Foundry with no agent app in between.
Anthropic builds two MCP clients of its own, Claude Desktop and Claude Code, and both speak straight to your Foundry world with nothing third-party in the path. Familiar holds the other end, running inside the world you GM. The connector rides on an Anthropic Pro, Max or Team plan, and usage comes out of that plan rather than a token balance. Once the link is live, Claude takes the dungeon master's chair for the published adventure you imported. So one decision is left. Desktop or Code.
Claude Desktop or Claude Code?
Both are MCP clients Anthropic builds itself, both run on the same Pro, Max or Team plan, and both drive the same Familiar server in the same world. The choice is mostly ergonomics: where you would rather type, and what you want to see come back.
One thing Desktop does that Code does not is start Familiar's server when the app launches, not when you open a chat. That is no reason to keep one of them closed: Familiar listens on one local port, and a second server started by the other client attaches to the first one and runs through it, so Desktop and Code can sit open side by side against the same world.
For Claude Code the whole setup is the line below, at user scope. Leave the placeholder secret alone: Familiar's wizard mints the real one and hands back the finished command.
| What differs | Claude Desktop | Claude Code |
|---|---|---|
| Adding it | Paste the config block the wizard writes | One line in the terminal, no follow-up |
| Tool surface | A curated set under its 100-tool cap; image, voice and battle-map generation sit outside it | The whole surface, its definitions deferred behind tool search |
| A picture it fetched | Reasoned over, not shown in the window, and only once the image bundle is switched on | Rendered in the tool-output panel, up to its cap |
| Suits | Sitting open in a window beside Foundry | Long chains, and a terminal you already live in |
Familiar picks the surface from the name the client reports at the handshake; the one dial you hold is the bundle list further down this page. An image from either client saves into your Foundry world; only whether you also see it in the client differs.
claude mcp add familiar --scope user --env FAMILIAR_WS_SECRET=<your-secret> -- npx -y familiar-vtt
What Claude reaches inside your world
With the connector live, Claude can read and act on what your world already holds. The journals you imported, the character sheets, the statblocks pulled from the module, the scene open on the canvas. Ask who the innkeeper was and it opens the journal entry rather than reaching for a plausible name; ask what the party has walked into and it reads the tokens actually on the map.
That reach is also the boundary. Claude answers from the pages your world already holds, which is what makes a name or a stat block worth trusting. It is also why the campaign has to arrive from somewhere else: a published adventure you imported and prepped. Claude runs those pages without rewriting them.
Journals & NotesCharacters & ItemsScenes & Tokens
- Getting a published adventure into FoundryLaying a module into your world as journals, sheets and a one-page outline.
- The rules I give my AI DMRoll discipline, player agency, and what to do about a model that cannot roll: the rules to paste in before play.
- How to play D&D with AIThe method the prep and the rules slot into: what you bring, and what Claude runs.
- Running a different game system?The systems with a page of their own.
Check the link, then ask for something real
Whichever client you picked, the first line to send is the product's own, the one both wizard cards close on. If Claude answers with your world's name, the link is live, and everything under it is safe to try.
Before that line, check that the client is holding the connector. On Desktop, quit the app and open it again once the config is pasted. Under Settings, Developer, familiar then shows as running, and the + button under the chat box lists it under Connectors.
On Code nothing needs reloading, Foundry included. Familiar's MCP / Subs tab turns green on its own once a session has started the server, and /mcp inside that session shows the same status. The first start on either client downloads the server, so give it a minute.
After that, each ask below leans on something this page has already claimed: the sheets and statblocks in your world, the picture row of the table, the scene on the canvas. The portrait line needs an image provider in Familiar's settings, and on Desktop the bundle line further down as well.
- The verify line
Use Familiar's get-world-info tool
- Read a sheet
Read <character>'s sheet and tell me their AC, their current hit points, and which spells they have prepared.
- Pull a statblock from the module you imported
Find <monster>'s statblock in the adventure I imported and tell me what it does on its turn.
- Fetch a picture
Generate a portrait for <NPC name> and set it as their sheet image.
- Move the table to a scene
Switch the table to <scene name> and tell me which tokens are standing on it.
Where only Claude gets stuck
Desktop's faults come from reading things once, at launch. Code's come from the command line. Nothing on this list shows up on another client; the faults every client shares have one home, the connect guide, linked below.
Settings, Developer shows no familiar after the paste
Closing the window is not quitting. Desktop keeps running in the tray, so the entry you pasted has not been read yet. Right-click the tray icon and choose Quit on Windows, or press Cmd+Q on a Mac, then open it again.
On Windows it is still missing after a proper restart
Some Windows installs open one config file and read another. Look for a second claude_desktop_config.json under %LOCALAPPDATA%\Packages, in the folder there whose name starts with Claude_, at LocalCache\Roaming\Claude, and put the same entry in that one.
Ask Desktop for a portrait, a voice or a battle map and nothing happens
Desktop never looks at its tool list again mid-session, so it cannot pick up a tool it did not start with. The section below carries the one line that switches those three on.
claude mcp add refuses the line: Invalid environment variable format: familiar
The server name went in after the secret. That flag takes a list, so a name placed behind it is read as one more variable and rejected. Put familiar straight after add, the way the command higher up this page has it, or copy the finished line from the wizard card.
claude mcp list says Failed to connect right after the add
Adding the entry saves it and starts nothing. That check is what first runs the server, and while that first download is still going it reads as failed. Run it again a minute later.
If Claude Desktop is missing a tool you want
Desktop caps its tool list at 100, so Familiar hands it a curated set, and three bundles sit outside that set out of the box: image generation, voice generation, and the battle-map generator. The dial sits in the same config the wizard writes, carried the same way as the secret. Add the line below to the env block of the Familiar entry and restart Desktop.
Name fewer bundle ids to add fewer. Put only: in front of the list and it sees the core tools plus exactly those, and nothing else.
FAMILIAR_TOOL_BUNDLES=image-generation,voice-generation,scene-generator
Bringing an Anthropic key instead
Some tables would rather not have a client open at all. Familiar takes an Anthropic key directly, and Claude then answers from inside the Foundry tab itself: no config file, no second process to keep alive. That key is metered by Anthropic, per token. Familiar itself is a subscription of its own, billed apart from anything Anthropic sends you.
The key buys one thing the plan route cannot. On a direct Anthropic key, Familiar renders the longest reasoning ladder it has anywhere. Those rungs are not inferred from a model name: Anthropic reports what each model accepts, and the dropdown is that answer. How far down the ladder goes depends on the family, since some Claude models let you switch thinking off entirely and some do not offer that rung at all. Route the same model through an aggregator and that ladder gets shorter.
More in Connect your assistant
ChatGPT in Foundry via Codex
NewThe Chat tab is not the piece that connects. The Codex tab in the ChatGPT app is, on every plan including Free, and so is Codex CLI from Plus upward: OpenAI's own agent either way. Both read the same config file.
Gemini in Foundry via Antigravity
NewAntigravity is Google's agent, and it is what reaches your Foundry game. Any Google account gets you in, including a free one. Or skip the agent altogether: a Google API key, pasted into Familiar's own chat window.
MCP vs API: which to choose
NewSubscription or API key? MCP subscription versus a pay-per-token key, and which is cheaper for how your table actually plays.
Choosing an AI model
NewWhich model, and how hard should it think? A capable model with reasoning headroom is the second lever behind good prep. Turn thinking up for fiddly rules, down to keep replies fast.
Running a local LLM
NewRun the model on your own PC instead of a provider, so your world never leaves the machine and the bill moves from a token meter to your graphics card. Setup is one settings tab and one switch. Without a discrete GPU, expect minutes per turn.
New to Familiar? I'm Ryan, the person who built it. The Discord is small and brand new, so if you join now I'll help you get set up myself.