proctor — Claude Code MCP server: exams for MCP servers
Runs Proctor exams against MCP servers, keeps the results for comparison, and manages the Fly.io machines that host the runs. Internal to PulseMCP.
claude mcp add --env PROCTOR_API_KEY=<PROCTOR_API_KEY> --env PROCTOR_API_URL=<PROCTOR_API_URL> --env TOOL_GROUPS=<TOOL_GROUPS> --transport stdio proctor -- npx -y proctor-mcp-serverWhat proctor does
Five tools come with the server. get_proctor_metadata lists current runtimes and exams, run_exam fires an exam at an MCP server and streams progress back as NDJSON. get_machines shows live Fly.io machines, cancel_exam stops a run that hangs, and destroy_machine tears a machine down.
Tools sit in groups named exams and machines. Each has a _readonly twin that blocks writes, and TOOL_GROUPS takes a comma-separated list of the ones you want. Leave it unset and everything is on: exams,machines.
Without PROCTOR_API_KEY the server cannot reach the API, and that key is not handed out publicly. The code is readable, yet only the PulseMCP team has working access. PROCTOR_API_URL points elsewhere if needed and defaults to https://admin.pulsemcp.com. Node has to be installed because the server starts through npx.
What it helps with
- run an exam against an MCP server and watch the log as it goes
- keep past results around to compare reruns for regressions
- check which runtimes and exams Proctor offers right now
- stop a slow run without killing the whole machine
- clean up leftover Fly.io machines after a test round
Example prompts for the agent
- Which exams can I run with Proctor?
- Run
run_examagainst my MCP server and stream the logs - Cancel the current exam and destroy machine
machine-abc123
How to install proctor
Platform CLI
claude mcp add --env PROCTOR_API_KEY=<PROCTOR_API_KEY> --env PROCTOR_API_URL=<PROCTOR_API_URL> --env TOOL_GROUPS=<TOOL_GROUPS> --transport stdio proctor -- npx -y proctor-mcp-serverReplace <…> with your own values
Platform CLI
codex mcp add proctor --env PROCTOR_API_KEY=<PROCTOR_API_KEY> --env PROCTOR_API_URL=<PROCTOR_API_URL> --env TOOL_GROUPS=<TOOL_GROUPS> -- npx -y proctor-mcp-serverReplace <…> with your own values
Config file
{
"mcpServers": {
"proctor": {
"command": "npx",
"args": [
"-y",
"proctor-mcp-server"
],
"env": {
"PROCTOR_API_KEY": "<PROCTOR_API_KEY>",
"PROCTOR_API_URL": "<PROCTOR_API_URL>",
"TOOL_GROUPS": "<TOOL_GROUPS>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"proctor": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"proctor-mcp-server"
],
"env": {
"PROCTOR_API_KEY": "<PROCTOR_API_KEY>",
"PROCTOR_API_URL": "<PROCTOR_API_URL>",
"TOOL_GROUPS": "<TOOL_GROUPS>"
}
}
}
}Replace <…> with your own values
Platform CLI
gemini mcp add -e PROCTOR_API_KEY=<PROCTOR_API_KEY> -e PROCTOR_API_URL=<PROCTOR_API_URL> -e TOOL_GROUPS=<TOOL_GROUPS> proctor npx -y proctor-mcp-serverReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about proctor
How do I install proctor in Claude Code?
Run claude mcp add proctor -e PROCTOR_API_KEY=<PROCTOR_API_KEY> -- npx -y proctor-mcp-server. To also set the API URL and tool groups, use `claude mcp add --env PROCTOR_API_KEY=<PROCTOR_API_KEY> --env PROCTOR_API_URL=<PROCTOR_API_URL> --env TOOL_GROUPS=<TOOL_GROUPS> --transport stdio proctor -- npx -y proctor-mcp-server`.
What does proctor do?
It executes Proctor exams against MCP servers and stores the outcomes so later runs can be compared. It also lists and removes the Fly.io machines behind those runs.
Can I run it with read-only access?
Yes. Set TOOL_GROUPS to the _readonly variants, for instance exams_readonly,machines_readonly, and write tools stay off.