Phoenix MCP Server

Read traces, sessions, datasets and experiments in Arize Phoenix and manage its prompts

Official · Arize AI JavaScript Local · stdio DevOps and monitoringAI and ML

93 popularity score ★ 12k ↓ 1.6k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

Claude CodeTerminal
claude mcp add phoenix -- npx -y @arizeai/phoenix-mcp@latest --baseUrl '<PHOENIX_BASE_URL>' --apiKey '<PHOENIX_API_KEY>'
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "phoenix": {
      "command": "npx",
      "args": [
        "-y",
        "@arizeai/phoenix-mcp@latest",
        "--baseUrl",
        "<PHOENIX_BASE_URL>",
        "--apiKey",
        "<PHOENIX_API_KEY>"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "phoenix": {
      "command": "npx",
      "args": [
        "-y",
        "@arizeai/phoenix-mcp@latest",
        "--baseUrl",
        "<PHOENIX_BASE_URL>",
        "--apiKey",
        "<PHOENIX_API_KEY>"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "phoenix": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@arizeai/phoenix-mcp@latest",
        "--baseUrl",
        "<PHOENIX_BASE_URL>",
        "--apiKey",
        "<PHOENIX_API_KEY>"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.phoenix]
command = "npx"
args = ["-y", "@arizeai/phoenix-mcp@latest", "--baseUrl", "<PHOENIX_BASE_URL>", "--apiKey", "<PHOENIX_API_KEY>"]
Gemini CLITerminal
gemini mcp add --scope user phoenix npx -- -y @arizeai/phoenix-mcp@latest --baseUrl '<PHOENIX_BASE_URL>' --apiKey '<PHOENIX_API_KEY>'

Settings 5

PHOENIX_API_KEY Optional: Phoenix API key; alternative to the --apiKey option.
PHOENIX_ENDPOINT Optional: Base URL of the Phoenix instance; alternative to --baseUrl.
PHOENIX_PROJECT Optional: Default project for project-scoped tools (alias PHOENIX_PROJECT_NAME).
PHOENIX_CLIENT_HEADERS Optional: Extra request headers as a JSON object.
PHOENIX_DISCOVER_CONFIG Optional: Set to false to stop the server reading a .env.phoenix file.

What it does

Phoenix MCP Server connects an MCP client to an Arize Phoenix instance, the LLM observability and evaluation platform made by Arize AI. Through it an assistant can browse the projects in Phoenix, pull traces and spans with their annotations, follow multi-turn sessions, and look at datasets and the experiments run against them. This is useful when debugging an LLM application: the assistant can inspect what a run actually did instead of being told about it.

It also manages Phoenix's prompt store. Prompts can be listed, read by version or tag, tagged, and created or updated with upsert-prompt, and new examples can be appended to a dataset with add-dataset-examples. Every other tool only reads. A separate phoenix-support tool answers questions about Phoenix and OpenInference by forwarding them to a third-party question-answering service.

The server is a small TypeScript package, @arizeai/phoenix-mcp, run with npx over stdio. It points at whatever Phoenix you use, given a base URL and an API key as command-line options or environment variables; it can also pick these up from a .env.phoenix file found at or above the working directory. The package lives inside the main Arize-ai/phoenix repository, which mostly holds the Phoenix platform itself (under the Elastic License 2.0) plus its Python and JavaScript clients; the MCP package carries its own Apache 2.0 licence.

What it needs

RuntimeNode.js

Node.js with npx. A running Arize Phoenix instance you can reach (self-hosted locally, in a container or in the cloud) and its base URL, plus a Phoenix API key when the instance has authentication turned on.

Limits

Covers the main Phoenix workflows only: it cannot delete anything, run evaluations or start experiments, and annotation configs are read-only. It does not search the Phoenix documentation; its README points to the separate Phoenix Docs MCP server for that. Runs over stdio only; there is no hosted endpoint.

Who it suits

Suits teams that already trace their LLM apps into Phoenix and want an assistant to look into traces, spans, sessions and experiment results, or to iterate on prompts kept in Phoenix. Because it is published by Arize and talks to your own instance, the data stays where Phoenix runs. It is of no use without a Phoenix instance, and people on Arize's managed AX platform rather than Phoenix should look to Arize's own tooling for that product.

Tools 27

list-prompts
List the prompts stored in Phoenix
get-prompt
Fetch one prompt
get-latest-prompt
Fetch the newest version of a prompt
get-prompt-by-identifier
Fetch a prompt by its name or ID
get-prompt-version
Fetch a specific prompt version
list-prompt-versions
List all versions of a prompt
get-prompt-version-by-tag
Fetch the prompt version carrying a given tag
list-prompt-version-tags
List the tags on a prompt version
add-prompt-version-tag
Attach a tag to a prompt version
upsert-prompt
Create a prompt or add a new version to an existing one
list-projects
List Phoenix projects
get-project
Fetch details of one project
list-traces
List traces in a project
get-trace
Fetch one trace with its spans
get-spans
Query spans in a project with filters
get-span-annotations
Read the annotations attached to spans
list-sessions
List conversation sessions in a project
get-session
Fetch one session and its turns
list-annotation-configs
List the annotation configurations defined in Phoenix
list-datasets
List datasets
get-dataset
Fetch details of a dataset
get-dataset-examples
Read the examples in a dataset
get-dataset-experiments
List the experiments run on a dataset
add-dataset-examples
Append new examples to a dataset
list-experiments-for-dataset
List experiments for a given dataset
get-experiment-by-id
Fetch an experiment and its results
phoenix-support
Ask a question about Phoenix or OpenInference, answered by the RunLLM service

Similar servers