NewAgent Observability is live.
Back to directory
Arize Phoenix logo

Arize Phoenix MCP server: 27 tools for traces

Phoenix exposes traces and evaluations for your own agents, and it reaches the traces themselves, which most evaluation connectors do not.

Connector
Official, local
Coverage
Traces, spans, sessions, prompts, datasets, experiments
Tools
27, all on by default
Biggest risk for an agent
Prompt and dataset writes are on by default

Last verified 1 September 2026 · from Arize's repository, its documentation and the server's own tools/list response

This page is one of 90 in a directory of monitoring and developer tools. Each page checks what an AI coding agent can get out of the tool through its MCP server, the connector that lets the agent query the tool directly.

Summary

Arize Phoenix publishes an official MCP server with 27 tools, and unlike most evaluation connectors it reaches the traces themselves: get-trace, get-spans, list-sessions are all first-class.

It ships inside the Arize-ai/phoenix monorepo rather than as a standalone repository, so its activity signal is the platform's rather than a small side project's.

It works against Phoenix Cloud or a self-hosted Phoenix. Phoenix is open source, so this is one of the few agent-observability connectors you can point at infrastructure you run yourself.

What is the Arize Phoenix MCP server?

It is Arize's server for the Model Context Protocol. Phoenix records what your own LLM applications did, so the agent gains tools for reading those traces, spans and sessions back.

The 27 tools group into four areas: prompts and their versions, projects with traces and spans, datasets and experiments, and annotation configuration. The trace tools are what distinguish it from evaluation-only connectors.

Phoenix is open source and self-hostable, and the same server points at either a self-hosted instance or Phoenix Cloud through PHOENIX_ENDPOINT.

Phoenix covers agent observability broadly, reaches part of the way into release through prompt versioning, and reaches nothing in code review, production observability or cost.

Part of the workWhat Arize Phoenix has hereCan an agent reach it
Code, tests & reviewNoneNo code-review product
CI & releasePrompt versions and tagsPartial. No CI product. Prompt versions carry tags, and promoting a tag is how a prompt change ships
Production observabilityNoneNo infrastructure telemetry. Phoenix traces your LLM application, not its hosts
Agent observability & evalsTraces, spans, sessions, datasets, experiments, annotationsYes. Core strength, and the product's whole purpose
AI cost managementNoneNo token or model spend data

In practice, Phoenix answers questions about what your LLM application did, step by step, and nothing about the systems it ran on. An agent connected here can pull the trace behind a bad answer, read every span in it, and check how it scored. It cannot tell you the retrieval service was slow, so this connector pairs with an infrastructure one.

What can an AI agent do with Arize Phoenix?

TaskToolsWorksWatch out for
Read the trace behind a bad answerget-trace get-spans list-tracesYesTraces are scoped to a project; set PHOENIX_PROJECT or name it per call
Follow a multi-turn conversationlist-sessions get-sessionYesSessions exist only if the code you instrumented sets a session identifier
Check how a run was scoredget-span-annotations list-annotation-configsYesAnnotations are what an evaluator or a human wrote, not a live evaluation
Find which prompt version is livelist-prompts get-latest-prompt get-prompt-version-by-tagYesTags are how versions are promoted, so read the tag rather than the latest version
Ship a prompt changeupsert-prompt add-prompt-version-tagYesWrites, on by default, and tagging a version can change what production uses
Build a dataset from real traceslist-datasets add-dataset-examples get-dataset-experimentsYesDataset writes are on by default; there is no read-only mode
Investigate a production incidentNoNo metrics, logs or traces from your infrastructure

27 tools registered, all on by default

Prompts8
list-promptsget-promptget-prompt-by-identifierget-latest-promptget-prompt-versionget-prompt-version-by-taglist-prompt-versionslist-prompt-version-tags
Prompts, write2
upsert-promptadd-prompt-version-tag
Support1
phoenix-support
Traces and spans4
list-tracesget-traceget-spansget-span-annotations
Sessions2
list-sessionsget-session
Projects2
list-projectsget-project
Datasets3
list-datasetsget-datasetget-dataset-examples
Datasets, write1
add-dataset-examples
Experiments3
list-experiments-for-datasetget-experiment-by-idget-dataset-experiments
Annotations1
list-annotation-configs

