@arizeai/phoenix-mcp
OfficialThe Arize Phoenix MCP Server provides a unified interface for interacting with the Arize Phoenix platform. With this server, you can:
Prompts Management: Create, list, update, and iterate on prompts, including their templates, model configurations, and invocation parameters. Get specific prompt versions (latest, by ID, by tag).
Datasets: Explore datasets, retrieve examples, and add synthetically generated examples to cover edge cases.
Experiments: List and retrieve experiment results, including metadata, outputs, and annotations for evaluating model performance.
Tags and Versions: Manage prompt versions by adding tags, listing versions, and fetching specific versions.
Integration: Easily integrate with clients like Claude Desktop and Cursor using
npx.Open-Source: Extend functionality by contributing to the open-source project.
Enables environment variable configuration for development, allowing secure management of API keys and base URLs
Provides open-source access to the Phoenix MCP implementation, allowing for contributions and customizations
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@arizeai/phoenix-mcplist my recent prompts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Phoenix MCP Server is an implementation of the Model Context Protocol for the Arize Phoenix platform. It provides a unified interface to Phoenix's capabilities.
You can use Phoenix MCP Server for:
Projects Management: List and explore projects that organize your observability data
Traces, Spans & Annotations: Retrieve traces, spans, and annotation configs for analysis and debugging
Sessions: Explore conversation flows and session-level annotations
Prompts Management: Create, list, update, and iterate on prompts
Datasets: Explore datasets and synthesize new examples
Experiments: Pull experiment results and visualize them with the help of an LLM
Don't see a use-case covered? @arizeai/phoenix-mcp is open-source! Issues and PRs welcome.
Installation
This MCP server can be used with npx and can be directly integrated with clients like Claude Desktop, Cursor, and more.
{
"mcpServers": {
"phoenix": {
"command": "npx",
"args": [
"-y",
"@arizeai/phoenix-mcp@latest",
"--baseUrl",
"https://my-phoenix.com",
"--apiKey",
"your-api-key"
]
}
}
}Related MCP server: @prompthub/mcp
Development
Install
This package is managed via a pnpm workspace.
// From the /js/ directory
pnpm install
pnpm buildThis only needs to be repeated if dependencies change or there is a change to the phoenix-client.
Building
To build the project:
pnpm buildDevelopment Mode
To run in development mode:
pnpm devDebugging
You can build and run the MCP inspector using the following:
pnpm inspectEnvironment Variables
When developing, the server requires the following environment variables:
PHOENIX_API_KEY: Your Phoenix API keyPHOENIX_ENDPOINT: The base URL for PhoenixPHOENIX_PROJECT: Optional default project for project-scoped tools (alias:PHOENIX_PROJECT_NAME)PHOENIX_CLIENT_HEADERS: Optional JSON-encoded request headers
Make sure to set these in a .env file. See .env.example.
At runtime the server also discovers the nearest .env.phoenix file at or
above the working directory. Process environment variables and command-line
options take precedence. If a higher-priority API key is paired with an
endpoint from the file, the server warns once and continues. Set
PHOENIX_DISCOVER_CONFIG=false to disable discovery.
Tool Coverage
The MCP server covers the main operational Phoenix workflows:
Prompts — list-prompts, get-prompt, get-latest-prompt, get-prompt-by-identifier, get-prompt-version, list-prompt-versions, get-prompt-version-by-tag, list-prompt-version-tags, add-prompt-version-tag, upsert-prompt
Projects — list-projects, get-project
Traces — list-traces, get-trace
Spans — get-spans, get-span-annotations
Sessions — list-sessions, get-session
Annotation Configs — list-annotation-configs
Datasets — list-datasets, get-dataset, get-dataset-examples, get-dataset-experiments, add-dataset-examples
Experiments — list-experiments-for-dataset, get-experiment-by-id
For Phoenix documentation search, use the separate Phoenix Docs MCP server instead of this package.
Community
Join our community to connect with thousands of AI builders:
🌍 Join our Slack community.
📚 Read the Phoenix documentation.
💡 Ask questions and provide feedback in the #phoenix-support channel.
🌟 Leave a star on our GitHub.
🐞 Report bugs with GitHub Issues.
𝕏 Follow us on 𝕏.
💼 Follow us on LinkedIn.
🗺️ Check out our roadmap to see where we're heading next.
License
Apache 2.0
Available Tools
27 toolsadd-dataset-examplesA
Add examples to an existing dataset.
This tool adds one or more examples to an existing dataset. Each example includes an input, output, and metadata. The metadata will automatically include information indicating that these examples were synthetically generated via MCP. When calling this tool, check existing examples using the "get-dataset-examples" tool to ensure that you are not adding duplicate examples and following existing patterns for how data should be structured.
Example usage: Look at the analyze "my-dataset" and augment them with new examples to cover relevant edge cases
Expected return: Confirmation of successful addition of examples to the dataset.
Inputs: examples (required), dataset_name (required).
add-prompt-version-tagA
Add a tag to a specific prompt version. The operation returns no content on success (204 status code).
Example usage: Tag prompt version 'promptversionid1234' with the name 'production'
Expected return: Confirmation message of successful tag addition
Inputs: name (required), prompt_version_id (required), description.
get-datasetC
Get dataset metadata by name or ID.
Example usage: Show me the dataset "my-dataset"
Expected return: A dataset object with metadata and version information.
Inputs: dataset_id, dataset_name.
get-dataset-examplesB
Get examples from a dataset.
Dataset examples are an array of objects that each include an input, (expected) output, and optional metadata. These examples are typically used to represent input to an application or model (e.g. prompt template variables, a code file, or image) and used to test or benchmark changes.
Example usage: Show me all examples from dataset RGF0YXNldDox
Expected return: Object containing dataset ID, version ID, and array of examples.
Inputs: splits, dataset_id, version_id, dataset_name.
get-dataset-experimentsC
List experiments run on a dataset.
Example usage: Show me all experiments run on dataset RGF0YXNldDox
Expected return: Array of experiment objects with metadata.
Inputs: limit, dataset_id, dataset_name.
get-experiment-by-idA
Get an experiment by its ID.
The tool returns experiment metadata in the first content block and a JSON object with the experiment data in the second. The experiment data contains both the results of each experiment run and the annotations made by an evaluator to score or label the results, for example, comparing the output of an experiment run to the expected output from the dataset example.
Example usage: Show me the experiment results for experiment RXhwZXJpbWVudDo4
Expected return: Object containing experiment metadata and results.
Inputs: experiment_id (required).
get-latest-promptA
Get the latest version of a prompt. Returns the prompt version with its template, model configuration, and invocation parameters.
Example usage: Get the latest version of a prompt named 'article-summarizer'
Expected return: Prompt version object with template and configuration. Example: { "description": "Initial version", "model_provider": "OPENAI", "model_name": "gpt-3.5-turbo", "template": { "type": "chat", "messages": [ { "role": "system", "content": "You are an expert summarizer. Create clear, concise bullet points highlighting the key information." }, { "role": "user", "content": "Please summarize the following {{topic}} article:\n\n{{article}}" } ] }, "template_type": "CHAT", "template_format": "MUSTACHE", "invocation_parameters": { "type": "openai", "openai": {} }, "id": "promptversionid1234" }
Inputs: prompt_identifier (required).
get-projectC
Get a project by name or ID.
Example usage: Show me the project "default"
Expected return: A single project object with metadata.
Inputs: project_identifier (required).
get-promptC
Get a prompt using a single MCP-native interface.
Provide a prompt identifier to fetch the latest version, or add a tag or versionId to select a specific version.
Example usage: Get prompt "article-summarizer" Get prompt "article-summarizer" with tag "production" Get prompt "article-summarizer" using version "promptversionid1234"
Expected return: Prompt version object with template and configuration.
Inputs: prompt_identifier (required), tag, version_id.
get-prompt-by-identifierA
Get a prompt's latest version by its identifier (name or ID). Returns the prompt version with its template, model configuration, and invocation parameters.
Example usage: Get the latest version of a prompt with name 'article-summarizer'
Expected return: Prompt version object with template and configuration.
Inputs: prompt_identifier (required).
get-prompt-versionA
Get a specific version of a prompt using its version ID. Returns the prompt version with its template, model configuration, and invocation parameters.
Example usage: Get a specific prompt version with ID 'promptversionid1234'
Expected return: Prompt version object with template and configuration.
Inputs: prompt_version_id (required).
get-prompt-version-by-tagA
Get a prompt version by its tag name. Returns the prompt version with its template, model configuration, and invocation parameters.
Example usage: Get the 'production' tagged version of prompt 'article-summarizer'
Expected return: Prompt version object with template and configuration.
Inputs: tag_name (required), prompt_identifier (required).
get-sessionA
Get a single session by GlobalID or user-provided session_id.
Example usage: Show me session "chat-123"
Expected return: A session object and, optionally, its annotations.
Inputs: session_identifier (required), include_annotations.
get-span-annotationsA
Get span annotations for a list of span IDs.
Span annotations provide additional metadata, scores, or labels for spans. They can be created by humans, LLMs, or code and help in analyzing and categorizing spans.
Example usage: Get annotations for spans ["span1", "span2"] from project "my-project" Get quality score annotations for span "span1" from project "my-project"
Expected return: Object containing annotations array and optional next cursor for pagination. Example: { "annotations": [ { "id": "annotation123", "span_id": "span1", "name": "quality_score", "result": { "label": "good", "score": 0.95, "explanation": null }, "annotator_kind": "LLM", "metadata": { "model": "gpt-4" } } ], "nextCursor": "cursor_for_pagination" }
Inputs: span_ids (required), limit, cursor, project_identifier, +2 more.
get-spansB
Get spans from a project with filtering criteria.
Spans represent individual operations or units of work within a trace. They contain timing information, attributes, and context about the operation being performed.
Example usage: Get recent spans from project "my-project" Get spans in a time range from project "my-project"
Expected return: Object containing spans array and optional next cursor for pagination. Example: { "spans": [ { "id": "span123", "name": "http_request", "context": { "trace_id": "trace456", "span_id": "span123" }, "start_time": "2024-01-01T12:00:00Z", "end_time": "2024-01-01T12:00:01Z", "attributes": { "http.method": "GET", "http.url": "/api/users" } } ], "nextCursor": "cursor_for_pagination" }
Inputs: limit, names, cursor, end_time, +7 more.
get-traceA
Get a single trace by its exact trace ID within a project.
Example usage: Show me trace "abc123def456" from project "default"
Expected return: A trace object with all spans that belong to the trace.
Inputs: trace_id (required), project_identifier, include_annotations.
list-annotation-configsB
List Phoenix annotation configs.
Annotation configs define the available human or automated labels, scores, and freeform annotation types.
Example usage: Show me all annotation configs
Expected return: Array of annotation config objects.
Inputs: limit.
list-datasetsA
Get a list of all datasets.
Datasets are collections of 'dataset examples' that each example includes an input, (expected) output, and optional metadata. They are primarily used as inputs for experiments.
Example usage: Show me all available datasets
Expected return: Array of dataset objects with metadata. Example: [ { "id": "RGF0YXNldDox", "name": "my-dataset", "description": "A dataset for testing", "metadata": {}, "created_at": "2024-03-20T12:00:00Z", "updated_at": "2024-03-20T12:00:00Z" } ]
Inputs: limit.
list-experiments-for-datasetB
Get a list of all the experiments run on a given dataset.
Experiments are collections of experiment runs, each experiment run corresponds to a single
dataset example. The dataset example is passed to an implied task which in turn
produces an output.
Example usage: Show me all the experiments I've run on dataset RGF0YXNldDox
Expected return: Array of experiment objects with metadata. Example: [ { "id": "experimentid1234", "dataset_id": "datasetid1234", "dataset_version_id": "datasetversionid1234", "repetitions": 1, "metadata": {}, "project_name": "Experiment-abc123", "created_at": "YYYY-MM-DDTHH:mm:ssZ", "updated_at": "YYYY-MM-DDTHH:mm:ssZ" } ]
Inputs: limit, dataset_id, dataset_name.
list-projectsC
Get a list of all projects.
Projects are containers for organizing traces, spans, and other observability data. Each project has a unique name and can contain traces from different applications or experiments.
Example usage: Show me all available projects
Expected return: Array of project objects with metadata. Example: [ { "id": "UHJvamVjdDox", "name": "default", "description": "Default project for traces" }, { "id": "UHJvamVjdDoy", "name": "my-experiment", "description": "Project for my ML experiment" } ]
Inputs: limit, cursor, include_experiment_projects.
list-promptsC
Get a list of all the prompts.
Prompts (templates, prompt templates) are versioned templates for input messages to an LLM. Each prompt includes both the input messages, but also the model and invocation parameters to use when generating outputs.
Returns a list of prompt objects with their IDs, names, and descriptions.
Example usage: List all available prompts
Expected return: Array of prompt objects with metadata. Example: [{ "name": "article-summarizer", "description": "Summarizes an article into concise bullet points", "source_prompt_id": null, "id": "promptid1234" }]
Inputs: limit.
list-prompt-versionsB
Get a list of all versions for a specific prompt. Returns versions with pagination support.
Example usage: List all versions of a prompt named 'article-summarizer'
Expected return: Array of prompt version objects with IDs and configuration.
Inputs: prompt_identifier (required), limit.
list-prompt-version-tagsB
Get a list of all tags for a specific prompt version. Returns tag objects with pagination support.
Example usage: List all tags associated with prompt version 'promptversionid1234'
Expected return: Array of tag objects with names and IDs.
Inputs: prompt_version_id (required), limit.
list-sessionsB
List sessions for a project.
Sessions represent conversation flows grouped across traces.
Example usage: Show me the last 10 sessions for project "default"
Expected return: Array of session objects ordered by the requested sort order.
Inputs: limit, order, project_identifier.
list-tracesB
List traces for a project.
This tool groups project spans into traces and returns the newest traces first.
Example usage: Show me the last 10 traces for project "default" Show me recent traces from the last 30 minutes for project "checkout"
Expected return: Array of trace objects with grouped spans and summary timing information.
Inputs: limit, since, last_n_minutes, project_identifier, +1 more.
phoenix-supportA
Get help with Phoenix and OpenInference.
Tracing AI applications via OpenInference and OpenTelemetry
Phoenix datasets, experiments, and prompt management
Phoenix evals and annotations
Use this tool when you need assistance with Phoenix features, troubleshooting, or best practices.
Expected return: Expert guidance about how to use and integrate Phoenix
Inputs: query (required).
upsert-promptC
Create or update a prompt with its template and configuration. Creates a new prompt and its initial version with specified model settings.
Example usage: Create a new prompt named 'email_generator' with a template for generating emails
Expected return: A confirmation message of successful prompt creation
Inputs: name (required), template (required), model_name, description, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 27 tools
Multiple tools for fetching prompts (get-prompt-by-identifier, get-prompt, get-latest-prompt) have overlapping functionality, which could cause confusion. Other tools are distinct.
Tool names follow a consistent verb-noun pattern with hyphens (e.g., list-prompts, get-dataset). Minor deviations like get-latest-prompt vs get-prompt are present but overall consistent.
27 tools cover multiple domains (prompts, datasets, experiments, traces, etc.) and are justified given the breadth of functionality, though slightly on the high side.
The tool surface covers core operations for prompts, datasets, and observability, but lacks delete operations for prompts and datasets, and does not include create dataset or project.
Maintenance
Related MCP Connectors
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseDqualityDmaintenanceA ready-to-use starter implementation of the Model Context Protocol (MCP) server that enables applications to provide standardized context for LLMs with sample resources, tools, and prompts.25 npm1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for PromptHub. Enables publishing, fetching, listing, updating, and searching prompt repositories from Claude Code or Codex.13 npmMIT

synapse-mcpofficial
AlicenseNot gradedqualityBmaintenanceA Model Context Protocol (MCP) server that enables AI agent access to Synapse entities such as Datasets, Projects, Folders, Files, Tables, and more.4MIT
picsellia-mcpofficial
FlicenseNot gradedqualityDmaintenanceMCP server that wraps the Picsellia Python SDK, giving AI assistants access to computer vision platform capabilities such as datasets, experiments, models, deployments, and monitoring.-