git-intel
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@git-intelShow me the knowledge map for the auth module"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GitIntel - A Git Intelligence MCP Server for AI Agents
Git Intelligence MCP Server - deep repository analytics computed locally from your commit history.
Surfaces the same insights that tools like CodeScene and GitPrime charge for: hotspots, temporal coupling, knowledge maps, churn analysis, complexity trends, risk scoring, and more. Everything runs locally. No external APIs, no data leaves your machine.
This is a locally-built MCP server. It is not published to npm. You clone, build, and register it with your MCP client & AI agents (Claude Code, Codex, etc.).
You: "Analyze this repo -- show me hotspots, risk, and who knows the auth module best."
Claude: [calls hotspots, risk_assessment, knowledge_map in parallel, returns formatted analysis]Architecture
GitIntel is a standalone MCP server that exposes a suite of tools and resources for analyzing git repositories. It communicates with any MCP client (Claude Code, Codex, etc.) over stdio using JSON-RPC.
graph LR
A[MCP Client<br/>Claude Code / Codex] <-->|stdio<br/>JSON-RPC| B[mcp-git-intel<br/>MCP Server]
B -->|execFile| C[Git CLI]
C --> D[Repository<br/>.git]
B --> E[Analysis Engine<br/>scoring, formatting]All communication happens over stdio using the Model Context Protocol. The server calls Git via execFile (never exec) to prevent shell injection. All operations are strictly read-only.
Related MCP server: GitIntel
Tools
12 analysis tools, each returning formatted tables, score bars, and actionable recommendations -- not raw git output.
graph TD
subgraph "Change Analysis"
H[hotspots<br/>Change frequency]
CH[churn<br/>Write/rewrite ratio]
CT[complexity_trend<br/>Complexity over time]
end
subgraph "Dependency Analysis"
CO[coupling<br/>Temporal coupling]
end
subgraph "Team Analysis"
KM[knowledge_map<br/>Who knows what]
CS[contributor_stats<br/>Team dynamics]
CP[commit_patterns<br/>Work patterns]
end
subgraph "Risk & Release"
RA[risk_assessment<br/>Change risk scoring]
RN[release_notes<br/>Changelog generation]
BR[branch_risk<br/>Branch health]
end
subgraph "Code Archaeology"
FH[file_history<br/>File evolution]
CA[code_age<br/>Staleness map]
endTool | What it does | Key insight |
| Files that change most frequently | Top 4% of files by change frequency contain 50%+ of bugs |
| Code written then rewritten (additions vs deletions) | Churn ratio near 1.0 = code rewritten as fast as it's written |
| Files that always change together | Hidden dependencies not visible in imports |
| Who knows a file/directory best, weighted by recency | Find the right reviewer, spot knowledge silos |
| How a file's complexity evolves over time | Catch files growing out of control |
| Risk score (0-100) for uncommitted or committed changes | Combines hotspot history, size, sensitivity, spread |
| Structured changelog from conventional commits | Groups by type, extracts breaking changes and PR refs |
| Team dynamics, collaboration graph, knowledge silos | Workload distribution, onboarding planning |
| Full commit history of a single file with rename tracking | Trace why a file looks the way it does |
| Age map showing when each file was last modified | Find dead code, abandoned features, stable infrastructure |
| Day-of-week, hour-of-day, commit size distributions | Spot weekend work, late-night hotfixes, oversized commits |
| Branch staleness, divergence, and merge risk analysis | Branch hygiene, cleanup candidates, merge planning |
Data Pipeline
Each tool transforms raw git output through a multi-stage pipeline:
graph LR
A["Git CLI<br/>raw output"] -->|parse| B["Structured Data<br/>LogEntry[], stats"]
B -->|score| C["Scored Results<br/>normalized 0-100"]
C -->|format| D["Formatted Output<br/>tables, bars, text"]
D -->|wrap| E["MCP Response<br/>CallToolResult"]Resources
Resources are pre-computed summaries or feeds that can be read directly without arguments. Useful for quick snapshots or embedding into prompts.
Resource URI | Description |
| Repository snapshot: branch, last commit, total commits, active contributors, top languages, age, remote |
| Recent 50-commit activity feed with stats |
Installation
This server is not published to npm. You must clone, build, and register it locally.
Prerequisites
Node.js >= 18
Git >= 2.20
Build from source
git clone https://github.com/hoangsonww/GitIntel-MCP-Server.git
cd GitIntel-MCP-Server
npm install
npm run buildRegister with Claude Code
Important: For best results, always open Claude Code inside a git repository directory. The server auto-detects the repo from your working directory. If you open Claude Code from a non-repo folder (e.g. your home directory), you will need to pass repo_path to every tool call manually.
Quick registration (analyzes cwd by default):
claude mcp add git-intel -- node /absolute/path/to/mcp-server/dist/index.jsWith a specific repository:
claude mcp add git-intel -- node /absolute/path/to/mcp-server/dist/index.js /path/to/your/repoRegister with any MCP client (manual JSON)
Add to your MCP client's configuration file (e.g. ~/.claude.json for Claude Code global config):
{
"mcpServers": {
"git-intel": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": {}
}
}
}With a pinned default repository (optional — useful if you always analyze the same repo):
{
"mcpServers": {
"git-intel": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": {
"GIT_INTEL_REPO": "/path/to/your/repo"
}
}
}
}Tip: The ~ home directory expansion works in the repo path argument (e.g. ~/projects/my-repo).
Also: When registered globally (in ~/.claude.json), the server auto-detects the git repo in your current working directory. No GIT_INTEL_REPO needed — just open Claude Code inside any git repo.
Configuration
Default Repository Resolution
The server determines which git repository to use as the default using this priority order:
Priority | Method | Example |
1 | CLI argument |
|
2 | Environment variable |
|
3 | Current working directory | Falls back to |
The ~ prefix is expanded to the user's home directory in all path inputs.
Per-Tool repo_path Override
Every tool accepts an optional repo_path parameter that overrides the default repository for that specific call. This allows analyzing any repository on disk without reconfiguring the server:
{ "repo_path": "C:/Users/you/other-project", "days": 90 }Resilient Startup (No-Crash Mode)
The server never crashes on startup, even when launched from a non-git directory. Instead:
If a git repository is found, it becomes the default for all tools.
If no git repository is found, the server starts anyway with no default repo. Tools require the
repo_pathparameter to specify which repo to analyze.Resources (
git://repo/summary,git://repo/activity) return informative messages directing the user to open Claude Code inside a git repo or userepo_path.
flowchart TD
Start["Server starts"] --> CheckRepo{"Is cwd a\ngit repo?"}
CheckRepo -->|Yes| Default["Set as default repo\nAll tools work immediately"]
CheckRepo -->|No| NoDefault["Start with no default\nTools require repo_path"]
Default --> Ready["Server ready\n12 tools, 2 resources"]
NoDefault --> Ready
Ready --> Call{"Tool called"}
Call --> HasArg{"repo_path\nprovided?"}
HasArg -->|Yes| UseArg["Use repo_path"]
HasArg -->|No| HasDefault{"Default repo\navailable?"}
HasDefault -->|Yes| UseDefault["Use default repo"]
HasDefault -->|No| Error["Return helpful error:\n'Open Claude Code in a git repo\nor pass repo_path'"]
UseArg --> Execute["Execute git analysis"]
UseDefault --> ExecuteThis design means the server works as a global MCP server in Claude Code — it connects successfully regardless of which project directory you open.
Usage Examples
Once registered, the tools are available through natural language. You do not call them directly -- the AI client decides which tools to invoke based on your prompt.
Find bug-prone files:
"Show me the change hotspots in the last 60 days"
Analyze code stability:
"What's the churn analysis for the src/api directory over the last quarter?"
Find hidden dependencies:
"Which files are temporally coupled with src/auth/login.ts?"
Find the right reviewer:
"Who knows the src/api directory best?"
Track complexity growth:
"Show me the complexity trend for src/services/payment.ts"
Assess change risk before merging:
"What's the risk assessment for the uncommitted changes?" "Assess the risk of changes between main and feature-branch"
Generate release notes:
"Generate release notes from v1.0.0 to HEAD"
Understand team dynamics:
"Show me contributor statistics for the last 6 months" "Who are the top collaborators and where are the knowledge silos?"
Trace a file's evolution:
"Show me the full history of src/auth/login.ts"
Find stale or abandoned code:
"What are the oldest files in the src/ directory?" "Show me code age analysis for the project"
Analyze work patterns:
"What are the commit patterns for the last 3 months?" "When does the team usually commit?"
Branch hygiene:
"Which branches are stale or highly diverged?" "Show me branch risk analysis against main"
Full repo analysis:
"Using git-intel, give me a comprehensive analysis of this repository"
See docs/EXAMPLES.md for a complete real-world transcript of a full repo analysis session.
Development
graph LR
subgraph "Development"
Dev["npm run dev<br/>tsx auto-reload"]
CLI["npm run cli<br/>Interactive REPL"]
end
subgraph "Testing"
Unit["npm test<br/>Vitest unit tests"]
Smoke["npm run smoke<br/>Full integration"]
end
subgraph "Quality"
Lint["npm run lint<br/>tsc --noEmit"]
Fmt["npm run format<br/>Prettier"]
end
subgraph "Ship"
Build["npm run build<br/>TypeScript → dist/"]
end
Dev --> Unit --> Lint --> Build
CLI --> Smokenpm run dev # Run server with tsx (auto-reload, uses cwd as repo)
npm run cli # Interactive REPL for testing tools and resources
npm run smoke # Automated smoke test -- runs every tool and resource
npm test # Run unit tests (vitest)
npm run test:watch # Watch mode
npm run lint # Type check (tsc --noEmit)
npm run build # Compile TypeScript to dist/CLI REPL
The interactive CLI (npm run cli) spawns the MCP server as a child process, connects as a real MCP client over stdio, and provides a REPL for calling tools and reading resources.
sequenceDiagram
participant User as Developer
participant CLI as cli.ts (MCP Client)
participant Server as index.ts (MCP Server)
participant Git as Git CLI
User->>CLI: npm run cli [repo_path]
CLI->>Server: Spawn via StdioClientTransport
Server-->>CLI: Connected (JSON-RPC over stdio)
CLI->>User: git-intel> prompt
User->>CLI: call hotspots {"days": 60}
CLI->>Server: callTool("hotspots", {days: 60})
Server->>Git: git log --since=...
Git-->>Server: raw output
Server-->>CLI: formatted analysis
CLI->>User: Display result + elapsed time
User->>CLI: read git://repo/summary
CLI->>Server: readResource("git://repo/summary")
Server-->>CLI: repo snapshot
CLI->>User: Display result
User->>CLI: exit
CLI->>Server: close()Start the CLI:
npm run cli # Uses current directory as repo
npm run cli ~/projects/myapp # Analyze a specific repoAvailable commands:
Command | Description |
| List all registered tools with parameters |
| List all registered resources |
| Call a tool with optional JSON arguments |
| Read a resource by URI |
| Show help |
| Quit the CLI |
Example session:
git-intel> tools
Available tools (12):
hotspots Identify files that change most frequently...
params: repo_path, days, limit, path_filter
churn Analyze code churn...
params: repo_path, days, limit, path_filter
...
git-intel> call hotspots {"days": 60, "limit": 5}
Calling hotspots...
(42ms)
## Change Hotspots (last 60 days)
File Changes Authors Last Changed Heat
-------------------- ------- ------- ------------ ---------------
src/index.ts 12 2 2026-03-08 [██████████] 100
src/tools/risk.ts 8 1 2026-03-07 [██████░░░░] 67
...
git-intel> call knowledge_map {"path": "src/auth"}
Calling knowledge_map...
(38ms)
## Knowledge Map: src/auth (last 365 days)
...
git-intel> call risk_assessment
Calling risk_assessment...
(125ms)
## Risk Assessment: uncommitted changes
...
git-intel> read git://repo/summary
Reading git://repo/summary...
(15ms)
Branch: master
Last commit: c4934239 by dav nguyxn on 2026-03-09
...
git-intel> exit
Bye.See docs/CLI.md for the full CLI reference.
This is useful for manual testing and debugging without needing to go through an AI client.
Smoke Test
npm run smoke connects to the server and calls every tool and every resource against the current repo, printing all results. Useful for verifying nothing is broken after changes.
Security Model
graph LR
Input["User / AI Input"] --> V1["validatePathFilter()<br/>Blocks .. and abs paths"]
Input --> V2["validateRef()<br/>Strict char whitelist"]
V1 --> Safe["Sanitized Args<br/>(string array)"]
V2 --> Safe
Safe --> ExecFile["execFile()<br/>No shell involved"]
ExecFile --> Git["Git CLI<br/>read-only commands only"]
Git --> Repo[".git<br/>No writes ever"]
subgraph "Environment Hardening"
E1["GIT_TERMINAL_PROMPT=0"]
E2["GIT_PAGER=''"]
E3["LC_ALL=C"]
E4["30s timeout"]
E5["50MB buffer limit"]
end
ExecFile -.-> E1 & E2 & E3 & E4 & E5Concern | Mitigation |
Shell injection | All git commands use |
Path traversal |
|
Ref injection |
|
Write operations | Strictly read-only. No tool modifies the repository in any way |
Network access | No external network calls. All data is local |
Git safety |
|
Timeouts | 30-second default timeout on all git commands |
Buffer limits | 50MB max buffer to prevent memory exhaustion |
We take security seriously. This server is designed to be safe to run on any machine with access to git repositories. Here are the key mitigations for potential attack vectors: |
Concern | Mitigation |
Shell injection | All git commands use |
Path traversal |
|
Ref injection |
|
Write operations | Strictly read-only. No tool modifies the repository in any way |
Network access | No external network calls. All data is local |
Git safety |
|
Timeouts | 30-second default timeout on all git commands |
Buffer limits | 50MB max buffer to prevent memory exhaustion |
Project Structure
The code is organized into clear modules for git interaction, analysis tools, resources, and utilities. The entry point (index.ts) sets up the MCP server and registers all tools and resources.
src/
index.ts Entry point, server setup, tool/resource registration (resilient startup)
cli.ts Interactive REPL for testing
smoke-test.ts Automated smoke test
git/
executor.ts Safe git command runner (execFile, timeouts, env)
parser.ts Git output parsers (log, numstat, conventional commits)
repo.ts Repo validation, path/ref sanitization
tools/
hotspots.ts Change frequency analysis
churn.ts Code churn (additions vs deletions)
coupling.ts Temporal coupling detection
knowledge-map.ts Knowledge scoring per author
complexity.ts Complexity trend over time
risk.ts Multi-factor risk assessment
release-notes.ts Changelog from conventional commits
contributors.ts Contributor analytics and collaboration
file-history.ts Single-file evolution with rename tracking
code-age.ts File staleness and age distribution
commit-patterns.ts Work pattern analytics (time, size)
branch-risk.ts Branch staleness and divergence detection
resources/
summary.ts Repository snapshot resource (graceful degradation)
activity.ts Recent commit activity feed (graceful degradation)
util/
scoring.ts Normalization, recency decay, coupling, risk scoring
formatting.ts Tables, score bars, text output helpers
resolve-repo.ts Per-call repo resolution with fallback chain and error messagesFurther Documentation
This README provides a high-level overview. For deeper technical details, see:
ARCHITECTURE.md-- Deep technical architecture, design decisions, module dependenciesdocs/TOOLS.md-- Detailed reference for every tool (schemas, examples, interpretation)docs/CLI.md-- Full CLI reference with all commands, parameters, and examplesdocs/EXAMPLES.md-- Real-world usage transcript showing a full repo analysis session
License
MIT. See LICENSE for details.
Available Tools
12 toolsbranch_riskBranch Risk AnalysisARead-only
Analyze all branches for staleness, divergence from the main branch, and merge risk. Identifies stale branches that should be cleaned up, branches that have diverged significantly and may cause merge conflicts, and branches with no recent activity. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. | |
| base_branch | No | Branch to compare against (default: HEAD). Typically "main" or "master". | HEAD |
| include_remote | No | Include remote tracking branches (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already communicates non-mutating behavior, and the description adds valuable context by listing the concrete analysis outputs (stale, diverged, inactive branches) and the critical precondition that repo_path must be provided when not already inside a git repo. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly written: a first sentence stating the main purpose, a second listing the key findings, and a final note on a required parameter. Every sentence carries meaningful content with no fluff or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description appropriately conveys the result categories and the key usage requirement. It could be slightly more explicit about the exact return format (e.g., a list of branch risk objects), but for a read-only analysis tool with no required parameters, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with descriptive explanations for all three parameters, so the baseline is 3. The description reinforces the repo_path requirement but does not add new semantic details for base_branch or include_remote beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Analyze all branches for staleness, divergence from the main branch, and merge risk.' It clearly distinguishes this branch-centric tool from sibling tools like hotspots and risk_assessment by focusing on branch health rather than broader codebase risks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use: identifying stale branches for cleanup, branches likely to cause merge conflicts, and inactive branches. It also gives an important prerequisite note about repo_path. However, it does not explicitly state when to prefer this tool over siblings like risk_assessment, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
churnCode Churn AnalysisARead-only
Analyze code churn — how much code is being written and then rewritten. High churn indicates instability, unclear requirements, or code that is hard to get right. A file with 500 lines added and 400 deleted in a month is a red flag. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look back (default: 90) | |
| limit | No | Max results to return (default: 20, max: 100) | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. | |
| path_filter | No | Filter to files under this path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-open-world. The description adds interpretive context about churn, but its only operational note (repo_path requirement) essentially duplicates the parameter schema. It does not disclose output format, pagination, or other behavior beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the purpose, provides a concrete example to clarify the concept, and ends with a practical note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema covers parameters and annotations cover safety, so the description's addition of domain context is valuable. However, with no output schema, it doesn't state what the tool returns (e.g., a ranked list of files), which would be helpful. Overall, it is adequate for the tool's apparent simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides descriptions for all 4 parameters, so the baseline is 3. The description adds no additional parameter syntax or format guidance; it only reiterates the repo_path requirement already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's specific action ('Analyze code churn') and resource ('code churn'), and it explains what churn means. It does not explicitly distinguish from sibling tools, but the subject matter is sufficiently unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when the tool is useful (identifying instability or hard-to-maintain code) and gives a crucial prerequisite (repo_path when the server isn't in a git repo). It does not mention alternative tools or exclusion criteria, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_ageCode Age AnalysisARead-only
Show the age of code in each file — when it was last modified. Identifies stale files that haven't been touched in months or years (potential dead code or abandoned features) vs actively maintained areas. Useful for cleanup planning, onboarding, and understanding which parts of the codebase are actively evolving. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort order: "oldest" shows stalest files first, "newest" shows most recent first | oldest |
| limit | No | Max files to return (default: 30, max: 100) | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. | |
| path_filter | No | Filter to files under this path (e.g., "src/") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, lowering the bar. The description adds meaningful behavioral context beyond annotations: the requirement to provide repo_path when not in a git repo, and the interpretation of results (stale vs actively maintained files). It does not contradict the readOnlyHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—three sentences plus a note—and each sentence contributes distinct value: purpose, interpretation, use cases, and a critical requirement. It is front-loaded and contains no superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is read-only with well-described parameters and a clear purpose. The description covers key use cases and the repo_path caveat, though it does not specify the exact output format. Given the lack of an output schema, this is a minor gap and does not hinder correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add meaning beyond the schema for sort, limit, or path_filter; it only reinforces the repo_path requirement that already appears in the schema. Thus it meets but does not exceed baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Show the age of code in each file — when it was last modified.' It uses a specific verb and resource, and distinguishes itself from sibling tools by focusing on staleness versus active maintenance, which is not covered by other analysis tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use cases ('cleanup planning, onboarding, and understanding which parts of the codebase are actively evolving') and a critical prerequisite (repo_path if not in a git repo). However, it does not explicitly name alternative tools or state when not to use it, so it falls short of perfect exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
commit_patternsCommit PatternsARead-only
Analyze when and how the team commits — day-of-week distribution, hour-of-day heatmap, commit size breakdown, and weekly velocity trends. Reveals work patterns like weekend deployments, late-night hotfixes, or declining commit velocity. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look back (default: 90) | |
| author | No | Filter to a specific author (exact match on name) | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already establishes safe read behavior, but the description adds valuable context by explaining what the analysis reveals (weekend deployments, late-night hotfixes, declining commit velocity). It also discloses the repo_path requirement, which is a meaningful behavioral caveat. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences plus a prerequisite note, all front-loaded. Every sentence contributes either a concrete analytical output, an interpretive hint, or a critical usage condition. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex with no output schema, but the description conveys the nature of the results (distributions, heatmap, breakdown, trends) and the required context (repo_path). Combined with the complete parameter schema and sibling tool context, this is sufficient for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for all three parameters, so the description does not need to explain them. The mention of repo_path in the description reinforces its requirement but does not add new semantic meaning beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Analyze') and clearly identifies the resource ('the team commits') along with the exact analytical outputs (day-of-week distribution, hour-of-day heatmap, commit size breakdown, weekly velocity trends). This distinguishes it from sibling tools like hotspots or churn, which focus on code areas or turnover, not temporal commit patterns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (to analyze commit timing and velocity patterns) and provides a critical prerequisite: repo_path must be supplied if the server was not started in a git repo. However, it does not explicitly compare against alternatives or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complexity_trendComplexity TrendARead-only
Track how a file's complexity has changed over time by sampling its state at regular intervals in git history. Identifies files growing out of control, complexity spikes from specific commits, and files that need splitting. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days to look back (default: 180) | |
| path | Yes | File path to analyze (relative to repo root) | |
| samples | No | Number of time samples (default: 10, max: 30) | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is established. The description adds behavioral context by explaining it samples at regular intervals in git history and can attribute spikes to specific commits. It also clarifies the repo_path requirement. It does not contradict annotations and adds meaningful detail beyond them, though it omits potential return format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences: the main purpose, the output value, and an essential prerequisite. Each sentence earns its place, with zero fluff. It is front-loaded with the core functionality and structured logically.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides a high-level expectation of what the tool returns (identifies files growing, spikes from commits, files needing splitting). It covers the core purpose and operational requirements. It falls short of a 5 because it doesn't explicitly describe the result format or edge cases like empty git histories, but it's sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter clearly documented (path, days, samples, repo_path) including defaults and constraints. The description's note about repo_path adds little beyond what the schema already states, so it provides minimal extra semantic value. Baseline 3 is appropriate when the schema handles the parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Track') and resource ('a file's complexity') and clearly states the methodology (sampling git history) and outputs (identifies files growing out of control, complexity spikes, files needing splitting). This clearly distinguishes it from sibling tools like hotspots or file_history, which focus on different metrics or time-based changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use this tool: to analyze complexity trends, detect spikes, or identify files that need splitting. It does not explicitly mention alternatives or exclusions, but the use cases are unambiguous. The repo_path prerequisite provides additional usage guidance, so the context is solid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
contributor_statsContributor StatisticsARead-only
Comprehensive contributor analytics: who is active, what areas they work in, their commit patterns, and collaboration graph. Useful for understanding team dynamics, identifying knowledge silos, onboarding planning, and workload distribution. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days to look back (default: 90) | |
| author | No | Filter to a specific author name (partial match) | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, covering the safety profile. The description adds an important behavioral prerequisite: the repo_path must be provided if the server was not started in a git repo. This goes beyond what annotations provide, though it doesn't describe return format or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences plus a note. It front-loads the purpose, lists use cases efficiently, and ends with a critical usage note. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analytics tool with no output schema, the description does a good job of conveying what the tool returns (active contributors, areas, commit patterns, collaboration graph). It also covers the repo_path requirement. It doesn't describe edge cases or output formatting, but for this level of complexity it's reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces the repo_path requirement in the note but doesn't add significant extra meaning beyond what the schema already documents for days and author. It's adequate but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Comprehensive contributor analytics' and enumerates specific aspects (activity, areas, commit patterns, collaboration graph). It distinguishes from siblings like commit_patterns and churn through its broader scope, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete use cases: 'understanding team dynamics, identifying knowledge silos, onboarding planning, and workload distribution.' It gives clear context for when to use the tool but does not explicitly mention when not to use it or point to alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
couplingTemporal CouplingARead-only
Find files that always change together (temporal coupling). These represent hidden dependencies not visible in imports or type signatures. If auth.ts and middleware.ts change together in 90% of commits, refactoring one without the other will likely break things. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days to look back (default: 90) | |
| limit | No | Max pairs to return (default: 20) | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. | |
| min_commits | No | Minimum shared commits to report (default: 3) | |
| path_filter | No | Filter to files under this path | |
| min_coupling | No | Minimum coupling score 0-1 (default: 0.5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, and the description adds meaningful operational context: it requires being inside a git repo (or repo_path), and it explains that findings represent co-change patterns. It doesn't contradict annotations and adds value beyond the safety annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core verb and resource, and uses an example plus a necessary note. Every sentence earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, but the description conveys the core output concept (file pairs that change together) through the example and the parameters like limit and min_coupling. It doesn't explicitly state the return format, but for an analysis tool with good schema coverage, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are described in the schema (100% coverage), so the baseline is 3. The description reinforces the repo_path requirement and gives an intuitive example of the coupling threshold, but it doesn't add significant syntax or format details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource ('Find files that always change together') and clarifies that it reveals hidden dependencies not visible in imports, distinguishing it from sibling analysis tools. The concrete example (auth.ts/middleware.ts) reinforces what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use the tool (identifying hidden dependencies before refactoring) and includes an operational note about repo_path. However, it does not explicitly name alternative sibling tools or state when not to use it, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_historyFile HistoryARead-only
Show the full commit history of a specific file — who changed it, when, how much, and why. Useful for understanding why a file looks the way it does, finding when a bug was introduced, or tracing the evolution of a module. Uses --follow to track renames. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look back (default: 365) | |
| path | Yes | File path to analyze (e.g., "src/index.ts") | |
| limit | No | Max commits to return (default: 30, max: 100) | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description adds value by disclosing the --follow flag for rename tracking and the mandatory repo_path condition when the server isn't in a git repo. These are behavioral details beyond the read-only hint, though it doesn't describe return format or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the primary action, followed by use cases and a critical note. Every sentence earns its place, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, full schema coverage, and read-only annotations, the description provides sufficient context: purpose, use cases, rename tracking, and a prerequisite. It lacks an output schema but the tool's return value is inferable from the described purpose; minor gap is not mentioning commit count limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description reinforces the overall purpose but adds no specific parameter-level detail beyond what schema fields provide, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Show the full commit history of a specific file' with explicit scope and output dimensions (who, when, how much, why). It differentiates from sibling tools like churn or commit_patterns by focusing on a single file's history rather than aggregate metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete use cases ('understanding why a file looks the way it does, finding when a bug was introduced') that help the agent decide when to invoke it. It does not explicitly mention alternatives or exclusions, but the context is clear enough to distinguish from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hotspotsChange HotspotsARead-only
Find files that change most frequently. High change frequency correlates with defect density — the top 4% of files by change frequency typically contain 50%+ of bugs. Use this to identify files that need refactoring, better test coverage, or architectural attention. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look back (default: 90) | |
| limit | No | Max results to return (default: 20, max: 100) | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. | |
| path_filter | No | Filter to files under this path (e.g., "src/api") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint=true already covering safety, the description adds meaningful behavioral insight: the correlation with defect density and the requirement for repo_path when the server isn't started in a git repo. This goes beyond annotation-provided information and helps the agent anticipate when the tool may fail or need additional input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences: the first states the purpose, the second provides valuable context, and the third gives a critical usage note. Every sentence earns its place with no fluff, and the front-loaded structure ensures the core function is immediately clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description covers what the tool does, why it matters (defect correlation), what actions to take based on results, and a key prerequisite (repo_path). For a read-only analysis tool with four optional parameters documented in the schema, this is complete enough for an agent to select and invoke it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add extra parameter semantics beyond the schema; it only reiterates the repo_path note already present in the schema. Therefore, no additional value is provided beyond the schema, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Find files that change most frequently,' which unambiguously defines the tool's purpose. The title 'Change Hotspots' reinforces this, and the additional context about defect density distinguishes it from generic change analysis tools like 'churn' by clarifying the analytical focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear use cases ('identify files that need refactoring, better test coverage, or architectural attention') and a critical prerequisite (repo_path when not in a git repo). However, it does not explicitly contrast with sibling tools like 'churn' or 'complexity_trend', nor state when not to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
knowledge_mapKnowledge MapARead-only
Show who knows a file or directory best, weighted by recency, volume of changes, and commit frequency. Use this to find the right reviewer for a PR, identify knowledge silos, or plan for team transitions. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days to look back (default: 365) | |
| path | Yes | File or directory path to analyze (relative to repo root) | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so safety is covered. The description adds meaningful behavioral context: the weighting logic and a critical prerequisite note about providing repo_path when the server isn't started in a git repo. This goes beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a clear purpose: state the core capability, list concrete use cases, and flag an important prerequisite. It is front-loaded with the primary function and contains no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not describe return values, but it covers purpose, usage scenarios, and an important edge case (repo_path). The tool is relatively simple, and the description is sufficient for an agent to understand when and how to invoke it, though a hint about output format would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented. The description reinforces the repo_path requirement and explains the 'path' parameter's role (file/directory to analyze), but adds no new syntax or format details beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Show') and clearly identifies the resource ('who knows a file or directory best'), with explicit weighting criteria (recency, volume, commit frequency). This distinguishes it from sibling analytics tools like hotspots or churn, which focus on different metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'find the right reviewer for a PR, identify knowledge silos, or plan for team transitions.' It does not mention when not to use it or name alternative tools, but the use cases are concrete and well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
release_notesRelease Notes GeneratorARead-only
Generate structured release notes from commits between two git refs. Groups by conventional commit type, extracts breaking changes, and links PR/issue references. Supports grouping by type, scope, or author. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| to_ref | No | Ending ref (default: HEAD) | HEAD |
| from_ref | Yes | Starting ref (tag, branch, or commit hash) | |
| group_by | No | How to group commits (default: type) | type |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds meaningful behavioral details: grouping by conventional commit type, extracting breaking changes, linking PR/issue references, and the repo_path requirement. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and includes only essential contextual information (the repo_path caveat). Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no output schema), the description covers all necessary aspects: the task, grouping options, extracted elements (breaking changes, PR/issue links), and the essential repo_path prerequisite. It is complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all four parameters. The description adds a high-level mention of grouping by type/scope/author, but this is already reflected in the schema's group_by parameter. No additional parameter semantics beyond the schema are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Generate' with a clear resource: 'structured release notes from commits between two git refs.' It distinguishes the tool from all sibling tools (code analysis tools like hotspots, churn, etc.) by clearly defining its unique function and output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this when you need release notes from commits between refs. It also includes a critical prerequisite note about providing repo_path when the server isn't inside a git repo. It doesn't explicitly mention alternatives, but no sibling tools serve the same purpose, so exclusion isn't necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
risk_assessmentChange Risk AssessmentARead-only
Assess the risk profile of uncommitted changes or a specific commit range. Combines multiple signals: file hotspot history, change size, number of files, author familiarity, and file type sensitivity. Returns a score 0-100 with per-file breakdown and actionable recommendations. NOTE: If the server was not started inside a git repo, you MUST provide repo_path.
| Name | Required | Description | Default |
|---|---|---|---|
| ref_range | No | Git ref range to assess (e.g., "main..feature-branch"). Defaults to uncommitted changes. | |
| repo_path | No | Absolute path to the git repository to analyze. Required if Claude Code was not opened in a git repo. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations state readOnlyHint=true, and the description adds that it combines multiple signals, returns a score 0-100 with per-file breakdown and actionable recommendations, and requires repo_path under a specific condition. This provides meaningful behavioral context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, output/signals, and a critical usage note. Front-loaded and free of fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only analytical tool with no output schema, the description adequately covers when to use it, what signals contribute, what output to expect (score, breakdown, recommendations), and the mandatory repo_path condition. This is complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are already fully described in the schema (100% coverage). The description repeats the repo_path requirement and ref_range default but does not add new semantic information beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Assess the risk profile of uncommitted changes or a specific commit range.' It also names the unique combination of signals (file hotspot history, change size, author familiarity, etc.) that distinguishes this tool from siblings like hotspots or branch_risk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is clearly stated: assessing uncommitted changes or a commit range. It also gives a conditional usage guideline for repo_path when the server is not in a git repo. No explicit exclusions or alternative tool references, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v1.0.0- First observed
branch_risk - First observed
churn - First observed
code_age - First observed
commit_patterns - First observed
complexity_trend - First observed
contributor_stats - First observed
coupling - First observed
file_history - First observed
hotspots - First observed
knowledge_map - First observed
release_notes - First observed
risk_assessment
TDQS
Each tool targets a distinct analytical dimension such as change frequency, code churn, file coupling, contributor ownership, complexity trends, risk assessment, release notes, contributor stats, file history, code age, commit patterns, and branch risk. While some tools touch on contributor or file history, their outputs and use cases are clearly distinct.
All tool names follow a consistent lower-case snake_case noun pattern, using either single words (e.g., hotspots, churn) or compound nouns (e.g., knowledge_map, risk_assessment). No mixed conventions or vague action verbs are present, making the set predictable.
12 tools fall comfortably within the ideal 3-15 range for a focused domain. Each tool addresses a specific repository analytics need without unnecessary overlap, making the set well-scoped.
The tool set covers a comprehensive range of repository intelligence, including hotspots, churn, coupling, ownership, complexity, risk, release notes, contributor analytics, file history, code age, commit patterns, and branch health. Minor gaps such as a general repository summary exist, but core analytical workflows are well covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
AI-native git hosting — repos, PRs, issues, CI gates, and AI code review over MCP (60 tools).
Enterprise code intelligence for M&A, security audits, and tech debt. Hosted server with 200k free.
Generate answers & visualizations from your engineering data to track software development health.
Related MCP Servers
- AlicenseBqualityDmaintenanceA specialized MCP server for in-depth analysis of git repositories, offering tools for branch overview, time period analysis, file changes, and merge recommendations.47Apache 2.0
- AlicenseAqualityBmaintenanceA local Git intelligence MCP server that provides deep repository analytics including hotspots, temporal coupling, knowledge maps, churn analysis, and risk scoring for AI agents.1212MIT
- AlicenseNot gradedqualityCmaintenanceA production-grade MCP server for local git repositories that provides tools for code search, git history analysis, complexity metrics, test discovery, and dependency management.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI assistants deep understanding of your local Git repositories, providing instant repo overviews, change summaries, blame analysis, changelogs, branch health checks, and history search.62MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/JBrightmanAI/GitIntel-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server