Counted from the server's own tools/list response on the published npm package, 21 August 2026. There is no read-only mode, so the write groups are gated only by your client.

What connecting costs before the first question

A context window is the amount of text a model can hold at once, and connecting uses some of it before the agent asks anything. Every tool the server registers sends its name, description and input schema to the model when the session starts. The tool list is charged whether or not a single tool is called.

Phoenix is efficient for its reach: 27 tools for about 4,769 tokens, which is less than LangSmith's 15 tools cost and less than Helicone's 2 cost. Its descriptions average 417 characters, short enough that the tool count, not the description length, drives the figure.

Tool setToolsTokens (GPT-5.6, GPT-5.5)Tokens (GPT-4, GPT-3.5)Tokens (Claude Haiku 4.5 to Opus 5)Share of a 200,000-token window
Every tool, as registered274,769 to 6,3554,716 to 6,3606,732 to 8,6672.4% to 4.3%

Encodings: GPT-5.6, GPT-5.5 o200k_base; GPT-4, GPT-3.5 cl100k_base; Claude Haiku 4.5 to Opus 5 count_tokens. Counted 21 August 2026 from tools/list on the published @arizeai/phoenix-mcp package. It was run locally with a placeholder URL and key.

Registration is static, so no Phoenix instance was involved. Figures cover name, description and input schema. The two models in column one share the o200k_base encoding, so they get one count. The spread is formatting, about 33%. Reasoning tokens are output, spent per request. This count is input, charged once at connection.

The Claude figures are measured rather than encoded. Anthropic publishes no local tokenizer. The definitions were sent to the API's count_tokens endpoint, and a no-tools baseline was subtracted. The range covers two tokenizer generations rather than two serializations. Haiku 4.5 and Opus 4.6 sit at the low end. Opus 5 and Sonnet 5 sit at the high end. The gap between them is about a third.

Can Arize Phoenix watch your own AI agents?

Phoenix is an agent-observability product, so this table asks how much of that surface the connector actually reaches. Counted from the server's own tools/list response on 21 August 2026.

SignalCoveredNotes
Trace and session trackingYesget-spans, get-trace and list-traces reach spans and whole traces, and list-sessions groups them
Eval scores on recorded trafficPartialget-span-annotations and list-annotation-configs read the annotations that evaluation labels are written into. No tool runs an evaluation
Prompt version trackingYesEight tools cover prompts and versions, including list-prompt-versions, get-prompt-version-by-tag and add-prompt-version-tag
Offline experimentsYeslist-experiments-for-dataset, get-experiment-by-id and add-dataset-examples cover dataset-backed runs
Token and cost trackingNoNo tool in the 27 returns a token count or a cost figure

Arize Phoenix MCP server limits: where answers come back incomplete

The limits below follow from how Phoenix scopes data rather than from anything failing.

The agent says: There are no traces. It looked in the wrong project.

Trace and span tools are scoped to a Phoenix project. PHOENIX_PROJECT sets a default, and without it the agent must name the project in each call. A query against the wrong project returns a real, empty result with nothing to distinguish it from an idle period.

Guard: Set PHOENIX_PROJECT, and have the agent state which project it queried alongside any negative answer.

The agent says: I tagged that prompt version. That may be what production reads.

Phoenix permits upsert-prompt and add-prompt-version-tag without a read-only mode. If your application resolves prompts by tag at run time, moving a tag is a production change made from a chat window.

Guard: Allowlist read tools only. In Claude Code, run /permissions and leave upsert-prompt and the tag tools unapproved.

The agent says: This span has no evaluation. Nothing has written one yet.

get-span-annotations reads annotations that an evaluator or a human has already recorded. The connector does not run evaluations, so a span that has not been scored returns nothing, and that is not the same as scoring badly.

Guard: Treat an absent annotation as unscored rather than as a poor score, and check that your evaluators are running.

