Skip to main content
The server speaks MCP over stdio, so any client that does too can drive it. The installer offers to connect the four common ones — Claude Desktop, Claude Code, ChatGPT Desktop, and Codex — as its last step. This page is what that step wrote, how to write it yourself, and what to check when a client doesn’t show the tools.

What the installer registered

The two Claude Desktop builds do not share a config. The Store build is packaged, so what it writes to %APPDATA%\Claude actually lands under LocalCache — and on a machine with only that build, %APPDATA%\Claude doesn’t exist at all. The installer registers with both builds when both are present.Claude Desktop and Claude Code are also separate registries, not two names for one. Tools showing up in Claude Code says nothing about whether Claude Desktop has them.
Config files are merged, not overwritten: the installer reads what’s there, adds or updates its own entry, and leaves every other server alone. Before its first change to a file it saves a copy next to it with a .zeno-backup extension. A client that isn’t installed is skipped without complaint. The installer’s last page names each one it connected to, and each one it skipped — read it before closing the installer, because it’s the quickest answer to “why doesn’t my chat client see this”. Registration is a tick box on the installer’s Select Additional Tasks page, which a firm that manages client configuration centrally can clear. Run it later, or again, with:
Re-running is safe. It updates the existing entries rather than adding second ones.

Restarting the client

Every client reads its server list at startup, so restart each one you use after installing or upgrading. A client that was open during the install shows no Zeno tools until it restarts, and this is the fix for most “the tools aren’t there” reports.
Closing Claude Desktop’s window doesn’t stop it. Quit it properly — right-click its icon in the notification area and choose Quit — then open it again. A copy still running in the background never re-reads its config, so the restart appears to change nothing.
In Claude Code, start a new session; an open one keeps the server list it started with.

Registering by hand

If registration was declined, or configuration comes from a deployment tool, write the same entries yourself. The installed program is %LOCALAPPDATA%\Programs\Zeno\qb-mcp\qb-mcp.exe.

Claude Desktop

Add to mcpServers in %APPDATA%\Claude\claude_desktop_config.json:

Claude Code

--scope user makes the server available in every project rather than only the current directory.

ChatGPT Desktop and Codex

Both read %USERPROFILE%\.codex\config.toml. Add:
The ten-minute tool timeout is deliberate: reports, mirror syncs, and large batches legitimately run past Codex’s default. default_tools_approval_mode = "writes" lets reads run without a prompt while every write asks first. Keep the marker comments — the installer replaces only what sits between them when it upgrades the entry.

ChatGPT on the web or on a phone

ChatGPT web and mobile can’t use this, and no configuration changes that. QuickBooks Desktop exposes an in-process, 32-bit COM server, so this software runs as a local process on the QuickBooks workstation — and a browser tab or a phone can’t launch one. Use the ChatGPT desktop app on the same Windows machine as QuickBooks, or Codex.

The ChatGPT and Codex plugin

zeno-quickbooks-desktop-plugin-<version>.zip ships next to the installer. It adds four workflow skills — workstation setup, review-gated batches, financial analysis, and cross-session continuity — that hold ChatGPT and Codex to the discipline these docs describe: plans shown in full, approval before posting, work logged. The plugin contains no server. It names the installed zeno-for-qb server as its dependency, so install the Windows product first, then the plugin, then restart ChatGPT Desktop or Codex. Without the server, the skills can only tell you to install it. It’s optional. Every tool works without it.

Setup from any client

qb_setup walks a new workstation through discovery and registration, and it exists in three forms because clients disagree about what they surface: an MCP prompt, a tool with the same name, and the plugin’s setup skill. Claude Desktop lists prompts behind its attachment menu, and some clients don’t show prompts at all. If you can’t find the prompt, ask for the qb_setup tool by name — the guidance is identical.

When a client doesn’t list the tools

Restart the client first. A client that was open during install hasn’t read the new entry, and quitting Claude Desktop means quitting it from the notification area rather than closing its window. If a restart doesn’t do it, ask a client that does work. From 1.2.0-beta.6, qb_doctor reads the Claude Desktop configuration on the machine and reports what it finds there — no entry at all, an entry under a name the installer doesn’t use, the same server listed twice, or a file it couldn’t read — with the fix for each:
This is worth doing from Claude Code when Claude Desktop is the one that’s broken: the client that can’t see the server is the one client that can’t tell you why.
Registering under a name of your own works, but the installer adds its own entry beside it on the next upgrade rather than claiming a key it didn’t write — leaving two entries serving identical tools. Use Zeno for QB for Claude Desktop and the tables above hold true through upgrades.
Failing that, or on an earlier version, read register-summary.txt next to the program in %LOCALAPPDATA%\Programs\Zeno\qb-mcp\. It’s the same list the installer’s last page showed, and it says which clients were connected and which were skipped. Then check the registration itself:
  • Claude Desktop%APPDATA%\Claude\claude_desktop_config.json should have a Zeno for QB entry under mcpServers. If that file doesn’t exist, you’re on the Store build: look under %LOCALAPPDATA%\Packages\Claude_<id>\LocalCache\Roaming\Claude\ instead. Paste this into PowerShell to find whichever you have:
  • Claude Code — run claude mcp list. If the server is missing, add it with the command above. Being registered here says nothing about Claude Desktop; they’re separate.
  • ChatGPT Desktop and Codex%USERPROFILE%\.codex\config.toml should contain the block between # BEGIN Zeno for QuickBooks Desktop and # END Zeno for QuickBooks Desktop.
One more signal for Claude Desktop: it writes a log per server it launches, at logs\mcp-server-Zeno for QB.log inside its config folder. If that file doesn’t exist, Desktop never tried to start the server — which means the entry isn’t in the config file Desktop actually reads, not that the server is broken. If a config file was broken — by any tool, not just this one — the copy saved before this software’s first change is next to it with a .zeno-backup extension. Still stuck? Contact support with register-summary.txt and that log folder listing; those two answer most of it. Everything past registration — the authorization prompt inside QuickBooks, “Request Processor not found” — is on the install page.