Skip to main content
Glama
EnesOzturk11

Git MCP Server

by EnesOzturk11

Git MCP Server

A Model Context Protocol (MCP) server that gives AI assistants the ability to inspect local Git repositories and interact with the GitHub API — reading commit history, diffs, file contents, issues, comments, pull requests, and project boards — all from a single, modular TypeScript server.


Tools

The server exposes 10 tools across four categories.

Git

Tool

Description

get_git_status

Returns all uncommitted changes in a local repository (equivalent to git status).

get_git_log

Retrieves recent commit history with hash, author, date, and message. Accepts a maxCount limit.

get-git-diff

Shows line-by-line file differences. Can be scoped to a specific file or limited to staged changes only.

get_repo_structure

Returns the full directory and file tree of a repository — useful for architectural overviews and documentation.

File System

Tool

Description

read_local_file

Reads the entire content of a small file at once. Ideal for source files and configs.

read_local_file_chunk

Reads a specific line range (startLineendLine) from a large file, avoiding unnecessary context.

GitHub Issues

Tool

Description

fetch_all_issues

Fetches all issues (open and closed) from a remote GitHub repository.

get_issue_comments

Retrieves all comments on a specific issue by number, including author and timestamps.

create_and_board_issue

Creates a new issue with title, body, labels, assignees, and priority — then automatically adds it to the repository's GitHub Projects board. Handles multi-project repos by prompting for project selection.

GitHub Pull Requests

Tool

Description

fetch_merged_prs

Lists recent pull requests from a repository. Toggle between merged and open PRs with isMerged. Useful for generating changelogs and release notes.


Related MCP server: Simple Code Review Assistant

Architecture

The server follows a layered, modular design introduced in PR #1:

src/
├── index.ts              # Server bootstrap — wires tools to the MCP server
├── config.ts             # Centralised environment config (GITHUB_TOKEN, cache TTL)
├── services/
│   ├── github-rest.ts    # GitHub REST API client
│   ├── github-graphql.ts # GitHub GraphQL client (used for Projects v2 boarding)
│   ├── cache.ts          # In-memory project metadata cache (1 h TTL)
│   └── git-cmd.ts        # Local Git CLI wrapper
├── tools/
│   ├── git.ts            # Git operation tools
│   ├── filesystem.ts     # File reading tools
│   ├── issues.ts         # GitHub Issue tools
│   └── pulls.ts          # GitHub Pull Request tools
├── types/
│   ├── github.ts         # GitHub API response types
│   ├── cache.ts          # Cache types
│   └── git.ts            # Git operation types
└── utils/
    └── helpers.ts        # Shared utility functions

Requirements

  • Node.js v18 or later

  • GitHub Personal Access Token with repo and project scopes


Installation

# Clone the repository
git clone https://github.com/EnesOzturk11/Git-MCP-Server.git
cd Git-MCP-Server

# Install dependencies
npm install

# Build
npm run build

Configuration

The server reads a single environment variable:

Variable

Required

Description

GITHUB_TOKEN

Yes

Personal Access Token for GitHub API authentication

Create a .env file in the project root or export the variable in your shell:

GITHUB_TOKEN=ghp_your_token_here

Usage with Claude Desktop

Add the server to your Claude Desktop configuration file (claude_desktop_config.json):

{
  "mcpServers": {
    "git-mcp-server": {
      "command": "node",
      "args": ["/absolute/path/to/Git-MCP-Server/build/index.js"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_token_here"
      }
    }
  }
}

Restart Claude Desktop — the 10 tools will become available immediately.


Tech Stack

Layer

Technology

Language

TypeScript 5

Runtime

Node.js (ESM)

Protocol

Model Context Protocol SDK ^1.26.0

Validation

Zod ^4.3.6

GitHub API

REST + GraphQL (Projects v2)

Environment

dotenv


Contributing

Issues and pull requests are welcome. Please open an issue first to discuss any significant changes.

Available Tools

10 tools
create_and_board_issueCreate GitHub Issue and Board the IssueA