How to configure Arize Phoenix MCP for agents

  1. 1

    Set a default project

    PHOENIX_PROJECT scopes the trace and span tools. Without it the agent must name a project in every call, and a wrong name returns an empty result rather than an error.

  2. 2

    Point at the right Phoenix

    PHOENIX_ENDPOINT selects Phoenix Cloud or your self-hosted instance, which is what makes this connector usable where hosted-only tools are not.

  3. 3

    Allowlist read tools

    Three of the twenty-seven write, and moving a prompt tag changes which prompt version production resolves, if your application looks prompts up by tag.

  4. 4

    Budget the context

    Twenty-seven tools cost about 4,769 tokens, roughly 2.4% of a 200,000-token window, which is cheap for the reach.

Paste this into your agent’s instructions

Phoenix scopes almost everything to a project, so its silent failure is a query against the wrong one. The block makes the agent name the project alongside any negative answer.

Terminal
When you answer using Phoenix MCP tools, state:
- The project you queried, and the time range.
- How many traces or spans you retrieved against the limit
  you asked for.
- Whether a span carried annotations. An unannotated span has
  not been scored, which is not the same as scoring badly.
Never state that data does not exist. State that none was
returned under the constraints above.
Write your answer in ASD-STE100 Simplified Technical
English. Use short sentences with one idea in each.

Do you need the MCP server at all?

Not always. Phoenix has a documented REST API and Python client, and a coding agent can call either with the same key.

The connector's advantage is trace navigation. The agent calls list-projects to fix the scope, then list-traces, then get-spans, then get-span-annotations. Tool descriptions let it make those calls in the right order without being told the shape of the data.

Because Phoenix is self-hostable, the connector is also usable where a hosted-only agent-observability tool would not be an option at all.

Connect the server for open-ended trace investigation. Use the client library for scripted evaluation runs.

Arize Phoenix MCP server setup

The package runs with npx and needs PHOENIX_ENDPOINT plus an API key in PHOENIX_API_KEY. PHOENIX_PROJECT sets a default project for the project-scoped tools.

The same package works against Phoenix Cloud or a self-hosted Phoenix; only the base URL changes.

Claude Code

Setting PHOENIX_PROJECT avoids the commonest empty-result mistake.

Terminal
claude mcp add-json "phoenix" '{"command":"npx",
  "args":["-y","@arizeai/phoenix-mcp"],
  "env":{"PHOENIX_ENDPOINT":"https://app.phoenix.arize.com",
         "PHOENIX_API_KEY":"<your-key>",
         "PHOENIX_PROJECT":"<your-project>"}}'

Cursor

In ~/.cursor/mcp.json for all projects, or .cursor/mcp.json in one.

Terminal
{"mcpServers":{"phoenix":{"command":"npx",
  "args":["-y","@arizeai/phoenix-mcp"],
  "env":{"PHOENIX_ENDPOINT":"https://app.phoenix.arize.com",
         "PHOENIX_API_KEY":"<your-key>"}}}}

Codex CLI

Codex reads TOML, so the JSON blocks above will not transfer.

Terminal
[mcp_servers.phoenix]
command = "npx"
args = ["-y", "@arizeai/phoenix-mcp"]
env = { PHOENIX_ENDPOINT = "https://app.phoenix.arize.com", PHOENIX_API_KEY = "<your-key>" }

Every other client

Each block below is the configuration for one client, with the file path and the key that client expects.

Claude Desktop

macOS ~/Library/Application Support/Claude/claude_desktop_config.json. Windows %APPDATA%\Claude\claude_desktop_config.json. There is no CLI. Edit through Settings, Developer, Edit Config.

Quit and restart fully for changes to load. Paths in args must be absolute. Logs at ~/Library/Logs/Claude/mcp.log.

Terminal
{"mcpServers":{"phoenix":{"command":"npx",
  "args":["-y","@arizeai/phoenix-mcp"],
  "env":{"PHOENIX_ENDPOINT":"https://app.phoenix.arize.com","PHOENIX_API_KEY":"<your-key>"}}}}
Gemini CLI

~/.gemini/settings.json globally, or .gemini/settings.json per project. Key mcpServers. CLI: gemini mcp add.

Terminal
{"mcpServers":{"phoenix":{"command":"npx",
  "args":["-y","@arizeai/phoenix-mcp"],
  "env":{"PHOENIX_ENDPOINT":"https://app.phoenix.arize.com","PHOENIX_API_KEY":"<your-key>"}}}}
