
perfectocode/perfecto-mcp
Developer toolsConnect AI tools directly to Perfecto's cloud-based testing platform.
Overview
The Perfecto MCP Server connects AI tools directly to Perfecto's cloud-based testing platform. This gives AI agents, assistants, and chatbots the ability to manage complete testing workflows from creation to execution and reporting. All through natural language interactions. - Perfecto Security Token - Compatible MCP host (VS Code, Claude Desktop, Cursor, Windsurf, etc.) 1. Follow the Perfecto Security Token guide to obtain your Security Token. 2. Save the token into a file named perfecto-security-token.txt file in the same folder where you'll place the MCP binary. Make sure to locate the binary along with the token file in a safe place. It is possible to configure another site for the file location, you can use the environment variable PERFECTO_SECURITY_TOKEN_FILE with the full path including the name of the file you want to use. The easiest way to configure your MCP client is using our interactive CLI tool: 1.
README
Perfecto MCP Server
The Perfecto MCP Server connects AI tools directly to Perfecto’s cloud-based testing platform. This gives AI agents, assistants, and chatbots the ability to manage complete testing workflows from creation to execution and reporting. All through natural language interactions.
Prerequisites
- Perfecto Security Token
- Compatible MCP host (VS Code, Claude Desktop, Cursor, Windsurf, etc.)
Setup
Get Perfecto Security Token
- Follow the Perfecto Security Token guide to obtain your Security Token.
- Save the token into a file named
perfecto-security-token.txtfile in the same folder where you’ll place the MCP binary.
[!IMPORTANT] Make sure to locate the binary along with the token file in a safe place. It is possible to configure another site for the file location, you can use the environment variable
PERFECTO_SECURITY_TOKEN_FILEwith the full path including the name of the file you want to use.
Quick Setup with CLI Tool ⚡
The easiest way to configure your MCP client is using our interactive CLI tool:
- Download the appropriate binary for your operating system from the Releases page
[!NOTE] Choose the binary that matches your OS (Windows, macOS, Linux)
- Place the binary in the same folder as your
perfecto-security-token.txtfile - Execute or Double-click the binary to launch the interactive configuration tool
- The tool automatically generates the JSON configuration file for you
- Setup cloud name in the JSON configuration
PERFECTO_CLOUD_NAMEwith the name of your Perfecto Cloud environment.
https://github.com/user-attachments/assets/10fffeee-b01d-4138-af7a-ea0018471730
Docker MCP Client Configuration
{
"mcpServers": {
"Docker Perfecto MCP": {
"command": "docker",
"args": [
"run",
"--pull=always",
"--rm",
"-i",
"-e",
"PERFECTO_CLOUD_NAME=your_cloud_name",
"-e",
"PERFECTO_SECURITY_TOKEN=your_security_token",
"ghcr.io/perfectocode/perfecto-mcp:latest"
]
}
}
}
[!IMPORTANT] For Windows OS, paths must use backslashes (
\) and be properly escaped as double backslashes (\\) in the JSON configuration. E.g.:C:\\User\\Desktop\\mcp_test_folder
[!NOTE] In order to obtain the
PERFECTO_SECURITY_TOKENrefere to Generate a security token page
Manual Client Configuration (From Remote Source Code)
- Prerequisites: uv and Python 3.11+
- Configure your MCP client with the following settings:
{
"mcpServers": {
"Perfecto MCP": {
"command": "uvx",
"args": [
"--from", "git+https://github.com/PerfectoCode/[email protected]",
"-q", "perfecto-mcp", "--mcp"
],
"env": {
"PERFECTO_CLOUD_NAME": "Set the cloud name value here"
}
}
}
}
[!NOTE] uvx installs and runs the package and its dependencies in a temporary environment. You can change to any version that has been released or any branch you want. Package support for uvx command is supported from version 1.0 onwards. For more details on the uv/uvx arguments used, please refer to the official uv documentation.
Custom CA Certificates (Corporate Environments) for Docker
When you need this:
- Your organization uses self-signed certificates
- You’re behind a corporate proxy with SSL inspection
- You have a custom Certificate Authority (CA)
- You encounter SSL certificate verification errors when running tests
Required Configuration:
When using custom CA certificate bundles, you must configure both:
- Certificate Volume Mount: Mount your custom CA certificate bundle into the container
- SSL_CERT_FILE Environment Variable: Explicitly set the
SSL_CERT_FILEenvironment variable to point to the certificate location inside the container
Transports
Perfecto MCP runs over stdio by default. It can also serve streamable HTTP, where credentials are
resolved per request from an Authorization: Bearer header and the target cloud from a Perfecto-Cloud-Name
header, so one server can serve several users and clouds.
perfecto-mcp --mcp http
Transport resolution precedence: CLI --mcp > PERFECTO_MCP_TRANSPORT > stdio.
See docs/hosted-http.md for client configuration, auth behavior, health probes and environment variables.
OpenTelemetry
Perfecto MCP reports traces and metrics for MCP tool calls using OpenTelemetry. This gives you visibility into which tools are used, how long they take, and when errors occur.
Telemetry is enabled by default. You do not need to configure anything unless you want to change where data is sent or turn it off.
Default behavior
By default, telemetry is exported over gRPC to:
https://grpc.public.prd.shared.perforce.com
The service is identified as perfecto-mcp with the current release version. If telemetry fails to start or export, the MCP server continues to work as usual.
Turn off telemetry
Add OTEL_SDK_DISABLED=true to your MCP client environment:
"env": {
"OTEL_SDK_DISABLED": "true"
}
For Docker, pass it with -e:
"-e",
"OTEL_SDK_DISABLED=true"
Send data to your own collector
Use these environment variables to point at a different OpenTelemetry collector (for example, a local one during development):
| Variable | Description | Default |
|---|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT |
OTLP collector URL | https://grpc.public.prd.shared.perforce.com |
OTEL_EXPORTER_OTLP_PROTOCOL |
grpc, http/protobuf, or http/json |
grpc |
gRPC example (typical local collector on port 4317):
"env": {
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4317",
"OTEL_EXPORTER_OTLP_PROTOCOL": "grpc"
}
HTTP example (typical local collector on port 4318):
"env": {
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://localhost:4318",
"OTEL_EXPORTER_OTLP_PROTOCOL": "http/protobuf"
}
What gets reported
Each MCP tool call creates:
- Traces — one span per call with the tool name, action, MCP client name and version, session ID, and error type when applicable.
- Metrics —
mcp.tool.calls(count) andmcp.tool.duration(seconds), broken down by tool and action.
Security tokens and other credentials are not included in telemetry data.
If your MCP client sends traceparent or tracestate in the request metadata, Perfecto MCP links its spans to that parent trace.
Support
- Issues: GitHub Issues
- Support: Contact Perfecto support for enterprise assistance
License
This project is licensed under the Apache License, Version 2.0. Please refer to LICENSE for the full terms.
Install
docker run --pull=always --rm -i -e PERFECTO_CLOUD_NAME=your_cloud_name -e PERFECTO_SECURITY_TOKEN=your_security_token ghcr.io/perfectocode/perfecto-mcp:latestConfiguration
{
"mcpServers": {
"Docker Perfecto MCP": {
"command": "docker",
"args": [
"run",
"--pull=always",
"--rm",
"-i",
"-e",
"PERFECTO_CLOUD_NAME=your_cloud_name",
"-e",
"PERFECTO_SECURITY_TOKEN=your_security_token",
"ghcr.io/perfectocode/perfecto-mcp:latest"
]
}
}
}