Creates a new issue in a GitHub repository and automatically assigns it to the project board with a specific priority. Use this when identifying bugs, technical debt, or documentation gaps that need tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesA detailed Markdown-formatted description. Include reproduction steps, code snippets, and why this fix/feature is necessary.
typeNoThe category of the issue, such as 'bug', 'feature', 'refactor', or 'documentation'.
titleYesA descriptive, high-level title for the issue. Be concise but specific.
labelsNoAn array of labels to categorize the issue (e.g., ['bug', 'help wanted']). Labels must exist in the repo or will be created.
assigneeNoThe GitHub handle of the primary person responsible for this issue. Use this for single assignments.
priorityYesThe urgency level. This will determine the issue's placement and metadata on the project board.
repoNameYesThe exact name of the repository where the issue will be created (e.g., 'hello-world').
assigneesNoA list of GitHub handles to assign to this issue. Use this if multiple people need to be tagged.
repoOwnerYesThe GitHub username or organization name that owns the repository (e.g., 'octocat').
targetProjectNameNoIf the repo has multiple projects, the name of the selected project. LEAVE EMPTY on the first call.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only restates the title's core action ('creates a new issue... assigns it to the project board') with the addition of 'specific priority'. It does not disclose permissions, side effects (e.g., label creation), or response behavior, which is inadequate for a mutation tool without annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the main action and then the use case. No redundancy or fluff; every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 10 parameters and no output schema. While the schema is rich, the description omits critical behavioral context like the 'LEAVE EMPTY on first call' nuance for targetProjectName and does not hint at what the response contains. It is adequate but not complete for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 adds no parameter-specific meaning beyond the schema; 'specific priority' merely echoes the priority parameter already described in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it creates a GitHub issue and boards it with a priority. The verb 'creates' and resource 'issue in a GitHub repository' are specific, and it distinguishes from sibling read-only tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'Use this when identifying bugs, technical debt, or documentation gaps that need tracking.' It lacks explicit exclusions or alternatives, 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.

fetch_all_issuesGet All IssuesB

Get all issues from the specified remote repo and list them

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNameYesExact repo name for the url parameter. Ask the user if it is not provided.
repoOwnerYesExact repository owner for the url paramter that indicates what is the owber of the repo. Ask the user if it is not provided.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavior, but it only says 'get all issues' without mentioning pagination, ordering, authentication, network dependency, or return format. This leaves significant behavioral traits undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no unnecessary words. The phrase 'and list them' is slightly redundant but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter list tool, the description gives a basic sense of operation, but lacks details about output format, result size, or behavior such as whether it fetches from remote (network) and any prerequisites. Gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully described in the schema (100% coverage), giving their meaning and asking user to provide if missing. The description adds no extra semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches all issues from a specified remote repository and lists them. This distinguishes it from sibling tools like fetch_merged_prs (PRs) and get_issue_comments (comments on a specific issue).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like get_issue_comments or fetch_merged_prs. The description lacks context for selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_merged_prsFetch Pull RequestsB

Retrieves a list of Pull Requests from the specified GitHub repository. Crucial for generating automated release notes, writing changelogs, or summarizing the latest features and bug fixes added to the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoThe maximum number of recent merged PRs to fetch. Defaults to 10.
isMergedNoThe boolean variable that indicates which type of pull requests will be fetched merged or not merged. Defaults is false which means fetch not merged pull requests.
repoNameYesThe name of the repository (e.g., 'react'). Ask the user if not provided.
repoOwnerYesThe owner of the repository (e.g., 'facebook'). Ask the user if not provided.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosure. It only says 'Retrieves a list' but does not disclose that the default behavior fetches not-merged PRs (isMerged=false), the default limit of 10, authentication requirements, or return format. This is a significant gap given the tool name implies merged PRs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with two sentences. The first sentence clearly states the purpose, and the second provides usage context. Every sentence earns its place and there is no wasted verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though the schema handles parameter details, the description lacks critical behavioral context such as default merged/not-merged behavior, limit handling, output format, and authentication needs. For a tool with no output schema and no annotations, this is insufficient for an agent to invoke correctly without surprises.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all 4 parameters with detailed descriptions, so the description adds no additional parameter semantics beyond what the schema already provides. Baseline of 3 is appropriate since the description does not compensate for any missing parameter context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'Retrieves a list of Pull Requests from the specified GitHub repository', which is specific with a verb, resource, and scope. It distinguishes from sibling tools like get_git_log or get_git_diff, but it does not explicitly mention 'merged' PRs as the tool name suggests, leaving a slight ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: 'Crucial for generating automated release notes, writing changelogs, or summarizing the latest features and bug fixes'. However, it does not state when not to use it or mention alternatives, as no sibling comparisons are made.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-git-diffGet Git DiffB

Get all difference in files and show the differences line by line. It can focus on a specific file according to willingness

