gh-triage-mcp
# gh-triage-mcp
Three MCP tools for GitHub issue triage. TypeScript. Stdio.
Most GitHub MCPs wrap REST 1:1 and dump the JSON. Same pass rate, much more context. [HN measured 5×](https://news.ycombinator.com/item?id=48407391) on that pattern. This server returns what the next call needs: `number`, `owner`, `repo`, a short body, a suggested action.
`draft_comment` does not POST unless `confirm=true`.
## Tools
| Tool | Returns | Writes? |
| --- | --- | --- |
| `search_issues` | short list + `next.owner` / `next.repo` | no |
| `summarize_issue` | that plus last five comments | no |
| `draft_comment` | the draft; posts only with `confirm` | gated |
## Eval
Twenty synthetic issues. Shaped vs raw dump.
| | Next call fillable | ~tokens |
| --- | --- | --- |
| raw REST | 0/20 | 12350 |
| this server | 20/20 | 4227 |
2.92× fewer tokens. Not a model score. `npm run eval` fails the build if that ratio collapses.
Failure modes: [`evals/failure_modes.md`](evals/failure_modes.md).
## Run
```bash
npm install
npm test
npm run eval
npm run build
```
```json
{
"mcpServers": {
"gh-triage": {
"command": "node",
"args": ["/absolute/path/to/gh-triage-mcp/dist/index.js"],
"env": { "GITHUB_TOKEN": "ghp_..." }
}
}
}
```
Node 20+. Token optional for public read; required to comment.
## Demo
Live: https://01a05643-d6bf-7a9d-9634-4f367e3a2682.skydive.app/gh_triage_mcp
```bash
pip install -r requirements.txt
streamlit run app.py
```
Does not call GitHub. Side-by-side dump vs shaped payload.
Not in this repo: labels, assignees, closing, projects. Use [github/github-mcp-server](https://github.com/github/github-mcp-server) if you need the kitchen sink.
MIT. Ashley Gross, 2026.
TDQS
Scored across 3 tools
Each tool has a clearly distinct role: search_issues finds issues, summarize_issue loads details and comments, and draft_comment creates a proposed response. There is no meaningful overlap or ambiguous boundary between them.
All tool names follow a consistent verb_noun pattern in snake_case: search_issues, summarize_issue, draft_comment. The naming style is uniform and predictable across the entire server.
Three tools form a tight, well-scoped set for an issue triage workflow: find, understand, and draft a response. The count is neither too sparse nor excessive for the stated purpose.
The server covers the full triage lifecycle: discovering relevant issues, reading issue context with comments, and drafting a comment with optional posting. There are no obvious dead ends for the intended use case.