VS Code Copilot

.vscode/mcp.json per workspace, or your user profile. CLI: code --add-mcp.

Terminal
{"servers":{"phoenix":{"command":"npx",
  "args":["-y","@arizeai/phoenix-mcp"],
  "env":{"PHOENIX_ENDPOINT":"https://app.phoenix.arize.com","PHOENIX_API_KEY":"<your-key>"}}}}

The key is `servers`, not `mcpServers`. VS Code is the only client that uses that name, and copying a config from anywhere else fails silently.

Windsurf

~/.codeium/windsurf/mcp_config.json, which is the path Windsurf documents. Key mcpServers, the same JSON shape as Cursor, carrying the same API key.

Zed

~/.config/zed/settings.json, carrying the same API key as the blocks above.

The key is `context_servers`. Zed does not call them MCP servers in config, so searching its settings for mcp finds nothing.

Google Antigravity

~/.gemini/config/mcp_config.json globally, or .agents/mcp_config.json per project. Key mcpServers. There is no CLI. Use the /mcp overlay in the editor. Supports stdio, streamable HTTP, SSE and websocket.

Terminal
{"mcpServers":{"phoenix":{"command":"npx",
  "args":["-y","@arizeai/phoenix-mcp"],
  "env":{"PHOENIX_ENDPOINT":"https://app.phoenix.arize.com","PHOENIX_API_KEY":"<your-key>"}}}}
Amp (Sourcegraph)

~/.config/amp/settings.json or .amp/settings.json, carrying the same API key. The amp mcp CLI covers approve, doctor and oauth.

The key is `amp.mcpServers`, namespaced. A bare mcpServers block is ignored.

Cline

~/.cline/mcp.json per the docs. The source also reads ~/.cline/data/settings/cline_mcp_settings.json. Key mcpServers, standard JSON shape, carrying the same API key. Supports stdio, streamable HTTP and SSE.

Goose (Block)

~/.config/goose/config.yaml, carrying the same API key.

YAML, and servers are called `extensions`. Goose does not use the MCP vocabulary in config at all. Add one interactively with goose configure, or per session with goose session --with-extension.

Kiro (AWS)

.kiro/settings/mcp.json per workspace, or ~/.kiro/settings/mcp.json globally. Key mcpServers, standard JSON shape, carrying the same API key.

Warp

~/.warp/.mcp.json or .warp/.mcp.json. Key mcpServers, standard shape, carrying the same API key. Also addable through the /agent-add-mcp skill.

JetBrains Junie

.junie/mcp/mcp.json per project, or ~/.junie/mcp/mcp.json. Key mcpServers, carrying the same API key. Use /mcp in the CLI to manage.

Roo Code

.roo/mcp.json per project. The global file is mcp_settings.json, opened from the Roo Code MCP settings view with Edit Global MCP. Key mcpServers, carrying the same API key.

Continue

