pr-roast-mcp
# pr-roast-mcp
MCP server that roasts your pull requests. Brutally honest code review with humor.
## Install
```bash
claude mcp add pr-roast -- uv run --directory /path/to/pr-roast-mcp pr-roast-mcp
```
Or add to your MCP config:
```json
{
"mcpServers": {
"pr-roast": {
"command": "uv",
"args": ["run", "--directory", "/path/to/pr-roast-mcp", "pr-roast-mcp"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
```
Requires: `gh` CLI authenticated, `ANTHROPIC_API_KEY` env var.
## Usage
Ask Claude:
- "Roast my latest PR"
- "Roast PR #89"
- "Roast https://github.com/owner/repo/pull/123"
- "List my open PRs so I can pick one to roast"
## Tools
### `roast_pr`
Roast a specific pull request.
| Parameter | Type | Description |
|-----------|------|-------------|
| `pr` | string | PR number, `owner/repo#123`, or full GitHub URL |
### `roast_my_prs`
List your PRs to pick one for roasting.
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `repo` | string | current repo | Repository in `owner/repo` format |
| `state` | string | "open" | PR state: "open", "closed", or "merged" |
## What it does
1. Fetches PR metadata and diff via `gh` CLI
2. Sends to Claude Haiku for a roast
3. Returns a brutally honest review with severity rating (🔥 to 🔥🔥🔥🔥🔥)
4. Always ends with one genuine compliment
## Example output
> **🔥🔥🔥 CODE REVIEW: "Initiative Bonus"**
>
> Your tests are *thorough*. Like, suspiciously thorough. 156 lines for a POST endpoint? You're basically writing a dissertation on HTTP status codes.
>
> That `selectChain` helper is magical incantation — nobody knows why `.select()` returns itself. Add a comment explaining the Supabase API you're mimicking.
>
> 849 lines added, 7 removed. That's 121:1 ratio. For a "bonus feature," this sprawls.
>
> **Severity: 🔥🔥🔥 (Ship after fixing migration description, simplifying mocks)**
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: 'roast_my_prs' lists and selects PRs for roasting, while 'roast_pr' performs the roasting action on a specific PR. There is no overlap or ambiguity between these functions.
Both tools follow a consistent 'verb_noun' pattern with 'roast' as the verb, making them predictable and readable. The naming is uniform across the set.
With only 2 tools, the server feels thin for a PR roasting domain. It lacks tools for broader interactions like viewing roast history, managing roasts, or handling multiple repos, which limits its scope and utility.
The toolset is severely incomplete for a PR roasting server. It covers listing and roasting PRs but misses essential operations such as retrieving past roasts, updating or deleting roasts, or handling user feedback, leaving significant gaps in the domain coverage.