Opik's MCP server
One command connects your coding assistant to your traces and teaches it how to
create them in the first place. It needs uv and no
Opik SDK:
One click for Cursor and VS Code, or a prompt you paste into any coding agent. All three use the Opik Cloud hosted server and sign in through the browser:
The Cursor and VS Code buttons add the server only. The copied prompt has your agent detect the coding agents on your machine, ask which ones to set up, install the server and the skills for them, and verify with a real call. Another client, or a self-hosted Opik? See Manual setup.
What this unlocks
Things you can ask for and get in one turn, without leaving your editor:
Your assistant adds tracing in the right places for your framework, runs the app, and confirms the traces arrived.
It reads the failing traces and their scores directly, instead of you pasting screenshots into chat.
From traces you already have, so the cases are real ones your app hit.
Every later change can be checked against real traces as you make it.
Quick setup with the Opik CLI
The CLI detects your AI client (Claude Code, Cursor, VS Code Copilot, Codex, opencode), picks the right server for your Opik deployment, configures it, and then checks that the configuration it just wrote actually works.
Prefer not to use the CLI? You can wire up any client by hand — skip to Manual setup.
Install uv, if you don't have it
Open a new terminal afterwards so uvx is on your PATH.
Configure the MCP server
The first run downloads the Opik CLI and takes a few seconds; later runs start in about a second.
This reuses your existing Opik configuration (~/.opik.config); if you
haven’t configured Opik yet, the wizard offers to do it for you first.
Already have the opik Python package installed? opik mcp configure
without uvx is the same command.
You’ll choose your AI client from a list, then confirm the MCP server and the Opik skill pack for it.
Restart your AI client
Assistants read their configuration at startup, so start a new session before trying the prompts in Start using it. Reconnecting inside a running session only refreshes servers it already loaded; a newly added server needs a new session.
If your client isn’t detected, see Manual setup.
Check your setup
Each AI client keeps its own copy of the MCP configuration, which isn’t updated automatically when your Opik configuration changes. To see what every detected client points at — and whether it still matches your current Opik configuration — run:
It prints your active Opik configuration, then each AI client that has the Opik MCP server configured: the config file it lives in, the server it reports to (hosted or local), its workspace, and whether it has drifted from your Opik configuration.
A client that has drifted is flagged ✗ OUT OF SYNC — re-run
uvx opik mcp configure to fix it.
A client keeps its MCP connection for the lifetime of its process. After changing
your Opik configuration or re-running uvx opik mcp configure, restart your AI
client so it reconnects with the updated settings.
To view just your active Opik configuration (file path, environment, workspace):
To refresh the skill pack, re-run uvx opik mcp configure. It rewrites the pack
from the latest published version. Assistants read their skills at session start,
so start a new session afterwards.
From a script or CI
Setup writes into your AI client’s own configuration, so a run with no terminal writes nothing unless you name the client:
Credentials come from ~/.opik.config or from OPIK_API_KEY and OPIK_WORKSPACE
already present in the environment, such as a CI secret; do not paste the key into
the command line. --ai-client takes claude-code, cursor, vscode, codex,
opencode, or all for every client detected on the machine; repeat it for
several. --skills installs the skill pack without asking, --no-skills skips it.
A run that names nothing and has no terminal, a CI job or a Docker build, writes
nothing.
Start using it
Paste any of these into your assistant. Start with the first — it exercises the whole loop, so if it works, everything is wired up.
From then on your assistant can check its own work against real traces every time you change something.
The tools you’ll have
Your assistant gets five tools and picks between them on its own. This is here so you know what it can reach for:
Running an evaluation end to end is the skill pack’s job, not a tool’s: the
opik-evaluate skill drives the Opik SDK, and the MCP tools record and read the
results. That is why the command above installs both.
To see a payload shape yourself, ask “show me the schema for trace.create” — or read the full list.
Opik Cloud and self-hosted deployments
uvx opik mcp configure works the same whether you’re on Opik Cloud, self-hosted,
or a local install — it sets up the right server for your deployment
automatically.
Opik Cloud (hosted server)
On Opik Cloud, the CLI registers the hosted MCP server over HTTP. Your AI client signs in with a browser-based OAuth flow on first connect, so:
- No API key is stored in the client’s config — you authenticate through OAuth in the browser.
uvis only needed for the setup command. There is no local process to run afterwards.- Your workspace is selected during the OAuth sign-in, so a hosted server shows
no workspace in
uvx opik mcp status.
Self-hosted and local (local server)
If no hosted server is available for your environment, the CLI sets up the
local server, which runs on demand via uvx opik-mcp. This requires
uv; if it isn’t on your PATH the CLI stops and
prints the exact command to install it for your platform.
Workspaces
For the local server your workspace is written into the client’s config, so it has
to be the right one. If your Opik configuration doesn’t name a workspace and your
account has more than one, uvx opik mcp configure refuses to continue rather
than falling back to your account default:
Guessing here is the one failure this CLI can produce that doesn’t look like a
failure: your agent would read real traces from the wrong workspace and report
them confidently. Run uvx opik configure, pick a workspace, and re-run.
Manual setup
Prefer to wire it up yourself, or your client wasn’t detected? Configure any client by hand below.
On Opik Cloud, any MCP client can take the hosted server in one line:
add-mcp writes the URL into Windsurf,
Zed, Gemini CLI, Claude Desktop, Goose, Cline, Kiro and a dozen more. The client
has to support browser sign-in (OAuth) for remote MCP servers; without it the
hosted endpoint answers 401. On a self-hosted deployment, replace the URL with your own API base plus /v1/mcp, or
use the local server.
For the skill pack on a client the CLI doesn’t cover, the community
skills CLI knows the skill directories
for 76+ agents (needs Node.js):
There are two servers you can add by hand. uvx opik mcp configure
picks the right one for you, but you can also add either directly in your AI
client’s MCP settings:
- Hosted server (HTTP + OAuth) — available on Opik Cloud and any deployment that provides it. No API key is stored; your client signs in through the browser.
- Local server (
uvx opik-mcp, stdio) — runs on your machine with your credentials in the client’senvblock.
Hosted server (Opik Cloud)
The hosted server connects over HTTP and signs in with a browser-based OAuth
flow on first connect — no API key is stored in the client config. Point your client
at your deployment’s MCP endpoint, which is your Opik API base plus /v1/mcp. On
Opik Cloud that is https://www.comet.com/opik/api/v1/mcp.
Claude Code
Cursor
VS Code Copilot
Codex
Add the server with one command:
Or edit ~/.claude.json directly:
Restart Claude Code and complete the browser sign-in when prompted, then ask in the chat: “list my Opik projects”.
Local server (uvx)
The local server runs on demand via uvx opik-mcp (requires
uv), with your credentials passed through the
client’s env block.
opik-mcp is now a Python package. If you previously ran the npx-based
JavaScript server, use the uvx opik-mcp commands below in place of
npx -y opik-mcp.
OPIK_WORKSPACE is optional — you can omit the OPIK_WORKSPACE line/key
entirely and the server uses the default workspace (correct for local/OSS
installs). The snippets below include it for completeness; set it only if you
connect to a named cloud workspace.
Claude Code
Cursor
VS Code Copilot
Codex
opencode
MCP Inspector
Add the server with one command:
Or edit ~/.claude.json directly:
Restart Claude Code, verify with /mcp (opik-mcp should appear as
connected), and then ask in the chat: “list my Opik projects”.
Self-hosted Opik. Add COMET_URL_OVERRIDE to the env block (and OPIK_URL
if Opik lives at a non-default path).
Example conversation
A typical investigative loop using Claude Code:
You: Why did the experiment “gpt-4o-rerank-v3” regress on factuality?
Claude: (calls
list, thenreadon the failing traces) Three traces failed because the reranker dropped the system message. The remaining 12 traces scored above 0.8…You: Score the bottom 3 traces 0.2 with reason “dropped system message”.
Claude: (calls
writewithscore.create×3) Done — three scores recorded on traces<id-1>,<id-2>,<id-3>.
Troubleshooting
Before anything else: run uvx opik mcp status, then start a new session in your
client. Most problems end there.
The client asks for authentication, or the browser sign-in never opened
The hosted server signs you in through the browser on the first connection, and the client only tries once per session.
- Start a new session, then trigger sign-in from the client:
/mcpin Claude Code, the MCP settings panel in Cursor,codex mcp login opik-mcpin Codex. - On a corporate network, allow
www.comet.com. On self-hosted Opik, allow your deployment’s domain and its identity provider instead. - Sessions expire. When that happens, the client asks you to sign in again.
Opik does not show up in the client, or shows no tools
Clients read MCP servers and skills when a session starts.
- Start a new session.
- Run
uvx opik mcp status. It lists the clients the CLI knows (Claude Code, Cursor, VS Code Copilot, Codex, opencode) that have the server, and the config file it lives in. If your client is missing, runuvx opik mcp configureagain. Clients you configured by hand are not listed; check their config file. - If setup printed
exists but is not a valid JSON object, that client’s config has comments in it. Paste the block the CLI printed into the file by hand.
"Opik is not configured yet" or "needs either a terminal or an explicit client"
The command ran without a terminal, from an agent, a script or CI, so it could not ask you anything.
- Name the client:
uvx opik mcp configure --ai-client cursor --skills. - Provide credentials through
OPIK_API_KEYandOPIK_WORKSPACEin the environment, or through~/.opik.configfrom an earlieruvx opik configure. Do not type the key into the command.
The agent sees no data, or data from the wrong workspace
The server points at a different workspace than you expect.
- Hosted server: the workspace was chosen at sign-in. Sign out and in again from the client’s MCP panel and pick the right one.
- Local server: run
uvx opik configure, choose the workspace, thenuvx opik mcp configureagain, then a new session. ✗ OUT OF SYNCinuvx opik mcp statusmeans the client config is older than your Opik configuration. The same re-run fixes it.
Status shows "Local (stdio)" on Opik Cloud
The CLI checks /.well-known/oauth-authorization-server/opik on your
deployment to pick the server. If a proxy, VPN or TLS error blocks that check,
it falls back to the local server and stores your API key in the client config.
- Re-run
uvx opik mcp configurefrom a network that can reach the deployment. - A 404 on that check means the deployment has no hosted server. On self-hosted
Opik, pass
--local-server; that is the intended path.
"uvx: command not found"
uv is not installed, or the terminal was opened before the install.
- Install it with the one-liner in Quick setup.
- Open a new terminal and run
uvx --version.
The first tool call takes a long time, or the client says the server failed to start
With the local server the client runs uvx opik-mcp, which downloads the
package and a Python runtime on first use. Setup pre-warms that cache, but
gives up after a timeout.
- Let the first call finish once. Later calls start in about a second.
- If it fails, run
uvx opik-mcp --helpin a terminal to see the real error.
Cursor: tool call timed out after 60 seconds
Cursor enforces a hard 60-second timeout per tool call, and large traces hit it.
- Ask for fewer traces, or for one span at a time.
- For long investigations use Claude Code or VS Code, which have no such cap.
FAQ
Do I need the Opik SDK, Python or Node?
No. uvx opik mcp configure needs only uv. The Cursor and VS Code buttons
need nothing. npx add-mcp and npx skills add need Node. The language of
your project does not matter.
Hosted or local server: which one do I get, and where do credentials live?
On Opik Cloud, and on any deployment that advertises it, you get the hosted
server: your client signs in through the browser and nothing is stored in its
config. Everywhere else, or with --local-server, you get the local server:
uvx opik-mcp runs on your machine with OPIK_API_KEY and OPIK_WORKSPACE in
the client’s env block (environment in opencode). If setup could not reach
your deployment to detect the hosted server, it falls back to the local one, so
check uvx opik mcp status: it shows which server each client uses.
Is it safe to let an agent write to my workspace?
The agent acts with your permissions and cannot exceed them. One tool,
write, can score, comment, save prompt versions and create traces; everything
else is read-only. Keep your client’s tool approval on for writes. Trace content
is text your users wrote, so treat anything the agent reads from a trace as
data, not as instructions.
My client is not in the list. Can I still use it?
Yes. The CLI covers Claude Code, Cursor, VS Code Copilot, Codex and opencode.
For any other client on Opik Cloud, run
npx add-mcp https://www.comet.com/opik/api/v1/mcp --name opik-mcp, or point
the client at that URL yourself with the Streamable HTTP transport. Skills for
other clients: npx skills add comet-ml/opik-skills. See
Manual setup.
Can I work with several workspaces?
One workspace per client config. On the hosted server you pick it at sign-in.
On the local server, uvx opik configure switches it, then run
uvx opik mcp configure again.
Is there a read-only mode or a per-project scope?
Not yet. Until then, use your client’s tool approval to gate the write tool.
How do I update?
uvx opik@latest mcp configure. It re-runs setup for each client, reports the
result per client, and refreshes the skill pack; a client whose config it could
not write is reported, not silently skipped. Plain uvx opik reuses the version
it already has cached. Start a new session afterwards.
How do I remove it?
There is no remove command. Use claude mcp remove opik-mcp or
codex mcp remove opik-mcp, or delete the opik-mcp entry from your client’s
MCP config file. Local server telemetry switches off with
OPIK_MCP_ANALYTICS_ENABLED=false in the same config.