Git Stuff Server
The Git Stuff Server is a Node.js application that provides Git-related functionalities via a Model Context Protocol (MCP) server. You can:
Generate Git Merge Diffs: Create text diffs for Git merge commits against their first parent using the
get_git_merge_difftool (requirescommitHashandrepoPathinputs)Fetch Azure DevOps PR Changed Files: Retrieve a list of changed files from the latest iteration of an Azure DevOps Pull Request using the
get_ado_pr_changed_filestool (requirespullRequestIdandorganizationIdinputs)
Provides Git-related functionality, specifically a tool to generate the diff for a Git merge commit against its first parent by running 'git show -m --first-parent' on a specified commit hash.
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 Stuff Servershow me the diff for merge commit abc123def"
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.
Git Stuff Server
This repository contains a Node.js application that acts as an MCP (Model Context Protocol) server to provide Git-related functionalities. Currently, it offers a tool to generate the diff for a Git merge commit against its first parent.
Features
MCP Server: Runs as a standard MCP server using stdio for communication.
get_git_merge_diffTool:Accepts a Git merge commit hash.
Executes the
GenerateMergeDiff.ps1PowerShell script.Returns the textual diff content generated by
git show -m --first-parent <commitHash>.
Related MCP server: agent-services-mcp
Prerequisites
Node.js (Version supporting ES Modules, check
enginesin package.json if specified, otherwise checktsconfig.jsontarget - ES2022)npm (usually comes with Node.js)
Git installed and accessible in the system's PATH.
PowerShell (Windows) or
pwsh(Linux/macOS) installed and accessible in the system's PATH.
Installation
Clone the repository:
git clone <your-repo-url> cd GitStuffServerInstall dependencies:
npm install
Usage
Build the TypeScript code:
npm run buildThis compiles the TypeScript code from
src/to JavaScript inbuild/.Run the server:
To run the compiled code:
npm startTo build and run in development mode:
npm run dev
The server will start and listen for MCP requests on standard input/output.
Using the get_git_merge_diff Tool
When connected via an MCP client, you can call the get_git_merge_diff tool with the following input:
commitHash(string): The Git commit hash (SHA) of the merge commit you want to diff.
The tool will return the diff content as text.
How it Works
The MCP server (
src/index.ts) receives a request for theget_git_merge_difftool.It validates the
commitHashinput.It executes the
GenerateMergeDiff.ps1PowerShell script, passing thecommitHash.The PowerShell script runs
git show -m --first-parent <commitHash>and saves the output (including any errors) to a temporary file namedmerge_changes.diffin the server's current working directory.The Node.js server reads the content of
merge_changes.diff.The server deletes the temporary
merge_changes.difffile.The server returns the diff content (or an error message) to the MCP client.
Configuration
Key configuration points are defined as constants within src/index.ts:
SERVER_NAME: The name registered by the MCP server.SCRIPT_NAME: The filename of the PowerShell script to execute.OUTPUT_DIFF_FILE: The name of the temporary diff file created by the script.
License
This project is licensed under the MIT License - see the package.json file for details.
Available Tools
4 toolsado_pr_changesC
Fetches changes from an Azure DevOps Pull Request with full diff content using the Azure DevOps Node API.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | Yes | Optional organization identifier to load specific configuration settings. | |
| pullRequestId | Yes | The numeric ID of the Pull Request (as a string). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions fetching changes with 'full diff content', which implies a read-only operation, but doesn't clarify permissions, rate limits, or what the output format looks like (e.g., JSON structure, error handling). This leaves significant gaps for a tool that interacts with an external API.
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 a single, efficient sentence that front-loads the core purpose without unnecessary details. Every word contributes to understanding the tool's function, making it highly concise and well-structured.
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 complexity of interacting with Azure DevOps API and no annotations or output schema, the description is incomplete. It lacks details on authentication, error cases, return format (e.g., diff structure), and how it differs from sibling tools, making it inadequate for safe and effective use by an AI agent.
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 has 100% description coverage, clearly documenting both parameters ('pullRequestId' and 'organizationId'). The description adds no additional parameter semantics beyond what the schema provides, such as example values or usage context, so it meets the baseline for high schema 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 the action ('fetches changes') and resource ('Azure DevOps Pull Request'), specifying it includes 'full diff content' and uses the 'Azure DevOps Node API'. However, it doesn't explicitly distinguish this tool from sibling tools like 'ado_pr_comment' or 'ado_pr_threads', which likely handle different aspects of pull requests.
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?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools like 'ado_pr_comment' or 'git_merge_diff', nor does it specify prerequisites or contexts for usage, leaving the agent to infer based on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ado_pr_commentB
Posts a comment to an Azure DevOps Pull Request. Can reply to existing threads or create new ones.
| Name | Required | Description | Default |
|---|---|---|---|
| commentsToPost | Yes | ||
| organizationId | No | ||
| pullRequestId | Yes |
TDQS
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 mentions the ability to reply or create threads, which adds some behavioral context, but fails to disclose critical traits like required permissions, rate limits, whether comments are editable/deletable, or the response format. For a mutation tool with zero annotation coverage, this is inadequate.
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 concise sentences with zero waste, front-loaded with the core purpose. Every word earns its place, making it easy to scan and understand quickly without unnecessary 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?
Given the complexity of a mutation tool with 3 parameters, 0% schema coverage, no annotations, and no output schema, the description is incomplete. It lacks details on permissions, error handling, return values, and full parameter explanations, leaving significant gaps for an AI agent to use 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?
Schema description coverage is 0%, so the description must compensate. It mentions 'reply to existing threads or create new ones', which hints at the 'threadId' parameter's purpose, but doesn't explain the meaning of 'commentsToPost', 'organizationId', or 'pullRequestId'. With 3 parameters and low coverage, the description adds minimal value 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 clearly states the action ('Posts a comment') and target resource ('to an Azure DevOps Pull Request'), distinguishing it from siblings like 'ado_pr_changes' or 'ado_pr_threads'. However, it doesn't specify if this is for creating new PRs versus existing ones, which would make it a 5.
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 usage by mentioning 'Can reply to existing threads or create new ones', which suggests when to use it for different comment types. However, it lacks explicit guidance on when to choose this tool over alternatives like 'ado_pr_threads' or 'git_merge_diff', and doesn't mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ado_pr_threadsC
Fetches all active comment threads from an Azure DevOps Pull Request.
| Name | Required | Description | Default |
|---|---|---|---|
| organizationId | No | Optional organization identifier to load specific configuration settings. | |
| pullRequestId | Yes | The numeric ID of the Pull Request (as a string). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states it 'fetches' data, implying a read-only operation, but doesn't clarify authentication needs, rate limits, pagination, error handling, or what 'active' entails (e.g., unresolved threads only). For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior and constraints.
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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse. Every element earns its place, and there's no redundancy or fluff, achieving optimal conciseness.
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 complexity of fetching PR threads, lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'active' means, the return format (e.g., list of threads with comments), or any behavioral aspects like permissions or errors. For a tool with no structured support, more detail is needed to ensure the agent can use it effectively without guesswork.
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 clear documentation for both parameters: 'pullRequestId' (required numeric ID) and 'organizationId' (optional for configuration). The description adds no additional parameter semantics beyond what the schema provides, such as format examples or usage tips. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 action ('fetches') and resource ('all active comment threads from an Azure DevOps Pull Request'), making the purpose immediately understandable. It distinguishes from sibling tools like 'ado_pr_changes' (which likely fetches code changes) and 'ado_pr_comment' (which likely creates comments). However, it doesn't explicitly mention how it differs from 'git_merge_diff' or specify what 'active' means in this context.
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 no guidance on when to use this tool versus alternatives like 'ado_pr_comment' (for commenting) or 'git_merge_diff' (for diff analysis). It doesn't mention prerequisites, such as needing access to the Azure DevOps instance, or contextual factors like whether it's for review workflows. The absence of usage context leaves the agent to infer based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
git_merge_diffB
Generates the text diff for a Git merge commit against its first parent within a specified local repository.
| Name | Required | Description | Default |
|---|---|---|---|
| commitHash | Yes | The Git commit hash (SHA) of the merge commit. | |
| repoPath | Yes | The absolute path to the local Git repository directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool generates a diff but doesn't mention behavioral traits like whether it's read-only, if it modifies the repository, error handling for invalid commits, or output format details. This leaves significant gaps in understanding how the tool behaves beyond its basic function.
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 a single, well-structured sentence that efficiently conveys the tool's purpose without unnecessary words. It's front-loaded with the core action and includes essential details, making it easy to understand at a glance while avoiding redundancy or 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 the lack of annotations and output schema, the description is incomplete for a tool that performs a potentially complex operation like Git diff generation. It doesn't explain what the output looks like (e.g., text format, error messages), behavioral constraints, or integration details, leaving the agent with insufficient context to use it effectively beyond basic 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 description coverage is 100%, with clear descriptions for both parameters (commitHash and repoPath). The description adds minimal value beyond the schema by specifying that the commit must be a merge commit and the diff is against its first parent, but it doesn't provide additional semantics like format examples or edge cases. This meets the baseline for high schema 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 the specific action ('Generates the text diff') and resource ('for a Git merge commit against its first parent within a specified local repository'), distinguishing it from sibling tools like ado_pr_changes which likely handle Azure DevOps pull requests rather than local Git operations. It precisely defines what the tool does without being vague or tautological.
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 no guidance on when to use this tool versus alternatives, such as when to prefer it over other diff tools or in what scenarios it's applicable. It mentions a 'specified local repository' but doesn't clarify prerequisites like needing Git installed or the repository being accessible, leaving usage context 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
ado_pr_changes - First observed
ado_pr_comment - First observed
ado_pr_threads - First observed
git_merge_diff
TDQS
Scored across 4 tools
Three tools (ado_pr_changes, ado_pr_comment, ado_pr_threads) are clearly distinct and focused on Azure DevOps pull request operations, with no overlap in their purposes. The fourth tool (git_merge_diff) is unrelated to Azure DevOps and operates on local Git repositories, creating a minor domain mismatch but no functional ambiguity.
The naming is inconsistent across the tool set. The first three tools use a consistent 'ado_pr_' prefix with descriptive suffixes (changes, comment, threads), but the fourth tool uses a different 'git_' prefix with a different structure (merge_diff). This mixed convention reduces predictability and coherence.
With only 4 tools, the count feels thin for a server named 'Git Stuff Server', which implies broader Git-related functionality. The tools are split between Azure DevOps PR operations and a local Git diff tool, making the scope appear fragmented rather than comprehensive.
For Azure DevOps pull requests, the tools cover fetching changes, commenting, and fetching threads, but lack core operations like creating, updating, or merging pull requests. For local Git operations, only one diff tool is provided, missing basic commands like clone, commit, or push. This results in significant gaps that will hinder agent workflows.
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…
MCP server for siGit (sigit.si): browse repos, search code, manage PRs/issues, web search.
Create, deploy, and operate MCP servers directly from your GitHub repositories.
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
- AlicenseBqualityDmaintenanceMCP Server for Git operations, agent templates, and project utilities.969MIT
- AlicenseAqualityBmaintenanceA local MCP server that provides a safe, explicit set of Git operations for version control tasks like status, diff, branching, staging, committing, fetching, merging, and pushing.1318MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for git archaeology — churn hotspots, blame summaries, bus factor, commit forensics and file history over any local repository.2MIT