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.)
- 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_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:
- 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.
perfecto_demo_install.mp4
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_TOKEN refere 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/perfecto-mcp.git@v1.1.1",
"-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
Example Configuration
{
"mcpServers": {
"Docker Perfecto MCP": {
"command": "docker",
"args": [
"run",
"--pull=always",
"--rm",
"-i",
"-v",
"/path/to/your/ca-bundle.crt:/etc/ssl/certs/custom-ca-bundle.crt",
"-e",
"SSL_CERT_FILE=/etc/ssl/certs/custom-ca-bundle.crt",
"-e",
"PERFECTO_CLOUD_NAME=your_cloud_name",
"-e",
"PERFECTO_SECURITY_TOKEN=your_security_token",
"ghcr.io/perfectocode/perfecto-mcp:latest"
]
}
}
}Replace:
/path/to/your/ca-bundle.crtwith your host system's CA certificate file path- The container path
/etc/ssl/certs/custom-ca-bundle.crtcan be any path you prefer (just ensure it matchesSSL_CERT_FILE)
The
SSL_CERT_FILEenvironment variable must be set to point to your custom CA certificate bundle. Thehttpxlibrary automatically respects theSSL_CERT_FILEenvironment variable for SSL certificate verification.
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.
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.
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"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"
}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.
- Issues: GitHub Issues
- Support: Contact Perfecto support for enterprise assistance
This project is licensed under the Apache License, Version 2.0. Please refer to LICENSE for the full terms.