NewAgent Observability is live.
Back to directory
ReportPortal logo

ReportPortal MCP server: 18 tools over test launches

What a test-reporting platform exposes to an agent, the three tools that change state, and the analytics setting that is on by default.

Connector
Official, self-hosted
Coverage
Launches, test items, logs, attachments, defect types, analysis
Tools
18, all on by default
Biggest risk for an agent
One tool deletes a launch and one closes a launch that is still running

Last verified 1 September 2026 · from The ReportPortal repository, its release binaries 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

The ReportPortal MCP server gives an agent its test-reporting data: 18 tools covering launches, test items, logs, attachments, defect types and the platform's own analysis jobs.

It is cheap to connect. The definitions cost between 4,146 and 7,999 tokens, roughly 2.1% to 4.0% of a 200,000-token window, because descriptions average 113 characters.

Both launch_delete and launch_force_finish arrive enabled. The server also carries analytics: its README documents a /metrics endpoint returning "Analytics metrics (if analytics enabled)". The switch names below were read from the binary's own --help and are not in the published documentation.

What is the ReportPortal MCP server?

It is ReportPortal's server for the Model Context Protocol. ReportPortal aggregates automated test results, so a connected agent can read failures without opening the dashboard.

The data model is launches and test items. A launch is one execution of a suite, a test item is a case or a suite inside it, and most tools take filters over one or the other.

Three tools start ReportPortal's own analysis rather than reading data: run_auto_analysis, run_unique_error_analysis and run_quality_gate. Those are jobs on the server, not queries.

ReportPortal gives an agent the history of test launches and failures. That is evidence about test execution, not about the running application. Its CI link ends at those launches, with no agent-telemetry or cost coverage.

Part of the workWhat ReportPortal has hereCan an agent reach it
Code, tests & reviewTest results, defect types, logs, attachmentsYes. Core strength. Failures, their logs and their classification are all reachable
CI & releaseLaunches from CI runsPartial. A launch is the record of a CI test run; there are no pipeline or deployment tools
Production observabilityNoneNo metrics, logs or traces from running services
Agent observability & evalsNoneNo traces, evaluations or prompt versioning for your own agents
AI cost managementNoneNo spend data of any kind

For an agent, ReportPortal answers what the tests did. It can find the failing item, read its log and see how it was classified. It knows nothing about the code that failed or the service in production, so it pairs with a repository connector for a fix.

What can an AI agent do with ReportPortal?

TaskToolsWorksWatch out for
Find the last run of a suiteget_last_launch_by_name get_launches get_launch_by_idYesget_launches and get_last_launch_by_name carry near-identical descriptions
Find which tests failedget_test_items_by_filter get_test_item_by_id get_test_suites_by_filterYesFilters are the ReportPortal query parameters, passed through unchanged
Read the log behind a failureget_test_item_logs_by_filter get_test_item_attachment_by_idYesAttachments come back by ID, so the item has to be found first
Tell a regression from a known flakeget_test_items_history get_project_defect_typesYesHistory needs either a launch ID or a parent suite in the filter
Classify a failureupdate_defect_type_for_test_itemsYesThis writes. It changes the defect type recorded against the items
Run the platform's own analysisrun_auto_analysis run_unique_error_analysis run_quality_gateYesThese start jobs on the ReportPortal server rather than returning a query result
See the code that failedGitHubNo, separate serverReportPortal stores the result, never the diff

get_launches and get_last_launch_by_name ship with the same one-line description. Pin the launch by ID once found, so a later call cannot silently move to a different run.

18 tools registered, all on by default

Launches3
get_launchesget_last_launch_by_nameget_launch_by_id
Test items4
get_test_items_by_filterget_test_item_by_idget_test_suites_by_filterget_test_items_history
Evidence2
get_test_item_logs_by_filterget_test_item_attachment_by_id
Classification1
get_project_defect_types
Analysis jobs3
run_auto_analysisrun_unique_error_analysisrun_quality_gate
Changing a launch3Write
update_launchupdate_defect_type_for_test_itemsimport_launch_from_file
Destructive2Write
launch_deletelaunch_force_finish

Groups are a reader's map; the server registers one flat list of 18, which matches the table in its own README. Counted on 24 August 2026 from the released binary.

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.

18 tools cost between 4,146 and 7,999 tokens, about 2.1% to 4.0% of a 200,000-token window.

The schemas dominate. Descriptions average 113 characters and schemas average 885, because the filter tools pass ReportPortal's own query parameters through to the model.

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 registered184,251 to 6,2644,146 to 6,2496,232 to 7,9992.1% to 4.0%

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 24 August 2026 from tools/list on the released 1.3.3 macOS binary. It was run locally with a placeholder host and token.

Registration is static, so no ReportPortal instance answered. 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 51%. 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.

ReportPortal MCP server limits: where answers come back incomplete

Two limits below are about telling one launch from another; the third is about a setting that is easy to miss.

The agent says: The suite passed. It may have read a different run.

get_launches and get_last_launch_by_name ship with the same one-line description, and both return recent launches. An agent that picks either can answer about a run you did not mean.

