Skip to main content
Glama
README.md
# git-context-mcp

> An MCP server that answers the one question every developer has: **"why does this code exist?"**

`git blame` tells you *who* wrote a line. This tells you *why*.

Given a file and line range, `git-context-mcp` traces back through the commit, finds the pull request that landed it, reads the PR description, and surfaces every linked GitHub issue — all in one shot, directly inside Claude.

---

## Demo

```
You: Why does line 87 of src/auth/session.ts exist?

Claude (using blame_context):
  Commit `a3f9c12` by Sarah Chen on 2024-08-14
  Message: "fix: rotate session tokens on privilege escalation"

  PR #441 — "Security: fix session fixation vulnerability"
  Merged: 2024-08-15  |  Labels: security, critical

  PR Description:
  > After the pen test in sprint 22, we found that session tokens
  > weren't being rotated when a user's role changed. This allows
  > a stolen low-priv token to be used after the account is promoted.

  Linked Issue #389 — "Session token not rotated on role change" (closed)
  > Reported by @contractor-red: "I was able to reuse a captured
  > token after my account was upgraded to admin..."
```

No more digging through git log, searching GitHub, and cross-referencing issue trackers. Claude does it in one step.

---

## Tools

| Tool | What it does |
|------|-------------|
| `blame_context` | File + line range → commit + PR description + linked issues |
| `commit_story` | Commit hash → full narrative (message, diff stat, PR, issues) |
| `file_history` | File → last N commits, each annotated with PR and issues |
| `search_commits` | Keyword → matching commits with PR/issue context |
| `file_contributors` | File → ranked author table (commits, lines owned, active dates) |

---

## Installation

### Option 1 — npx (no install)

```bash
claude mcp add git-context -- npx git-context-mcp
```

### Option 2 — global install

```bash
npm install -g git-context-mcp
claude mcp add git-context -- git-context-mcp
```

### Option 3 — manual config

Add to `~/.claude/claude_mcp_config.json`:

```json
{
  "mcpServers": {
    "git-context": {
      "command": "npx",
      "args": ["git-context-mcp"]
    }
  }
}
```

Then restart Claude Code.

---

## Requirements

- [Claude Code](https://claude.ai/code) (or any MCP-compatible client)
- `git` in PATH
- `gh` CLI ([install](https://cli.github.com)) + `gh auth login` for GitHub PR/issue lookups
  - Works without `gh` — just skips PR/issue context

---

## Usage examples

Once installed, talk to Claude naturally in any git repo:

```
"Why does line 42 of src/db/connection.ts exist?"
"What's the story behind commit d4a8f91?"
"Who owns the most of src/payments/stripe.ts?"
"When was the rate limiting added? Search commits for 'rate limit'"
"Show me the last 5 changes to src/api/auth.ts and why each was made"
```

---

## How it works

1. **`blame_context`** runs `git blame -p` on your lines to find the commit hash(es)
2. For each commit it calls `git show` for the full message and diff stat
3. It hits the GitHub API (`gh api /repos/:owner/:repo/commits/:hash/pulls`) to find the PR
4. It parses `#NNN` and `/issues/NNN` refs from the PR body and fetches each issue
5. Everything is returned as structured markdown for Claude to reason over

No tokens stored. No data sent anywhere except GitHub's own API (same as `gh` CLI).

---

## Contributing

PRs welcome. The entire server lives in [`src/index.ts`](src/index.ts).

```bash
git clone https://github.com/muhannad-hash/git-context-mcp
cd git-context-mcp
npm install
npm run dev   # watch mode
```

---

## License

MIT

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: blame_context focuses on line-level authorship and rationale, commit_story provides comprehensive commit details, file_contributors shows author statistics, file_history gives recent commit timeline, and search_commits enables keyword-based discovery. The descriptions clearly differentiate their scopes and use cases.

Naming Consistency5/5

All tools follow a consistent snake_case naming pattern with clear, descriptive compound names (e.g., blame_context, commit_story, file_contributors). The naming convention is uniform throughout, making the tool set predictable and easy to understand at a glance.

Tool Count5/5

With 5 tools, this server is well-scoped for its purpose of providing Git context and history insights. Each tool serves a specific, valuable function in the domain, and the count is neither too sparse nor bloated, allowing comprehensive coverage without overwhelming complexity.

Completeness5/5

The tool set offers complete coverage for exploring Git history and context: from line-level blame and commit details to file authorship, recent changes, and commit search. There are no obvious gaps; agents can navigate from high-level searches to detailed investigations seamlessly, covering the full lifecycle of code changes.

Maintenance

ActivityInactive
ResponsivenessNo issues