Set up the MCP server
https://api.braintrust.dev/mcp, the US data plane. If your organization is on the EU data plane, use https://api-eu.braintrust.dev/mcp instead. If you self-host, use the read-only MCP URL in your Data plane settings.Claude Code
Claude Code
Install Claude Code
Set your API key
BRAINTRUST_API_KEY environment variable with your API key:Add the Braintrust MCP server
Claude Desktop
Claude Desktop
Install Claude Desktop
Add the Braintrust MCP server
- Name:
Braintrust - URL:
https://api.braintrust.dev/mcp
Codex (OpenAI)
Codex (OpenAI)
Install Codex
Set your API key
BRAINTRUST_API_KEY environment variable with your API key:Add the Braintrust MCP server
~/.codex/config.toml and add the Braintrust MCP server configuration:BRAINTRUST_API_KEY environment variable.Verify the setup
/mcp command to verify Braintrust is installed and accessible.Cursor
Cursor
Install Cursor
Add the Braintrust MCP server
.cursor/mcp.json:YOUR_BRAINTRUST_API_KEY with your actual API key.Cursor also supports OAuth authentication. If you omit the headers field, Cursor will prompt you to authenticate via OAuth when you first use the server.VS Code
VS Code
Install VS Code
Install an AI assistant extension
- GitHub Copilot
- Continue
- Other MCP-compatible extensions
Add the Braintrust MCP server
-
Workspace settings - Create or edit
.vscode/mcp.jsonin your project: -
User settings - Add to your VS Code user settings (
Cmd+,/Ctrl+,→ Search for “mcp”):
YOUR_BRAINTRUST_API_KEY with your actual API key.VSCode also supports OAuth authentication. If you omit the headers field, VSCode will prompt you to authenticate via OAuth when you first use the server.Restart VS Code
Cmd+R / Ctrl+R) or restart VS Code to apply the configuration.Devin Desktop
Devin Desktop
Install Devin Desktop
Add the Braintrust MCP server
~/.codeium/windsurf/mcp_config.json and add the Braintrust server:YOUR_BRAINTRUST_API_KEY with your actual API key.Restart Devin Desktop
Gemini CLI
Gemini CLI
Install Gemini CLI
Set your API key
BRAINTRUST_API_KEY environment variable with your API key:Add the Braintrust MCP server
~/.gemini/settings.json and add the Braintrust MCP server configuration:YOUR_BRAINTRUST_API_KEY with your actual API key.Verify the setup
/mcp command to confirm the Braintrust server is connected.Antigravity
Antigravity
Install Antigravity
Open the MCP configuration
mcp_config.json (located at ~/.gemini/config/mcp_config.json).Add the Braintrust MCP server
mcp_config.json:YOUR_BRAINTRUST_API_KEY with your actual API key.Refresh the server list
Zed
Zed
Install Zed
Add the Braintrust MCP server
Cmd+, on macOS / Ctrl+, on Windows/Linux) and add the Braintrust server under context_servers:YOUR_BRAINTRUST_API_KEY with your actual API key.If you omit the headers field, Zed prompts you to authenticate via OAuth when you first use the server.Verify the setup
Amp
Amp
Install Amp
Add the Braintrust MCP server
~/.config/amp/settings.json and add the Braintrust server under amp.mcpServers:YOUR_BRAINTRUST_API_KEY with your actual API key.Verify the setup
amp mcp list to confirm the Braintrust server is connected.OpenCode
OpenCode
Install OpenCode
Add the Braintrust MCP server
YOUR_BRAINTRUST_API_KEY with your actual API key.Restart OpenCode
Warp
Warp
Install Warp
Add the Braintrust MCP server
- Name:
Braintrust - URL:
https://api.braintrust.dev/mcp - Header:
Authorization: Bearer YOUR_BRAINTRUST_API_KEY
YOUR_BRAINTRUST_API_KEY with your actual API key.Verify the setup
Other clients
Other clients
Authorization header:Install the Braintrust SDK
Ask your AI assistant to set up Braintrust in your project:docs://sdk-install resource, detects your programming language and frameworks, installs the appropriate SDK, and configures auto-instrumentation. Once complete, it runs your app, verifies traces are being logged, and provides a permalink to view them in Braintrust.
Supported tools
Braintrust MCP provides read and write tools for the data and objects in your Braintrust organization. Your AI assistant can call several of them in one task. For example, it can query your logs, create a scorer from what it finds, and then run an eval to test it. The tools below are grouped by what you would use them for.Explore your data
sql_query- Query experiments, datasets, and logs using SQL. SupportsSELECT,FROM,WHERE,GROUP BY,ORDER BY, andLIMIT.infer_schema- Discover the available fields, data types, and most common values in experiments, datasets, or logs.summarize_experiment- Get aggregated performance metrics for an experiment, optionally compared to a baseline.
- “Show me the last 10 logged requests with errors”
- “Compare accuracy scores between my GPT-4 and Claude experiments”
- “What were the costs for my recent chatbot experiments?”
- “What fields are available in my experiment data?”
- “Show me the schema for production logs”
- “What metadata fields exist in this dataset?”
- “Summarize the results of my latest A/B test”
- “Compare my experiment against the baseline”
sql_query uploads it to object storage and returns an overflow envelope instead of inline rows. The envelope includes an overflow_url (a signed URL to the JSON result), a byte_length, a row_count (when available), and an instructions field describing how to retrieve the full result. Set return_url: true to request a URL even when the result is below the threshold, which is useful when you want to download or save results without putting them in model context. Field values in the result are truncated to preview_length characters (1024 by default). Set preview_length: -1 to include untruncated field values.
See SQL for query syntax, and View logs for the equivalent in the UI.
Find and share objects
list_recent_objects- List recently created projects, experiments, datasets, prompts, or functions you have access to.resolve_object- Convert names to IDs or vice versa, and parse Braintrust URLs. Useful for looking up IDs before querying.generate_permalink- Generate a direct web link to a Braintrust object for sharing or bookmarking.
- “Show me my recent experiments in the ‘chatbot’ project”
- “List datasets in the recommendation engine project”
- “What projects do I have access to?”
- “Find the ID for my ‘sentiment-analysis’ experiment”
- “What’s the name of experiment abc123?”
- “Parse this Braintrust URL and tell me what object it points to”
- “Create a link to share my experiment results”
- “Generate a permalink to the customer-reviews dataset”
Configure Topics
These tools configure the Topics pipeline, which preprocesses traces into text, extracts facets from that text, and clusters the results. Each one expects your assistant to load thebraintrust/topics-workflow skill first.
create_preprocessor- Create a versioned preprocessor from inline JavaScript that converts raw trace data into text.test_preprocessor_on_trace- Run a saved, global, or inline preprocessor on up to 50 span, trace, or group references without writing to the source trace.create_facet- Create a versioned facet that extracts a short summary from spans or traces. Facet extraction always uses Braintrust’s built-in facet model.test_facet_on_trace- Run an inline facet definition on up to ten span, trace, or group references without writing the result to the source trace.enable_topics_automation- Enable Topics for a project. This seeds processing for new traffic and doesn’t rewind historical data.set_topics_automation- Update an existing Topics automation’s facets, scope, filters, sampling, or timing.rewind_topics_automation- Rewind an existing Topics automation to process historical data from a start time or a recent window.
- “Set up Topics for my project”
- “My traces don’t store conversation text on LLM spans. Write a preprocessor that works with my trace shape”
Build monitor views
generate_monitor_chart- Preview a monitor chart for project logs without modifying a saved view.list_monitoring_views- List a project’s saved monitor views and chart IDs.get_monitoring_view- Inspect a saved monitor view, including its options and ordered chart definitions.create_monitoring_view- Create a project-scoped monitor view, optionally containing charts you already previewed.update_monitoring_view- Insert, update, or remove charts in an existing monitor view, one edit at a time or several in bulk.
- “Create a dashboard for daily cost analysis”
- “Add a p95 latency chart to my error monitoring view”
Manage automations and alerts
list_automations- List a project’s automations, including online scoring rules, alerts, exports, retention policies, and Topics automations. Filter byautomation_id,name, orkind. Returns complete configurations, so you can inspect an automation before updating it.set_automation_status- Pause or activate an alert, scheduled job, or online scoring rule.create_log_alert- Create an alert for individual matching project logs. Useconfig.interval_secondsto throttle repeated notifications.create_environment_update_alert- Create an alert for environment updates. Useconfig.environment_filterto limit notifications to specific environment slugs.create_threshold_alert- Create an alert for an aggregate over a recent window of project data, evaluated on a schedule. Use it for averages, counts, rates, percentages, percentiles, and distributions.create_scheduled_loop_job- Create a Loop job that runs on an interval or cron schedule over a recent window of project data.
- “What automations are configured in this project?”
- “Alert me when the error rate goes above 2% over the last hour”
- “Pause the online scoring rule you just created”
Author prompts and evaluators
create_prompt- Create a versioned prompt from a completion-style prompt or chat messages. Setif_existstoreplaceto save a new version, orignoreto leave an existing prompt unchanged.create_evaluator- Create a versioned LLM or inline code evaluator. Setoutput_typetoscorefor numeric scores orclassificationfor categorical labels.test_evaluator- Run a saved, global, or inline evaluator against span, trace, or group references without writing results to the source trace.update_online_scoring_rule- Save or rewind an online scoring rule that runs saved evaluator functions. New rules default to paused.
- “Write a scorer that detects the errors in these logs, then test it on a few traces”
- “Create an LLM-as-a-judge scorer for helpfulness”
- “Set up online scoring with the scorer you just created”
Run evals and edit datasets
run_eval- Run an experiment with a hosted dataset, inline rows, or a prior experiment as input data, any saved or inline task, and zero or more saved or inline scorers. When a prior experiment supplies the data, its outputs become expected values unless an expected value was already recorded.edit_dataset_rows- Insert, update, or delete up to 100 dataset rows. Target a dataset by ID or name, and setcreate_if_missingto create a new named dataset.
- “Run an eval comparing these two prompts on my regression dataset”
- “Add these traces to my regression dataset and set the expected output”
run_eval creates an experiment and can execute your code or call AI providers, so it incurs compute and model usage.Manage project settings
get_project_settings- Return a project’s typed settings, including the effective default preprocessor. An unset default resolves to the built-inthreadpreprocessor.set_project_default_preprocessor- Set or clear a project’s default preprocessor. Passnullto restore the built-in default. This changes the default used by facets and other project functions that don’t select a preprocessor explicitly. Expects thebraintrust/topics-workflowskill to be loaded first.
- “What preprocessor is my project using by default?”
- “Make the preprocessor you just created the project default”
Search docs and load skills
search_docs- Search Braintrust documentation to find relevant guides, API references, and code examples.load_braintrust_skill- Load a Braintrust workflow guide before using the tools it covers. Available skills arebraintrust/automations-workflow,braintrust/evaluator-workflow, andbraintrust/topics-workflow.
- “How do I create a custom scorer?”
- “Show me examples of SQL queries”
- “What’s the difference between experiments and project logs?”
Available skills
Skills are workflow guides your assistant loads withload_braintrust_skill and then follows. Where a tool reference tells your assistant what a tool does, a skill tells it the order to do things in, what to validate at each stage, and when to ask you for input.
braintrust/topics-workflow- Configure, evaluate, and improve the Topics pipeline, covering preprocessors, facets, scope, and Topics automations.braintrust/evaluator-workflow- Create, test, refine, deploy, and rewind evaluators, and apply them to production logs with an online scoring rule.braintrust/automations-workflow- Set up, validate, and manage alerts and scheduled Loop jobs, including threshold-triggered work, Slack and webhook delivery, and refining existing automations.
braintrust/topics-workflow to be loaded first, so your assistant validates the preprocessor and facets against real traces before it saves anything or enables an automation. Loading a skill is read-only and costs one tool call.
Available resources
MCP resources provide contextual documentation that AI assistants can read to perform tasks more effectively.docs://sdk-install- Step-by-step guidance for installing the Braintrust SDK into a project, setting up tracing, configuring auto-instrumentation, and running your first eval.docs://sql- Documentation for thesql_querytool, including syntax, available fields, and examples.docs://url-formats- Reference for Braintrust URL patterns, used by theresolve_objecttool.docs://experiments- Background on Braintrust experiments and how to create them.
docs://sdk-install has companion resources for Python, TypeScript, Go, Java, Ruby, and C#. Your assistant reads the one matching your project automatically.
Troubleshooting
Invalid client errors: Verify the URL is exactlyhttps://api.braintrust.dev/mcp (no trailing slash).
Connection timeouts:
Check internet connection. Corporate networks may need to allowlist api.braintrust.dev and *.braintrust.dev.
MCP server not appearing:
Restart your AI tool and verify JSON configuration syntax.
Server URL errors on a self-hosted deployment:
The MCP server derives its own address from the forwarding headers your ingress sets. If it reports that it could not determine the server URL, set the MCP_SERVER_URL environment variable on your data plane to your API URL.
Next steps
- Use the Data API for programmatic access
- Query with SQL for complex data analysis
- View logs in the web interface
- Run evaluations and analyze with MCP