Nothing in the result distinguishes the two, because both return launch records of the same shape.

Guard: Have the agent pin a launch ID with get_launch_by_id and quote it in the answer.

The agent says: I have analyzed the failures. It may have started a server-side job.

run_auto_analysis, run_unique_error_analysis and run_quality_gate start ReportPortal's own analysis on a launch. They act on the platform rather than returning a query result.

Guard: Require the agent to say when it started an analysis job, and on which launch.

Connecting sends analytics to Google unless you switch it off.

The binary documents --analytics-off and RP_MCP_ANALYTICS_OFF for disabling Google Analytics tracking, and a --user-id flag for analytics identification. The default is on.

Guard: Pass --analytics-off in every configuration if outbound analytics is not acceptable.

How to configure ReportPortal MCP for agents

  1. 1

    Switch analytics off if that matters to you

    The binary's --help lists --analytics-off and RP_MCP_ANALYTICS_OFF. Neither appears in the README, so confirm against the version you install rather than trusting this page.

  2. 2

    Decide who may delete a launch

    launch_delete and launch_force_finish register by default, and the API token is the only boundary.

  3. 3

    Pick the mode deliberately

    In stdio mode RP_API_TOKEN is required; in HTTP mode it is ignored entirely and every request must carry its own bearer token.

  4. 4

    Set the project

    --project avoids an agent querying a project the token can see but you did not mean.

Paste this into your agent’s instructions

Two launch tools carry the same description, so an agent can answer about a different run than the one you meant. The block makes it name the launch.

Terminal
When you answer using ReportPortal MCP tools, state:
- The launch ID the answer came from, not just the suite name.
- The filters you passed. Test-item queries take ReportPortal
  filter parameters and a wrong one returns a real, wrong set.
- Whether you called launch_delete, launch_force_finish,
  update_launch or update_defect_type_for_test_items.
Never state that data does not exist. State that no items
matched the filters 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?

Often you do not. ReportPortal has a documented REST API, and most of these tools pass its filter parameters through unchanged. A dashboard or a script is better served by calling it directly.

The connector earns its place during a failing build, when the agent is already in the editor and the question is which test broke and why.

At 4,146 tokens the cost of keeping it connected is small, so the argument against it is rarely context.

Connect it while triaging a failure. Call the REST API for anything scheduled or repeated.

ReportPortal MCP server setup

Download the release binary for your platform from 1.3.3, or use the Docker image the README recommends. Stdio mode needs a host, a project and an API token.

HTTP mode is different. RP_API_TOKEN is ignored, and each request must carry Authorization: Bearer <token> instead.

Claude Code

Stdio mode requires the API token. --analytics-off stops the tracking the server sends by default.

Terminal
claude mcp add-json "reportportal" '{"command":
  "reportportal-mcp-server",
  "args":["--rp-host","https://rp.internal",
          "--project","my-project","--analytics-off"],
  "env":{"RP_API_TOKEN":"<your-token>"}}'

Cursor

In ~/.cursor/mcp.json. The API token is required in stdio mode.

Terminal
{"mcpServers":{"reportportal":{
  "command":"reportportal-mcp-server",
  "args":["--rp-host","https://rp.internal",
          "--project","my-project","--analytics-off"],
  "env":{"RP_API_TOKEN":"<your-token>"}}}}

Codex CLI

Codex reads TOML, so the JSON blocks above will not transfer. The token is still required.

Terminal
[mcp_servers.reportportal]
command = "reportportal-mcp-server"
args = ["--rp-host", "https://rp.internal",
        "--project", "my-project", "--analytics-off"]
env = { RP_API_TOKEN = "<your-token>" }

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":{"reportportal":{"command":"reportportal-mcp-server",
  "args":["--rp-host","https://rp.internal","--project","my-project","--analytics-off"],
  "env":{"RP_API_TOKEN":"<your-token>"}}}}
Gemini CLI

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

Terminal
{"mcpServers":{"reportportal":{"command":"reportportal-mcp-server",
  "args":["--rp-host","https://rp.internal","--project","my-project","--analytics-off"],
  "env":{"RP_API_TOKEN":"<your-token>"}}}}
VS Code Copilot

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

Terminal
{"servers":{"reportportal":{"command":"reportportal-mcp-server",
  "args":["--rp-host","https://rp.internal","--project","my-project","--analytics-off"],
  "env":{"RP_API_TOKEN":"<your-token>"}}}}

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

Zed

~/.config/zed/settings.json, carrying the same API token 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":{"reportportal":{"command":"reportportal-mcp-server",
  "args":["--rp-host","https://rp.internal","--project","my-project","--analytics-off"],
  "env":{"RP_API_TOKEN":"<your-token>"}}}}
Amp (Sourcegraph)

~/.config/amp/settings.json or .amp/settings.json, carrying the same API token. 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 token. Supports stdio, streamable HTTP and SSE.

Goose (Block)

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

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

Warp

~/.warp/.mcp.json or .warp/.mcp.json. Key mcpServers, standard shape, carrying the same API token. 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 token. 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 token.

