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. 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:2. Use a Tempo tool — and sign in when asked
Ask your agent to “list my Tempo issues”. The first tool that needs your account opens your browser to the Tempo sign-in page (the agent also shows you the link in case the window didn’t appear). Sign in, or sign up — a new account is walked through creating its organization right there — then go back to your agent: the tool continues on its own. No login command, no token to paste, no restart. Credentials are stored locally per machine, so later sessions connect silently. If your session ever expires, the next tool call simply prompts you again. Prefer to sign in ahead of time?npx -y @tempo-ai/mcp login does the same
browser flow from a terminal. Machines with no browser at all use a token
instead — see Cloud and headless environments.
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 “share my canvas” to see it work.
Cloud and headless environments
Cloud agent sandboxes have no browser, so the sign-in prompt can’t complete 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 (the next tool call prompts for sign-in again);npx -y @tempo-ai/mcp whoamishows who’s signed in.- Set
TEMPO_MCP_NO_BROWSER=1in the server’s environment if you never want a browser window opened from a tool call — the sign-in link is still shown by the agent.