Skip to main content
Glama

gh-triage-mcp

A three-tool MCP server for GitHub issue triage. TypeScript. Stdio.

Most GitHub MCP servers wrap the REST API 1:1 and dump the JSON back into the model. That looks complete and costs you context. This one does the opposite: few tools, payloads shaped for the next call, a dry-run on the only write, retries on the client, and an offline eval that measures the difference.

Portfolio piece for agentic-engineering interviews. Not a product.

The problem

An agent triaging issues needs three things: a short list, one issue with enough context to decide, and a way to draft a comment without posting it by accident. It does not need node_id, reaction counts, or 47 overlapping tools.

HN already measured this: two MCP servers on the same todo API, same pass rate, 5× input tokens on the one that returned raw API objects and omitted the id the next write needed. (thread)

Related MCP server: mcp-gitpro

Tools

Tool

What it returns

Write?

search_issues

number, url, title, labels, body_excerpt, next.owner, next.repo, next.suggested_action

no

summarize_issue

the above plus the last five comments, excerpted

no

draft_comment

the draft. Posts only if confirm=true

gated

next.owner / next.repo / number are on every search hit so summarize_issue and draft_comment do not require a second lookup to learn which repo you are in.

Tradeoffs

  • Three tools, not a GitHub SDK. Labeling, assigning, closing, and projects are out of scope. If you need those, use github/github-mcp-server and pay the tool-count tax.

  • Excerpts, not full bodies. 480 characters. The eval treats that as a feature. A legal-discovery agent would hate it.

  • suggested_action is a heuristic, not a model. Keyword-level. It exists so the payload is honest about what a deterministic layer can do; swap it for a classifier if you actually ship this.

  • confirm=true is the only safety rail on writes. There is no human-in-the-loop protocol beyond "the client must pass the flag." Claude Desktop users who auto-approve tools can still shoot themselves.

  • Search uses GitHub's issue search, which lags and rate-limits. Unauthenticated traffic dies fast; set GITHUB_TOKEN.

Eval (offline, in CI)

npm run eval runs 20 synthetic search hits through a naive raw dump and through shapeIssue. Latest committed report:

Design

Pass (next tool call fillable)

Approx input tokens

naive raw REST dump

0/20 (0%)

12350

gh-triage-mcp shaped

20/20 (100%)

4227

Naive dump is 2.92× the tokens and still cannot fill summarize_issue(repo, number) without parsing URLs. See evals/REPORT.md.

Pass means "the next tool call can be filled from the payload." It is not a claim about any vendor model. Re-run with npm run eval; CI fails if shaped pass rate drops or the token ratio collapses.

Streamlit demo

The TypeScript stdio server is the product. Streamlit is the click-through: naive REST dump vs shaped payload, dry-run draft_comment.

pip install -r requirements.txt
streamlit run app.py

Streamlit Cloud: app file app.py. No secrets. Does not call GitHub.

Install

git clone https://github.com/theashleygross/gh-triage-mcp.git
cd gh-triage-mcp
npm install
npm test
npm run eval
npm run build

Claude Desktop / Cursor (claude_desktop_config.json or MCP settings):

{
  "mcpServers": {
    "gh-triage": {
      "command": "node",
      "args": ["/absolute/path/to/gh-triage-mcp/dist/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_..."
      }
    }
  }
}

Needs Node 20+. Token: public_repo is enough for public issues; repo for private. Comment posting always needs a token.

Tests

No network. Fake fetch. Covers shaping, 500-retry, 404-no-retry, timeouts, dry-run vs confirm on draft_comment.

npm test

What I would do differently

  • Streamable HTTP transport so this can sit behind a hosted demo, not just stdio.

  • A tiny fixture repo + cassette of real api.github.com traffic, so the eval is not only synthetic.

  • Optional fields allow-list on search, copying the official GitHub MCP's lesson that even shaped payloads get large.

  • Do not add tools until an eval shows a missed next-action that a new tool would fix.

License

MIT. Ashley Gross, 2026.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A production-ready server featuring over 28 tools for comprehensive GitHub analysis, including repository metadata, issue tracking, and workflow monitoring. It enables users to search repositories, analyze contributor activity, and inspect codebase health through natural language.
    1
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    A context-efficient GitHub MCP server designed for AI agents to manage repositories, issues, pull requests, and actions directly via cloud workflows. It focuses on a compact tool surface to minimize context waste while providing comprehensive read and write coverage without requiring a local Git CLI.
  • A
    license
    Not graded
    quality
    B
    maintenance
    A production-grade MCP server that provides LLMs with safe, structured, tool-based access to GitHub repositories, including issue management, semantic search, and guarded write operations.
    MIT

View all related MCP servers

Related MCP Connectors

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.

  • An MCP server that gives your AI access to the source code and docs of all public github repos

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/theashleygross/gh-triage-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server