Skip to main content
Glama
urahmank

pr-digest-mcp

by urahmank

pr-digest-mcp

An MCP server that syncs your GitHub pull request and review activity in the background and exposes it as tools Claude can call directly — so instead of checking multiple repos by hand, you can ask "what's blocking me on GitHub right now" or "summarize PR activity since Monday" and get a real answer.

Why it's built this way

The server does not try to summarize anything itself. It syncs GitHub state (PRs, review requests, submitted reviews, check status) into a local SQLite database on a poll interval, and exposes that as structured MCP tools. Claude — the MCP client — is the one that turns the structured data into a natural-language answer. That keeps the backend's job to what a backend is actually good at: integration, polling, normalizing, and state, not reimplementing an LLM.

See pr-digest-mcp-plan.md (project docs) for the full architecture and milestone plan.

Related MCP server: PR Reviewer MCP Server

Tools exposed

Tool

What it does

list_pending_reviews

Open PRs across tracked repos where a review is requested from you and not yet submitted.

whats_blocking_me

Open PRs you authored that have changes requested or failing checks.

summarize_pr_activity(since)

Structured PR/review/check activity updated after a given timestamp, freshly synced.

Setup

  1. Create a GitHub token. A classic PAT with repo scope (or a fine-grained token with PR + metadata read access to the repos you want to track) at https://github.com/settings/tokens.

  2. Install dependencies and generate the Prisma client:

    npm install
    npm run prisma:generate
    npm run prisma:migrate -- --name init
  3. Configure environment variables. Copy .env.example to .env and fill in:

    • GITHUB_TOKEN — the token from step 1

    • GITHUB_USERNAME — your GitHub username (used to filter "requested from me" / "authored by me")

    • TRACKED_REPOS — comma-separated owner/repo list, e.g. myorg/api,myorg/web

    • POLL_INTERVAL_MS — how often to re-sync (default 2 minutes)

  4. Build:

    npm run build

Registering it with Claude

Add it to your MCP client config (Claude Desktop's claude_desktop_config.json, or Claude Code's MCP settings) as a stdio server:

{
  "mcpServers": {
    "pr-digest": {
      "command": "node",
      "args": ["/absolute/path/to/pr-digest-mcp/dist/main.js"],
      "env": {
        "GITHUB_TOKEN": "...",
        "GITHUB_USERNAME": "...",
        "TRACKED_REPOS": "owner/repo1,owner/repo2"
      }
    }
  }
}

Restart the client, then try asking: "what's blocking me on GitHub right now?"

Development

npm run start:dev   # watch mode
npm run lint
npm test

Roadmap

Out of scope for v1, deliberately — see the project plan for the full list: webhook-based real-time sync (needs a public endpoint), multi-user support, richer per-event activity timelines (commits/comments, not just review state), and a second transport (SSE/HTTP) alongside stdio.

License

MIT

Related MCP Connectors

Related MCP Servers