Before you start
Upsolve Local has to be running:The builder server or the user server
Upsolve Local has one person and no sign-in, so both servers act as you. What
--user changes is how you are seen. With --user the assistant gets only the analytics tools, and uses them the way an end user of your workspace would:
- As your own project user. Upsolve gives you a project user of your own in each project, and every
--usercall runs as that user, never as one you pick. - Against each workspace’s published production version. A draft is never answered from. Publish your changes and promote the version to production before you ask, either in the app or with the builder server.
- With your own history. The threads, favorites and canvases it reads and saves are your own, the same ones the Upsolve Local app shows you.
--user to hand your assistant a read-and-analyze surface that cannot change any workspace. Pick mcp to build. You can add both, side by side.
Add it to your assistant
Claude Code
Claude Desktop
Open Settings → Developer → Edit Config, which opens~/Library/Application Support/Claude/claude_desktop_config.json, and add the servers you want under mcpServers:
⌘Q, not just closing the window) and open it again.
Claude Desktop does not read your terminal’s PATH. If it reports that the server failed to start, put the full path that which npx prints in command (for example /opt/homebrew/bin/npx), and add "env": { "PATH": "<folder of node>:/usr/bin:/bin" } to the server, with the folder that which node prints.
Codex
~/.codex/config.toml yourself:
Try it
Ask your assistant something like “Which workspaces do I have in Upsolve?”. It starts by looking up your organization and project, as it does with Upsolve Cloud, and goes on from there.How it connects
- There is nothing to configure. Each time a tool is called, the server finds Upsolve Local on your Mac, asks it for a session that lasts one hour, and renews it before it runs out.
- Upsolve Local can stop and start. While it is stopped, every tool answers
Upsolve Local is not running. Start it with: npx @upsolve-labs/analytics — then ask again.Start it and ask again: the assistant does not need restarting, even when Upsolve comes back on another port. - Update both together. The server is part of the Upsolve Local release
npxruns. After you update Upsolve Local, restart your assistant too, so both run the same release.
What is different from the cloud
- Charts arrive as JSON. In Upsolve Cloud a chart the agent draws appears in the conversation. Upsolve Local has no interactive chart yet: the chart’s data and settings come back as JSON in the tool’s answer, which the assistant can read, summarize or draw itself.
- The app’s limits apply. The tools are the cloud’s, and they reach the same Upsolve Local the app does, so what Upsolve Local does not have is not available through them either.
npx @upsolve-labs/analytics mcp --help lists its options.