ParametersJSON Schema
NameRequiredDescriptionDefault
cachedNoShow difference that are taken to stage
repoPathYesGitHub repository path
targetFileNoShow difference only this file

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It mentions line-by-line output and optional file focus, but fails to specify whether diffs are against HEAD, how the cached flag affects output, or any side effects. This lacks critical behavioral context for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences and front-loads the primary purpose. However, phrases like 'according to willingness' and 'all difference' are awkward and could be clearer, though it is not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description should provide more context about return format, default diff scope, and interaction with cached. It leaves significant gaps for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all parameters (100%), so the baseline is 3. The description adds little beyond restating targetFile's purpose; it does not clarify cached behavior or repoPath requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves file differences and displays them line by line, with optional file-specific focus. This distinguishes it from siblings like get_git_status (status overview) and get_git_log (history).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use for viewing diffs but does not explicitly state when to prefer it over alternatives like get_git_status or get_git_log. No exclusion or alternative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_git_logGet Git LogB

List recent commits of the project

ParametersJSON Schema
NameRequiredDescriptionDefault
maxCountYes
repoPathYesGitHub repository path

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only says 'list recent commits' without disclosing return format, ordering, branch scope, or the meaning of 'recent' relative to maxCount. It implies a read-only operation via 'list' but lacks behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded and free of filler. It communicates the essential purpose without any wasted words, making it appropriately concise for a tool of this simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description is incomplete for an agent to fully predict the tool's behavior. It doesn't state what fields are returned (e.g., hash, author, date), whether all branches are included, or how maxCount interacts with the output. The missing usage guidance also reduces completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema documents repoPath but not maxCount (50% coverage). The description's phrase 'recent commits' only faintly implies maxCount limits the result. It does not clarify whether repoPath refers to a local path or a GitHub URL (despite the schema's 'GitHub repository path' description), and it provides no additional meaning for maxCount.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and resource 'recent commits of the project', clearly distinguishing it from sibling tools like get_git_diff (diffs) and get_git_status (status). It is unambiguous and immediately conveys the tool's core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as get_git_diff or get_git_status. The description doesn't mention exclusions, prerequisites, or typical use cases, leaving the agent to infer the appropriate context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_git_statusGet Git StatusC

Get all changes in directory by calling git command (git status)

ParametersJSON Schema
NameRequiredDescriptionDefault
repoPathYesGitHub repository path

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must carry the behavioral burden. It discloses the mechanism ('calling git command (git status)') but does not describe the output format, scope of changes (tracked/untracked), or any side effects. For a read-style tool, the lack of explicit behavioral details is a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, direct, front-loaded with the action and resource. No wasteful words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite being a simple tool, the description lacks usage alternatives and return-value details, and there is no output schema to compensate. The sibling tools create ambiguity, so the description is not fully complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully documents repoPath as 'GitHub repository path' with 100% coverage, so the description adds no additional parameter meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('Get all changes') and resource ('directory') and identifies the underlying command ('git status'). It is clear but does not explicitly distinguish from sibling tools like get-git-diff, which also deals with changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool instead of siblings such as get_git_log, get-git-diff, or get_repo_structure. The description simply states what it does without context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_issue_commentsGet All Comments of the Given IssueC

Retrieves the all comments of the given issue based on its comment_url datafield which is given in the parameter of the function

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNameYesExact repo name for the url parameter. Ask the user if it is not provided.
repoOwnerYesExact repository owner for the url parameter that indicates what is the owner of the repo. Ask the user if it is not provided.
issue_numberYesThe specific number of the issue to fetch comments for.

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It mentions retrieving comments but introduces an incorrect 'comment_url' parameter and does not disclose potential pagination, ordering, or output format. This could mislead the agent about how the tool operates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence but is grammatically awkward ('Retrieves the all comments') and unnecessarily verbose ('which is given in the parameter of the function'). It is not well-structured or front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and a minimal description that does not explain return values or behavior beyond fetching comments. The erroneous reference to 'comment_url' makes the description incomplete and potentially misleading, especially given the lack of sibling differentiation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides clear descriptions for all three required parameters (repoName, repoOwner, issue_number) with 100% coverage. The description adds little value and even confuses by referencing a non-existent 'comment_url' parameter, but the schema is sufficient to understand the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool retrieves all comments for a given issue, which is the core purpose. However, the phrase 'based on its comment_url datafield which is given in the parameter' is confusing and references a field (comment_url) that is not among the actual parameters, detracting from clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like fetch_all_issues or fetch_merged_prs. The description simply states what it does without any context for tool selection or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_repo_structureGet Repository StructureB

