Which one do I need?
Rule of thumb: if the client can run a command, use the npm package. If
all you can give it is a URL, use the hosted server.
@tempo-ai/mcp brings Tempo’s full tool surface to AI agents: issues, docs,
canvas comments, custom agents, run scripts, Slack (as your org’s Tempo
bot), Linear, and — inside a Tempo-enabled repo — the canvas tools,
including screenshots and share links with real previews rendered from
your production components.
It works two ways, always with the same tools and the same explicit scoping:
- As an MCP server — for hosts that attach stdio MCP servers (Claude Code, Codex CLI, Cursor, Claude Code cloud sessions).
- As a CLI —
tempo-mcp tools/tempo-mcp call— for environments with a terminal but no MCP support (Codex cloud, Grok Bot, CI jobs).
Install on your machine
1. Sign in once
2. Add the server to your client
- Claude Code
- Codex CLI
- Cursor
- Any other agent
--scope user to enable it everywhere. To share it with your whole team
(and with Claude Code cloud sessions), commit a .mcp.json at the
repo root instead:3. That’s it — canvas included
Canvas tools appear automatically when the agent runs inside a repo that has Tempo canvases (atempo/tempo.config.json). Screenshots and share links
render headlessly with Chromium, which downloads itself automatically on
the first capture (one-time, ~2 min; cached per machine afterwards). To
make that first capture instant, you can pre-install it:
TEMPO_MCP_NO_AUTO_INSTALL=1 — captures then fail with the manual install
command instead.
Ask your agent to “list my Tempo issues” — or “share my canvas” — to
confirm it works.
Cloud and headless environments
Cloud agent sandboxes have no browser, sologin can’t run there. Instead,
mint a personal access token on your own machine:
tempo_...) prints exactly once. Set it in the cloud environment
as TEMPO_AUTH_TOKEN — the CLI signs in with it automatically, no browser
involved. Verify from the environment with:
npx -y @tempo-ai/mcp token revoke <prefix> (and list with token list).
- Claude Code cloud
- Codex cloud
- Grok Bot / other bot VMs
- CI
Cloud sessions (from claude.ai/code or the desktop app) clone your repo
into Anthropic’s sandbox and launch the repo’s
.mcp.json servers
inside it — so with the .mcp.json above committed, the full tool
surface (canvas included) works. Configure the cloud environment
once:- Environment variable:
TEMPO_AUTH_TOKEN=tempo_... - Network access: add
*.convex.cloudand*.convex.siteto the allowlist (Custom access), plustempo.newfor share links.
npx playwright install chromium in the setup
script (cached across sessions) so the first canvas capture skips the
automatic Chromium download.Using the CLI instead of MCP
Every tool the MCP server exposes is also callable directly — same pipeline, same scoping, no per-tool differences:call prints the tool result to stdout and exits non-zero on tool errors.
--json - reads the argument object from stdin. Both commands accept
--toolsets and --readonly.
Tell the agent the CLI exists
An MCP host advertises Tempo’s tools to the model automatically. A CLI doesn’t — likegh or aws, the agent only uses it when its instructions
say to. Add this to your repo’s AGENTS.md (Codex reads it on every task)
or your agent’s standing instructions:
Connect from ChatGPT, claude.ai, or mobile (hosted server)
Chat apps on the web can’t runnpx — they connect to Tempo’s hosted MCP
server instead. One URL for every client:
- ChatGPT (web)
- claude.ai / Claude mobile
- Other remote-MCP clients
- Settings → Security and login → enable Developer mode. (Without it, custom plugins only run search-style deep-research tools — Developer mode unlocks full tool calling. Business/Enterprise workspaces: an admin must first allow it under Workspace Settings → Permissions & Roles → Connected Data.)
- Settings → Plugins → + → name it “Tempo”, paste
https://mcp.tempo.new/mcp, authentication OAuth. - Approve the Tempo sign-in consent.
- In a chat, enable the Tempo plugin from the plus menu. Write actions ask for confirmation before executing.
An authorized connector acts as you — only connect clients you trust,
or pin them read-only with
?readonly=1.
How scoping works
This is identical on both the npm package and the hosted server. Your sign-in (browser, token, or OAuth consent) provides identity; every tool call carries explicit scope. The AI discovers your organization and project ids with the built-intempo_list_orgs and tempo_list_projects tools and
passes them on each call — you never configure an org on the connection, and
membership is re-verified server-side on every call.
Options
Add flags after the package name, e.g.
npx -y @tempo-ai/mcp --readonly.
Good to know
- Inside the Tempo app you don’t need this — the app provides the same tools natively (and skips a user-installed copy to avoid duplicates).
- Writes act as you — the signed-in Tempo user — with the same org
permissions you have in the app. That includes anything a
TEMPO_AUTH_TOKENholder does, so treat tokens like passwords and revoke ones you stop using. npx -y @tempo-ai/mcp logoutclears the stored credentials;npx -y @tempo-ai/mcp whoamishows who’s signed in.