Continue

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

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

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

HTTP mode

In HTTP mode the API token in the environment is ignored. Every request must carry its own bearer token, which is what makes the mode usable by more than one person.

Terminal
MCP_MODE=http reportportal-mcp-server \
  --rp-host https://rp.internal --analytics-off
# Clients send: Authorization: Bearer <token>
Self-signed certificates

--insecure and --tls-ca-cert are mutually exclusive; setting both is rejected.

The API token still comes from the environment in stdio mode, so no credentials appear in the command itself.

Terminal
reportportal-mcp-server --rp-host https://rp.internal \
  --tls-ca-cert /etc/ssl/certs/my-ca.pem \
  --project my-project --analytics-off

Read-only access, permissions and security

  • Two tools are destructive and arrive enabled

    launch_delete removes a launch and launch_force_finish closes one that is still running.

  • Analytics is opt-out, not opt-in

    The server documents --analytics-off and RP_MCP_ANALYTICS_OFF to disable Google Analytics tracking, which means it is on until you do.

  • Authentication changes with the mode

    In stdio mode RP_API_TOKEN is required; in HTTP mode it is ignored and the bearer header is the only credential.

  • One tool uploads

    import_launch_from_file accepts inline file content and creates a launch from it, subject to the server's upload limit.

Troubleshooting

The server exits with a usage error
--rp-host is required, and the project flag is --project rather than --rp-project. The binary prints the correct flag names with --help.
HTTP mode returns 401 with a valid token
In HTTP mode RP_API_TOKEN and --token are ignored. The token has to travel per request in an Authorization: Bearer header.
The agent answered about the wrong run
get_launches and get_last_launch_by_name share the same one-line description. Have the agent pin a launch ID and state it.
TLS verification fails
Use --tls-ca-cert with your CA file, or --insecure to skip verification. The two are mutually exclusive and setting both is rejected.

ReportPortal MCP server: Reference

ItemValue
Status1.3.3, released 23 June 2026 · repository pushed 13 August 2026
Adoption22 stars · 24 forks · 11 releases · repository created 8 April 2025
LicenseApache-2.0
DistributionmacOS, Linux and Windows binaries on both architectures, plus Docker
AuthRP_API_TOKEN in stdio mode; per-request bearer header in HTTP mode
Tools18, all on by default
Destructive toolslaunch_delete, launch_force_finish
AnalyticsGoogle Analytics, on unless --analytics-off is passed
Context cost4,146 to 7,999 tokens

What engineers report

The repository is first-party, with 11 releases since it was created on 8 April 2025. Its own README and the tools/list capture are the evidence below.

What was checkedWhat it shows
Stars22
Last push13 August 2026
Latest release1.3.3, 23 June 2026
LicenseApache-2.0
Tools returned by tools/list18
Tools in the README table18, matching tools/list
Average description113 characters per tool
Average schema size885 characters per tool

Repository facts from the GitHub API, retrieved 24 August 2026. The README's own tool table was counted on the same date and matches the released binary's tools/list response.

Should you connect an agent to ReportPortal?

Yes. Best for stdio mode with --analytics-off, a project set, and a token scoped to reading unless deletion is wanted.

Strongest fit
Teams running ReportPortal who want an agent to triage a failing suite without leaving the editor.
Main advantage
Low context cost and a direct path from a launch to the log line that failed.
Main weakness
Two launch tools share a description, so the agent needs a rule about pinning an ID.
Operational risk
launch_delete and launch_force_finish register by default, with the API token as the only boundary.

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 ReportPortal MCP server have?

18, all on by default. Counted from the server's own tools/list response on the released 1.3.3 binary, on 24 August 2026. The README's table lists the same 18.

What do the tool definitions cost?

Between 4,146 and 7,999 tokens, about 2.1% to 4.0% of a 200,000-token window. Schemas rather than descriptions carry the cost.

Can an agent delete a launch?

Yes. launch_delete and launch_force_finish both register by default. Scope the API token, because the server has no read-only mode.

Does it send analytics?

Yes, Google Analytics, unless --analytics-off or RP_MCP_ANALYTICS_OFF is set. There is also a --user-id flag used for analytics identification.

Why is my token ignored in HTTP mode?

By design. In HTTP mode RP_API_TOKEN and --token are ignored, and each request must carry its own Authorization: Bearer header.

Changelog

  • 23 June 2026. reportportal/reportportal-mcp-server 1.3.3 released, the most recent version.
  • 1 August 2025. 1.0.0 released, the first stable version.
  • 17 June 2025. First release, v0.
  • 8 April 2025. reportportal/reportportal-mcp-server created on GitHub.

Sources

Every number on this page traces to one of these

  1. Repository facts from the GitHub API · reportportal/reportportal-mcp-server, retrieved 24 August 2026
  2. Flags, modes and analytics settings from the released binary's own help output
  3. Tool counts, descriptions and schema sizes from the server's own tools/list response

ReportPortal’s own MCP documentation

Also code, tests and review:

For the code behind a failure: