# proctor

Runs Proctor exams against MCP servers, keeps the results for comparison, and manages the Fly.io machines that host the runs. Internal to PulseMCP.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 81
- Author: pulsemcp
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/pulsemcp/mcp-servers/tree/HEAD/experimental/proctor
- Updated: 2026-10-09
- HTML: https://affpapa.org/en/nevibecode/mcp/proctor

## What it 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`.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `PROCTOR_API_KEY`, `PROCTOR_API_URL`, `TOOL_GROUPS` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
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
```
Replace <…> with your own values

### Codex

**Platform CLI**
```bash
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-server
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "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

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "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

### Gemini CLI

**Platform CLI**
```bash
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-server
```
Replace <…> with your own values

## When to use it
- 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
- Which exams can I run with Proctor?
- Run `run_exam` against my MCP server and stream the logs
- Cancel the current exam and destroy machine `machine-abc123`

## Similar
- [Front-End Checklist](https://affpapa.org/en/nevibecode/mcp/front-end-checklist.md) — MCP server · ★ 74559
- [Keploy](https://affpapa.org/en/nevibecode/mcp/keploy.md) — MCP server · ★ 18727
- [SeleniumBase MCP](https://affpapa.org/en/nevibecode/mcp/seleniumbase-mcp.md) — MCP server · ★ 13169
- [mobile-mcp](https://affpapa.org/en/nevibecode/mcp/mobile-mcp.md) — MCP server · ★ 9946
- [e2e](https://affpapa.org/en/nevibecode/mcp/e2e.md) — MCP server · ★ 11912
- [mockserver](https://affpapa.org/en/nevibecode/mcp/mockserver.md) — MCP server · ★ 4996

From the same set: [pulsemcp/mcp-servers](https://affpapa.org/en/nevibecode/by/pulsemcp/mcp-servers.md) — 9 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
