> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://www.comet.com/docs/opik/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://www.comet.com/docs/opik/_mcp/server.

# 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`](https://docs.astral.sh/uv/) and no
Opik SDK:

```bash
uvx opik mcp configure
```

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:

[![](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/opik.docs.buildwithfern.com/68c88e317a03fefb7d8ed68b9fe86ef33c0a002765fa6bfc84cdc43d7bb9f4fe/img/mcp/cursor.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260916%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260916T000107Z&X-Amz-Expires=604800&X-Amz-Signature=ba31467b9d83a58ffc34f25f2bd280bf5eab30ae07eb87e769863d1bf58493aa&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)Cursor](cursor:////anysphere.cursor-deeplink/mcp/install?name=opik-mcp\&config=eyJ1cmwiOiJodHRwczovL3d3dy5jb21ldC5jb20vb3Bpay9hcGkvdjEvbWNwIn0= "Open Cursor and add the Opik MCP server (Cursor Pro or higher; MCP is not available on the Hobby plan)")

[![](https://fdr-prod-docs-files-public.s3.us-east-1.amazonaws.com/opik.docs.buildwithfern.com/4c4dd46cc5892a947901fbcdc96ee4caf4c9eb341779b2b0589d8a2bbff436ba/img/mcp/vscode.svg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Content-Sha256=UNSIGNED-PAYLOAD&X-Amz-Credential=AKIA6KXJSKKNFOCF7G4B%2F20260916%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20260916T000107Z&X-Amz-Expires=604800&X-Amz-Signature=52d89d0ef7a3976fd59a66dffe72680498ce56a8961a8d644e3f1ee619fe1a7e&X-Amz-SignedHeaders=host&x-amz-checksum-mode=ENABLED&x-id=GetObject)VS Code](https://insiders.vscode.dev/redirect/mcp/install?name=opik-mcp\&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwww.comet.com%2Fopik%2Fapi%2Fv1%2Fmcp%22%7D "Open VS Code and add the Opik MCP server")

[Install prompt](# "Copies an installation prompt. Paste it into any coding agent.")

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](#manual-setup).

## What this unlocks

Things you can ask for and get in one turn, without leaving your editor:

#### Instrument this project

Your assistant adds tracing in the right places for your framework, runs the
app, and confirms the traces arrived.

#### Why did this get worse?

It reads the failing traces and their scores directly, instead of you pasting
screenshots into chat.

#### Build me a test suite

From traces you already have, so the cases are real ones your app hit.

#### Keep an eye on this

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](#manual-setup).

#### Install uv, if you don't have it

**`macOS / Linux`**

```bash title="macOS / Linux"
curl -LsSf https://astral.sh/uv/install.sh | sh
```

**`Windows`**

```powershell title="Windows"
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```

Open a new terminal afterwards so `uvx` is on your `PATH`.

#### Configure the MCP server

```bash
uvx opik mcp configure
```

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](#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](#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:

```bash
uvx opik mcp status
```

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.

```text
Your Opik configuration
    File          ~/.opik.config
    Environment   https://www.comet.com/opik/api
    Workspace     my-workspace

Opik MCP server — configured for 1 AI client:

  Claude Code
    Config        ~/.claude.json
    Connection    Hosted (HTTP + OAuth)
    Reports to    https://www.comet.com/opik/api/v1/mcp
    Status        ✓ in sync with 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):

```bash
uvx opik configure status
```

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:

```bash
uvx opik mcp configure --ai-client cursor --skills
```

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.

**`Instrument this project, end to end`**

```text title="Instrument this project, end to end"
Add Opik tracing to this project, then run it and show me the trace you created.
```

**`Confirm where this repo is logging`**

```text title="Confirm where this repo is logging"
List my Opik projects and tell me which one this repo is logging to.
```

**`Find what's slow or failing`**

```text title="Find what's slow or failing"
Look at the last 20 traces in Opik and tell me what's slowest and what's failing.
```

**`Turn real traces into a test suite`**

```text title="Turn real traces into a test suite"
Build an Opik test suite from my recent traces, then run it and show me the scores.
```

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:

| Tool         | What your assistant can do with it                                                                                |
| ------------ | ----------------------------------------------------------------------------------------------------------------- |
| `read`       | Fetch one thing by id, name, or `opik://` URI: a trace, span, project, experiment, prompt, test suite, or thread. |
| `list`       | Page through any of those, optionally filtered by name.                                                           |
| `write`      | Log traces and spans, score, comment, save prompt versions, manage test suites and experiments.                   |
| `schema`     | Look up the exact payload shape for a write, so it constructs valid ones.                                         |
| `read_skill` | Load one of the Opik skills on demand, when the skill pack is not installed in the client.                        |

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](https://github.com/comet-ml/opik-mcp#tools).

## 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](https://www.comet.com/opik), 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.
* **`uv` is 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`](https://docs.astral.sh/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:

```text
Your Opik configuration does not name a workspace, but this account has 3:
acme-ai, acme-research, sandbox. The MCP server would fall back to your default
workspace and silently read from the wrong place. Run `uvx opik configure` and choose
a workspace, then re-run `uvx opik mcp configure`.
```

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:

```bash
npx add-mcp https://www.comet.com/opik/api/v1/mcp --name opik-mcp
```

[`add-mcp`](https://github.com/neon-solutions/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](#local-server-uvx).

For the **skill pack** on a client the CLI doesn't cover, the community
[`skills`](https://github.com/vercel-labs/skills) CLI knows the skill directories
for 76+ agents (needs Node.js):

```bash
npx skills add comet-ml/opik-skills
```

There are two servers you can add by hand. [`uvx opik mcp configure`](#quick-setup-with-the-opik-cli)
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's `env` block.

### Hosted server (Opik Cloud)

Every client below asks for this URL:

**`Remote MCP server URL`**

```text title="Remote MCP server URL"
https://www.comet.com/opik/api/v1/mcp
```

The server connects over HTTP and signs in through the browser on first use, so
your client stores no API key.

On a self-hosted deployment the URL is your own Opik API base plus `/v1/mcp`, and
the deployment has to run the MCP OAuth authorization server. It is off by
default: turn on `mcpOAuth.enabled` in the Helm chart together with
`MCP_OAUTH_ENABLED=true` and `OPIK_BASE_URL` on the backend. Set `OPIK_BASE_URL`
to the public deployment root without `/api`, for example
`https://opik.example.com/opik`. The server appends `/api/v1/mcp` to it to build
the MCP resource URI, so a value that already ends in `/api` advertises the wrong
one and sign-in fails. Where MCP OAuth is off, the endpoint has no sign-in routes
at all, so use the [local server](#local-server-uvx) instead.

#### Claude Code

Add the server with one command:

```bash
claude mcp add --transport http opik-mcp https://www.comet.com/opik/api/v1/mcp
```

Or edit `~/.claude.json` directly:

```json
{
  "mcpServers": {
    "opik-mcp": {
      "type": "http",
      "url": "https://www.comet.com/opik/api/v1/mcp"
    }
  }
}
```

Restart Claude Code and complete the browser sign-in when prompted, then ask
in the chat: **"list my Opik projects"**.

#### Cursor

Edit `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (project):

```json
{
  "mcpServers": {
    "opik-mcp": {
      "type": "http",
      "url": "https://www.comet.com/opik/api/v1/mcp"
    }
  }
}
```

Reload Cursor and complete the browser sign-in when prompted.

#### VS Code Copilot

Create or open `.vscode/mcp.json` in your workspace:

```json
{
  "servers": {
    "opik-mcp": {
      "type": "http",
      "url": "https://www.comet.com/opik/api/v1/mcp"
    }
  }
}
```

Reload the window and complete the browser sign-in when prompted.

#### Codex

Add the server with one command:

```bash
codex mcp add opik-mcp --url https://www.comet.com/opik/api/v1/mcp
```

Confirm with `codex mcp get opik-mcp`, start a new session and complete the
browser sign-in when prompted.

#### Claude.ai and Claude Desktop

Claude calls a remote MCP server a **custom connector** and adds it through the
UI rather than a config file.

* On a Pro or Max plan: **Customize → Connectors → + → Add custom connector**,
  then paste the URL above. Leave Advanced settings empty. Opik registers your
  client automatically.
* On Team or Enterprise, an owner adds it in
  **Organization settings → Connectors → Add → Custom → Web**.

Claude then opens the Opik sign-in in your browser. Until you finish signing in,
the connector lists only the `authenticate` and `complete_authentication`
tools. The rest appear afterwards.

Claude reaches the server from Anthropic's cloud, not from your machine, so a
self-hosted deployment also has to be reachable from the public internet. One
on `localhost` or behind a VPN is out of reach, so use the
[local server](#local-server-uvx) with a desktop client instead.

### Local server (uvx)

The local server runs on demand via `uvx opik-mcp` (requires
[`uv`](https://docs.astral.sh/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

Add the server with one command:

```bash
claude mcp add --transport stdio opik-mcp \
  --env OPIK_API_KEY=<your-key> \
  --env OPIK_WORKSPACE=<your-workspace> \
  -- uvx opik-mcp
```

Or edit `~/.claude.json` directly:

```json
{
  "mcpServers": {
    "opik-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": ["opik-mcp"],
      "env": {
        "OPIK_API_KEY": "<your-key>",
        "OPIK_WORKSPACE": "<your-workspace>"
      }
    }
  }
}
```

Restart Claude Code, verify with `/mcp` (`opik-mcp` should appear as
connected), and then ask in the chat: **"list my Opik projects"**.

#### Cursor

Edit `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (project), or open
**Cmd+Shift+J → Features → Model Context Protocol**:

```json
{
  "mcpServers": {
    "opik-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": ["opik-mcp"],
      "env": {
        "OPIK_API_KEY": "<your-key>",
        "OPIK_WORKSPACE": "<your-workspace>"
      }
    }
  }
}
```

Reload Cursor; the green dot next to `opik-mcp` in the MCP panel confirms
the connection. Ask in chat: **"list my Opik projects"**.

**Cursor 60s timeout.** Cursor enforces a hard tool-call timeout that does
not reset on progress notifications, so reads of very large traces can fail
there. See [Troubleshooting](#troubleshooting).

#### VS Code Copilot

Create or open `.vscode/mcp.json` in your workspace (or run the
**MCP: Open User Configuration** command to add it globally):

```json
{
  "servers": {
    "opik-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": ["opik-mcp"],
      "env": {
        "OPIK_API_KEY": "<your-key>",
        "OPIK_WORKSPACE": "<your-workspace>"
      }
    }
  }
}
```

Reload the window. The Copilot Chat **MCP** indicator shows `opik-mcp` once
the server is reachable. Ask in chat: **"list my Opik projects"**.

#### Codex

Add the server with one command:

```bash
codex mcp add opik-mcp \
  --env OPIK_API_KEY=<your-key> \
  --env OPIK_WORKSPACE=<your-workspace> \
  -- uvx opik-mcp
```

Or add an `[mcp_servers.opik-mcp]` table to `~/.codex/config.toml`:

```toml
[mcp_servers.opik-mcp]
command = "uvx"
args = ["opik-mcp"]

[mcp_servers.opik-mcp.env]
OPIK_API_KEY = "<your-key>"
OPIK_WORKSPACE = "<your-workspace>"
```

Confirm with `codex mcp get opik-mcp`, then ask in the chat:
**"list my Opik projects"**.

`uvx opik mcp configure --ai-client codex` drives the `codex` CLI rather than editing
`config.toml`, so your comments and formatting are left alone. If the `codex`
CLI isn't on your `PATH` it tells you to add the table by hand instead of
rewriting your TOML.

#### opencode

Edit `~/.config/opencode/opencode.json` (or the file in
`$OPENCODE_CONFIG_DIR`). Note that opencode uses its own vocabulary: `local`
rather than `stdio`, one `command` list holding the executable and its
arguments, and `environment` rather than `env`:

```json
{
  "mcp": {
    "opik-mcp": {
      "type": "local",
      "command": ["uvx", "opik-mcp"],
      "environment": {
        "OPIK_API_KEY": "<your-key>",
        "OPIK_WORKSPACE": "<your-workspace>"
      },
      "enabled": true
    }
  }
}
```

Restart opencode, then ask in the chat: **"list my Opik projects"**.

#### MCP Inspector

For manual testing or debugging, run the inspector against `opik-mcp`:

```bash
OPIK_API_KEY=<your-key> OPIK_WORKSPACE=<your-workspace> \
  npx @modelcontextprotocol/inspector uvx opik-mcp
```

The inspector opens in your browser and lets you call each tool directly.

**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`, then `read` on 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 `write` with `score.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: `/mcp` in Claude
  Code, the MCP settings panel in Cursor, `codex mcp login opik-mcp` in 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.

#### The client lists only \`authenticate\` and \`complete\_authentication\`

You are connected but not signed in. Those two tools are how you sign in.

* Ask your assistant to authenticate, or run the `authenticate` tool, and
  finish in the browser tab it opens.
* In Claude Code, run `/mcp` and choose Authenticate.
* The other tools appear once the sign-in completes.

#### 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, run `uvx opik mcp configure`
  again. 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_KEY` and `OPIK_WORKSPACE` in the
  environment, or through `~/.opik.config` from an earlier `uvx 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, then
  `uvx opik mcp configure` again, then a new session.
* `✗ OUT OF SYNC` in `uvx opik mcp status` means 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 configure` from 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](#quick-setup-with-the-opik-cli).
* 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 --help` in a terminal to see the real error.

#### The server keeps starting an old version

Opik SDK 2.0.60 through 2.2.44 ran `uv tool install opik-mcp` while setting up
the MCP server, which leaves `opik-mcp` permanently installed as a uv tool.
While it is there, `uvx opik-mcp` starts that copy rather than the published
one, on every restart.

* Re-run `uvx opik mcp configure`. It spots the leftover install and offers to
  remove it; say yes, then start a new session in your client.
* Or remove it yourself with `uv tool uninstall opik-mcp`.

Opik never removes it without asking — if you pinned that version on purpose,
answer no and it stays.

#### 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.

#### Can I use Opik from Claude.ai, Claude Desktop or Cowork?

Yes, as a custom connector. Add `https://www.comet.com/opik/api/v1/mcp` under
**Customize → Connectors → Add custom connector**, or under
**Organization settings → Connectors** on Team and Enterprise. Claude opens the
Opik sign-in in your browser. This gives you the MCP server; the skill pack is
for coding agents only. [Manual setup](#hosted-server-opik-cloud) has the steps
and the self-hosted caveat.

#### 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](#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.