Returns the directory and file structure of the git repository. Useful for architectural documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoPathYesGithub repository base path

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only says it 'returns' the structure, offering no details on output format, handling of large repos, hidden files, or any operational caveats. The lack of an output schema makes this gap more significant, as the agent cannot infer return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences with no fluff. It front-loads the primary action and adds a relevant use case, making every word earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Although the tool has only one parameter and no nested objects, the absence of an output schema means the description should clarify what the returned structure looks like (e.g., tree vs. list, JSON vs. plain text). It does not, leaving the agent with incomplete information for a tool that returns potentially complex data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already fully describes the only parameter, repoPath, with 'Github repository base path'. The tool description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the directory and file structure of the git repository, using a specific verb and resource. This distinguishes it from sibling tools like get_git_log or read_local_file, which focus on logs or file contents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Useful for architectural documentation' implies a usage context, but it does not explicitly contrast this tool with alternatives or state when not to use it. There is no mention of sibling tools or exclusions, so the guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_local_fileRead the Small Local FileA

Reads the entire content of a specific small sized file. Crucial for understanding the full context of the code before writing documentation.

ParametersJSON Schema
NameRequiredDescriptionDefault
filePathYesRelative file path to the file (e.g., src/index.ts)
repoPathYesGithub repository base path

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the read-only nature through the verb 'Reads' and adds the size limitation 'small sized file.' However, it does not elaborate on error behavior, output format, or any edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states the action, the second states the purpose. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the description covers what it does and when to use it. However, given the sibling read_local_file_chunk, it would benefit from explicitly stating that this tool is for whole small files only and that chunked reading is for larger files.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters are fully described in the schema (100% coverage), so the description adds no new parameter semantics. The baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Reads' and the resource 'entire content of a specific small sized file'. It distinguishes from the sibling read_local_file_chunk by emphasizing 'entire content' as opposed to chunked reads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence provides a clear use case: 'Crucial for understanding the full context of the code before writing documentation.' However, it does not explicitly mention when not to use it or point to the sibling read_local_file_chunk as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_local_file_chunkRead Large File by Line RangeA

Reads a specific line range from a large file. Use startLine and endLine to fetch only the section you need, reducing memory usage and context size.

ParametersJSON Schema
NameRequiredDescriptionDefault
endLineYesEnding line number (1-indexed, inclusive)
filePathYesRelative file path to the file (e.g., src/index.ts)
maxLinesNoMaximum lines to return per request. Defaults to 1000.
repoPathYesGithub repository base path
startLineYesStarting line number (1-indexed)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the behavior of reading a line range and the benefit of reducing memory and context. However, it does not mention error cases, inclusivity decisions (though schema covers it), or what the response contains, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences that front-load the purpose and quickly explain the usage. No filler or redundant information, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential purpose and usage pattern for a chunk-reading tool. Given the schema fully documents parameters and the tool is a simple read operation, it's reasonably complete. It could mention maxLines or response format, but those are less critical for this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter described in the schema. The description highlights the role of startLine and endLine in fetching chunks, reinforcing the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Reads a specific line range from a large file' identifying the verb, resource, and scope. This distinguishes it from sibling tools like read_local_file which likely reads the entire file. The title also reinforces this.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to use startLine and endLine to fetch only needed sections, implying its use case for large files to reduce memory and context. It doesn't explicitly contrast with alternatives or list when not to use, but the guidance is clear enough for selection.

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.

  1. 10 tool updatesv1.0.0
    • First observedcreate_and_board_issue
    • First observedfetch_all_issues
    • First observedfetch_merged_prs
    • First observedget_git_log
    • First observedget_git_status
    • First observedget_issue_comments
    • First observedget_repo_structure
    • First observedget-git-diff
    • First observedread_local_file
    • First observedread_local_file_chunk

TDQS

B3.2/5.0
Disambiguation4/5

Most tools target clearly distinct resources or actions: log, status, diff, structure, file reading, issues, and PRs. Slight overlap exists between get_git_diff and get_git_status, but descriptions clarify the summary vs line-by-line difference. read_local_file and read_local_file_chunk are intentionally paired for whole vs chunk access.

Naming Consistency3/5

The majority follow a verb_noun snake_case pattern (get_git_log, read_local_file, fetch_all_issues), but get-git-diff breaks the pattern with hyphens. Verbs also vary between get, read, fetch, and create, reducing predictability slightly.

Tool Count5/5

Ten tools is well-scoped for a Git-oriented server, covering repository inspection, file reading, issues, and PRs without unnecessary bloat. Each tool has a clear role, and the count feels appropriate for the described workflows.

Completeness3/5

The server covers common read-heavy operations well (log, status, diff, structure, files) and includes issue listing/creation and merged PR fetching. However, notable gaps exist for a full Git workflow: no single-issue retrieval, no issue update/close, no PR creation, and no branch or commit detail tools. Minor workarounds are possible for documentation tasks, but some dead ends occur.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

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/EnesOzturk11/Git-MCP-Server'

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