mcp服务器git:git mcp服务器
概述
用于Git存储库交互和自动化的模型上下文协议服务器。此服务器提供通过大型语言模型读取、搜索和操作Git存储库的工具。
请注意,mcp服务器git目前处于早期开发阶段。随着我们不断开发和改进服务器,功能和可用工具可能会发生变化和扩展。
工具
git_status
- 显示工作树状态 - 输入: - repo_path (string):Git存储库的路径 - 返回:工作目录的当前状态作为文本输出
git_diff_unstaged
- 显示尚未暂存的工作目录中的更改 - 输入: - repo_path (string):Git存储库的路径 - 返回值:未暂存更改的差异输出
git_diff_staged
- 显示已提交的更改 - 输入: - repo_path (string):Git存储库的路径 - 返回值:分阶段更改的差异输出
git_diff
- 显示分支或提交之间的差异 - 输入: - repo_path (string):Git存储库的路径 - target (string):目标分支或提交进行比较 - 返回:将当前状态与目标进行比较的Diff输出
git_commit
- 记录对存储库的更改 - 输入: - repo_path (string):Git存储库的路径 - message (string):提交消息 - 返回:使用新的提交哈希进行确认
git_add
- 将文件内容添加到暂存区,支持批处理操作 - 输入: - repo_path (string):Git存储库的路径 - files (string\[\],可选):到stage的文件路径数组 - add_all (boolean,可选):暂存所有更改,包括未跟踪的文件(git add-A) - update_only (布尔值,可选):仅阶段跟踪文件更新和删除(git add-u) - patterns (string\[\],可选):用于匹配文件的glob模式数组(例如,\[“*.py“,”src/\*\*/*.js“\]) - 返回:暂存文件的确认 - 注意:只应指定文件add_all、update_Only或模式中的一个
git_reset
- 取消所有阶段性变化 - 输入: - repo_path (string):Git存储库的路径 - 返回:重置操作确认
git_log
- 显示具有高级筛选和格式化功能的提交日志 - 输入: - repo_path (string):Git存储库的路径 - max_count (number,可选):要显示的最大提交数(默认值:10) - oneline (布尔值,可选):仅显示哈希和消息的紧凑格式(默认值:false) - graph (布尔值,可选):显示合并图结构(默认值:false) - format (字符串,可选):自定义格式字符串(例如,“%h-%s(%an)”) - since (字符串,可选):显示日期后的提交(例如,“2024-01-01”,“1周前”) - until (字符串,可选):显示日期之前的提交(例如,“昨天”、“2024-12-31”) - author (字符串,可选):按作者姓名或电子邮件筛选 - grep (字符串,可选):使用正则表达式模式搜索提交消息 - files (string\[\],可选):仅显示影响这些文件的提交 - branch (字符串,可选):显示特定分支的日志(默认值:当前) - reverse (布尔值,可选):按逆时间顺序显示提交(默认值:false) - merges (布尔值,可选):过滤合并提交(空=全部,真=仅合并,假=无合并) - 返回:符合指定条件的格式化提交日志 - 示例: - 查找最近的修复提交: {repo_path: ".", max_count: 20, grep: "fix:", oneline: true} - 作者变更: {repo_path: ".", author: "john@example.com", since: "1 month ago"} - 文件历史记录: {repo_path: ".", files: ["src/main.py"], max_count: 50}
git_create_branch
- 创建新分支 - 输入: - repo_path (string):Git存储库的路径 - branch_name (string):新分支的名称 - base_branch (字符串,可选):新分支的起点 - 返回:分支创建确认
git_checkout
- 切换分支
- 输入:
- repo_path (string):Git存储库的路径 - branch_name (string):要结账的分行名称
- 返回:分支切换确认
git_show
- 显示提交的内容
- 输入:
- repo_path (string):Git存储库的路径 - revision (string):要显示的修订(提交哈希、分支名称、标签)
- 返回:指定提交的内容
git_init
- 初始化Git存储库
- 输入:
- repo_path (string):初始化git repo的目录路径
- 返回:确认存储库初始化
Azure DevOps集成
该服务器提供Azure DevOps集成,用于监控和分析Azure管道构建:
azure_get_build_status
- 获取Azure DevOps构建/管道运行的状态 - 输入: - project (string):项目名称或ID - build_id (整数):构建ID - 返回:格式化的构建状态信息,包括定义、状态、结果、分支和时间
azure_get_build_logs
- 从Azure DevOps构建中获取日志 - 输入: - project (string):项目名称或ID - build_id (整数):构建ID - log_id (整数,可选):要检索的特定日志ID。如果省略,则列出所有日志 - 返回:日志内容或可用日志列表
azure_get_failing_jobs
- 获取Azure DevOps构建中失败作业的详细信息 - 输入: - project (string):项目名称或ID - build_id (整数):构建ID - include_logs (布尔值,可选):是否包含日志摘录(默认值:true) - 返回:详细的故障信息,包括错误消息和日志摘录
配置:Azure DevOps集成需要设置 AZURE_DEVOPS_TOKEN 和 AZURE_DEVOPS_ORG 环境变量。有关详细信息,请参阅环境变量部分。
精益MCP界面(上下文优化)
服务器提供了一种替代方案 精益界面 这将上下文消耗减少了约97%(从约30000个令牌减少到约900个令牌)。它没有预先公开所有51个工具,而是使用了3-meta-tool模式:
| 元工具 | 目的 |
|---|---|
discover_tools(pattern) | 列出具有可选筛选功能的可用工具 |
get_tool_spec(tool_name) | 按需获取特定工具的完整架构 |
execute_tool(tool_name, params) | 动态执行任何工具 |
工具覆盖范围所有50个工具仍然可以访问(25 git,22 GitHub,3 Azure DevOps)。
用法示例:
# 1. Discover available tools (optional filtering)
discover_tools("pr") # Returns 11 PR-related tools
# 2. Get schema when needed
get_tool_spec("github_create_pr") # Returns full parameter schema
# 3. Execute the tool
execute_tool("github_create_pr", {
"repo_owner": "owner",
"repo_name": "repo",
"title": "feat: new feature",
"head": "feature-branch",
"base": "main"
})配置:使用 mcp-git-lean 入口点:
"mcpServers": {
"git-lean": {
"command": "pixi",
"args": ["run", "-m", "mcp-git-lean", "--repository", "path/to/repo"]
}
}重要提示:存储库路径解析
这 repo_path 所有git工具中的参数都支持以下行为:
- 绝对路径:总是直接使用(例如。,
/home/user/my-repo) - “.”(当前目录):当服务器使用启动时,解析为绑定存储库
--repository参数。如果没有绑定存储库,操作将失败,并显示明确的错误消息。 - 相对路径:转换为相对于当前工作目录的绝对路径。为了获得最佳可靠性,请使用绝对路径或将存储库绑定到
--repository.
推荐使用方法:
- 启动服务器时,请使用
--repository绑定到特定存储库的参数 - 在工具调用中,使用
repo_path: "."引用绑定的存储库 - 对于不同存储库上的操作,请提供绝对路径
示例:
# Start server bound to a repository
mcp-server-git --repository /path/to/my-repo
# Then use "." in tool calls to reference the bound repository
# This prevents cross-repository contamination安装
使用紫外线(推荐)
使用时 uv 不需要特定的安装。我们将 使用 uvx 直接运行 *mcp服务器git*.
使用PIP
或者,您可以安装 mcp-server-git 通过pip:
pip install mcp-server-git注:对于开发,请使用 pixi install 而不是pip来进行适当的依赖管理。
安装后,您可以使用以下命令将其作为脚本运行:
python -m mcp_server_git配置
环境变量
服务器支持从以下位置加载环境变量 .env 具有以下优先级顺序的文件:
- 特定于项目的.env文件 -
.env当前工作目录中的文件 - 特定于存储库的.env文件 -
.env存储库目录中的文件(使用时--repository论点) - ClaudeCode工作目录.env文件 -
.envClaudeCode工作区根目录中的文件(自动检测到) - 系统环境变量 -标准环境变量
示例.env文件
创建一个 .env 项目目录或ClaudeCode工作区中的文件:
# GitHub API Token for GitHub integration features
# Get your token from: https://github.com/settings/tokens
GITHUB_TOKEN=your_github_token_here
# Optional: Custom GitHub API base URL (for GitHub Enterprise)
# GITHUB_API_BASE_URL=https://api.github.com
# Azure DevOps Configuration
# Get your Personal Access Token from: https://dev.azure.com/{organization}/_usersSettings/tokens
# The token should have 'Build (Read)' scope at minimum
AZURE_DEVOPS_TOKEN=your_azure_devops_pat_token_here
AZURE_DEVOPS_ORG=your_organization_name
# Optional: Log level for debugging
# LOG_LEVEL=INFO备注:The .env 服务器启动时,文件会自动加载。服务器通过从当前工作目录和存储库路径(如果通过提供)向上遍历,智能地检测ClaudeCode工作区目录 --repository 论点)。如果不 .env 如果找到文件,服务器将使用系统环境变量。
适用于ClaudeCode用户:如果你有 .env ClaudeCode工作区根目录中的文件(例如。, /home/memento/ClaudeCode/.env),当从该工作区内的任何子目录运行MCP服务器时,它将被自动检测和加载。
使用Claude Desktop
将此添加到您的 claude_desktop_config.json:
Using uvx
"mcpServers": {
"git": {
"command": "uvx",
"args": ["mcp-server-git", "--repository", "path/to/git/repo"]
}
}Using docker
- 注意:将“/Users/username”替换为您希望此工具可以访问的路径
"mcpServers": {
"git": {
"command": "docker",
"args": ["run", "--rm", "-i", "--mount", "type=bind,src=/Users/username,dst=/Users/username", "mcp/git"]
}
}Using pip installation
"mcpServers": {
"git": {
"command": "python",
"args": ["-m", "mcp_server_git", "--repository", "path/to/git/repo"]
}
}使用VS代码
为了快速安装,请使用下面的一键安装按钮之一。..
](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22--rm%22%2C%22-i%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fworkspace%22%2C%22mcp%2Fgit%22%5D%7D) ](https://insiders.vscode.dev/redirect/mcp/install?name=git&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22--rm%22%2C%22-i%22%2C%22--mount%22%2C%22type%3Dbind%2Csrc%3D%24%7BworkspaceFolder%7D%2Cdst%3D%2Fworkspace%22%2C%22mcp%2Fgit%22%5D%7D&quality=insiders)
对于手动安装,请将以下JSON块添加到VS Code中的用户设置(JSON)文件中。您可以按 Ctrl + Shift + P 和打字 Preferences: Open Settings (JSON).
您可以选择将其添加到名为的文件中 .vscode/mcp.json 在您的工作空间中。这将允许您与他人共享配置。
请注意mcp中不需要密钥.vscode/mcp.json文件。
{
"mcp": {
"servers": {
"git": {
"command": "uvx",
"args": ["mcp-server-git"]
}
}
}
}对于Docker安装:
{
"mcp": {
"servers": {
"git": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--mount", "type=bind,src=${workspaceFolder},dst=/workspace",
"mcp/git"
]
}
}
}
}使用方法 泽德
添加到您的Zed settings.json:
Using uvx
"context_servers": [
"mcp-server-git": {
"command": {
"path": "uvx",
"args": ["mcp-server-git"]
}
}
],Using pip installation
"context_servers": {
"mcp-server-git": {
"command": {
"path": "python",
"args": ["-m", "mcp_server_git"]
}
}
},调试
您可以使用MCP检查器调试服务器。对于uvx安装:
npx @modelcontextprotocol/inspector uvx mcp-server-git或者,如果您已将软件包安装在特定目录中或正在其上开发:
cd path/to/servers/src/git
npx @modelcontextprotocol/inspector uv run mcp-server-git跑步 tail -n 20 -f ~/Library/Logs/Claude/mcp*.log 将显示服务器的日志,并可能 帮助您调试任何问题。
发展
如果您正在进行本地开发,有两种方法可以测试您的更改:
- 运行MCP检查器以测试您的更改。看 调试 用于运行说明。
- 使用Claude桌面应用程序进行测试。将以下内容添加到您的
claude_desktop_config.json:
码头工人
{
"mcpServers": {
"git": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
"--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
"--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
"mcp/git"
]
}
}
}UVX
{
"mcpServers": {
"git": {
"command": "uv",
"args": [
"--directory",
"/
/mcp-servers/src/git",
"run",
"mcp-server-git"
]
}
}构建
Docker构建:
cd src/git
docker build -t mcp/git .许可证
此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。