.continue/mcpServers/*.yaml, one file per server, carrying the same API key.

YAML, and `mcpServers` is a list, not an object. Every JSON client keys servers by name. Continue takes an array, so a converted config will not parse.

Trae

.trae/mcp.json per project, or paste into the UI under Raw Config (JSON). Key mcpServers, standard shape, carrying the same API key.

Devin

Devin has no config file to edit. Servers are added through a web form in the settings UI, and Devin's documentation states you do not need to write or paste JSON. The block below is the shape those fields describe, shown for reference. Either route uses the same API key.

Self-hosted Phoenix

Point the base URL at your own instance. Everything else is the same.

Terminal
PHOENIX_ENDPOINT=http://phoenix.internal:6006 \
PHOENIX_API_KEY=<your-key> \
npx -y @arizeai/phoenix-mcp

Read-only access, permissions and security

  • Three of twenty-seven tools write

    upsert-prompt, add-prompt-version-tag and add-dataset-examples change Phoenix state, and there is no server-side read-only mode.

  • Tagging a prompt version can be a production change

    If your application resolves prompts by tag at run time, moving a tag changes behavior without a deploy.

  • Traces contain your users' inputs

    Phoenix stores prompts and completions, so an agent reading spans is reading whatever your application processed.

  • Self-hosting keeps that data in your infrastructure

    That is the practical reason to prefer it over the hosted option for sensitive workloads.

Troubleshooting

No traces found for a project with traffic
Trace tools are project-scoped. Set PHOENIX_PROJECT, or have the agent name the project in each call and state which one it used.
A span has no annotations
That span has not been scored. The connector reads annotations rather than running evaluations, so an absent annotation is unscored, not a poor score.
401 or 403 on connect
PHOENIX_API_KEY is missing or scoped to another instance. Check PHOENIX_ENDPOINT points at the Phoenix that issued the key.
A prompt change appeared in production
upsert-prompt and add-prompt-version-tag are writes with no read-only mode. Remove them from your client's allowlist.

Arize Phoenix MCP server: Reference

ItemValue
StatusArize-ai/phoenix pushed 1 September 2026 · @arizeai/phoenix-mcp 4.3.5 on npm
Adoption11,272 stars on the monorepo
Package@arizeai/phoenix-mcp on npm, published from the Phoenix monorepo
AuthPHOENIX_API_KEY with PHOENIX_ENDPOINT; PHOENIX_PROJECT sets a default scope
DeploymentPhoenix Cloud or self-hosted, same package
Tools27, all on by default, of which 3 write
Read-onlyNone. Gate the write tools in the client

What engineers report

Phoenix's connector ships inside the main project, so its signals are the platform's rather than a standalone repository's.

What was checkedWhat it shows
Stars, Arize-ai/phoenix11,267
Last push21 August 2026
Package@arizeai/phoenix-mcp, published from the monorepo
Tools27, all on by default
DeploymentPhoenix Cloud or self-hosted, same server

Repository facts from the GitHub API, retrieved 21 August 2026. Tool counts come from the server's own tools/list response on the published npm package.

Should you connect an agent to Arize Phoenix?

Yes. Best for phoenix teams allowlisting read tools and setting a default project.

Strongest fit
Teams on Phoenix who want an agent following a trace to its spans and annotations, especially where Phoenix is self-hosted.
Main advantage
It reaches the traces themselves rather than stopping at evaluations, at a lower context cost than smaller connectors.
Main weakness
No infrastructure telemetry, and everything is scoped to a project the agent has to name correctly.
Operational risk
Prompt and dataset writes are on by default, and moving a prompt tag can change production behavior.

From Oodle

One platform for agent traces and infrastructure

Agent traces usually sit in a different product from the rest of your telemetry, so when a slow database makes an agent slow the symptom is in one tool and the cause is in another. Oodle keeps both in one query surface, from $10 per million spans.

See agent observability

Frequently asked questions

How many tools does the Arize Phoenix MCP server have?

27, all enabled on connection, covering prompts, projects, traces, spans, sessions, datasets, experiments and annotation configuration. Counted from the server's own tools/list response, 21 August 2026.

Does it work with self-hosted Phoenix?

Yes. The same server points at Phoenix Cloud or a self-hosted instance through PHOENIX_ENDPOINT, which is unusual among agent-observability connectors.

Can an agent read individual spans?

Yes. get-trace, get-spans and list-sessions are first-class tools, so the agent can follow a trace step by step rather than reading a summary.

Can it change my prompts?

Yes. upsert-prompt and add-prompt-version-tag are writes and there is no read-only mode. If your application resolves prompts by tag, tagging is a production change.

Does it monitor infrastructure?

No. Phoenix traces LLM applications. Pair it with an observability connector for hosts, containers and databases.

Changelog

  • 1 September 2026. Arize-ai/phoenix last pushed. The monorepo carries 11,272 stars.
  • August 2026. @arizeai/phoenix-mcp published to npm.

Sources

Every number on this page traces to one of these

  1. Repository facts from the GitHub API · Arize-ai/phoenix, retrieved 21 August 2026
  2. Package name, environment variables and tool coverage from the phoenix-mcp README
  3. Tool counts from the server's own tools/list response on the published npm package

Arize Phoenix’s own MCP documentation

Also agent observability and evaluation:

For infrastructure telemetry: