MCP MGit服务器
用于执行的MCP服务器 mgit push 支持多实例的操作。
先决条件
⚠️ 重要提示: 此MCP服务器需要 MGIT 在您的系统上安装和配置该工具。
MGit是一个用于管理多个Git项目的命令行工具。它可以帮助您高效地管理、同步和更新多个Git存储库。
MGit安装和设置
在使用此MCP服务器之前,请:
- 安装MGIT:从下载并安装MGit
- 初始化MGit:按照中的MGit设置说明进行操作 MGit自述
- 配置项目:使用
mgit init将Git存储库添加到MGit - 验证设置:使用
mgit list查看可用的存储库名称
有关MGit的详细使用说明、功能和配置,请参阅 MGit自述.
MGit的主要功能
- 多项目管理:一键管理多个Git项目
- 多语言支持:支持多种语言,包括中文(简体/繁体)、英语、日语、韩语、法语
- 远程数据库同步:支持跨多个设备的项目配置同步
- 智能分支管理:自动检测和切换分支以避免冲突
- 批处理操作:支持同时拉取/推送多个项目的更改
特性
- ✅ 执行
mgit push存储库命令 - ✅ 可配置的mgit命令(默认值:
mgit) - ✅ 具有存储库名称隔离的多实例支持
- ✅ 操作日志
- ✅ 错误处理和恢复
安装
全局安装(推荐)
npm install -g @liangshanli/mcp-server-mgit本地安装
npm install @liangshanli/mcp-server-mgit来源
git clone https://github.com/liliangshan/mcp-server-mgit.git
cd mcp-server-mgit
npm install配置
设置环境变量:
# Required: Repository name (use 'mgit list' to view available repository names)
export REPO_NAME="my-repo"
# Optional: MGit command (default: mgit)
export MGIT_CMD="mgit"
# Optional: Language setting (default: en)
# Supported values: en (English), zh (Chinese), zh-CN (Simplified Chinese), zh-TW (Traditional Chinese)
export LANGUAGE="en"
# Optional: Enable/disable push history check (default: true)
# Set to false to skip history check requirement
export CHECK_PUSH_HISTORY="true"
# Optional: Project branding
export PROJECT_NAME="MyProject"用法
1.直接运行(全局安装)
mcp-server-mgit2.使用npx(推荐)
npx @liangshanli/mcp-server-mgit3.直接启动(源安装)
npm start4.管理启动(建议用于生产)
npm run start-managed管理启动提供:
- 自动重启(最多10次)
- 错误恢复
- 进程管理
- 日志记录
5.发展模式
npm run dev编辑器集成
光标编辑器配置
- 创建
.cursor/mcp.json项目根目录中的文件:
{
"mcpServers": {
"mgit": {
"command": "npx",
"args": ["@liangshanli/mcp-server-mgit"],
"env": {
"REPO_NAME": "my-repo",
"MGIT_CMD": "mgit",
"LANGUAGE": "en",
"PROJECT_NAME": "MyProject"
}
}
}
}VS代码配置
- 安装VS Code的MCP扩展
- 创建
.vscode/settings.json文件:
{
"mcp.servers": {
"mgit": {
"command": "npx",
"args": ["@liangshanli/mcp-server-mgit"],
"env": {
"REPO_NAME": "my-repo",
"MGIT_CMD": "mgit",
"LANGUAGE": "en",
"PROJECT_NAME": "MyProject"
}
}
}
}支持多个MGit服务器实例
您可以使用不同的配置多个MGit服务器实例 REPO_NAME 和 PROJECT_NAME 隔离工具和配置。每个实例都必须有一个唯一的 REPO_NAME (必填)。当您需要推送到不同的存储库或管理不同的项目组时,这很有用。使用 mgit list (或 ${MGIT_CMD} list)查看可用的存储库名称。
示例:光标编辑器配置
创建 .cursor/mcp.json 文件:
{
"mcpServers": {
"mgit-local": {
"disabled": false,
"timeout": 60,
"command": "npx",
"args": ["@liangshanli/mcp-server-mgit"],
"env": {
"REPO_NAME": "local-repo",
"MGIT_CMD": "mgit",
"PROJECT_NAME": "local-mgit"
}
},
"mgit-custom": {
"disabled": false,
"timeout": 60,
"command": "npx",
"args": ["@liangshanli/mcp-server-mgit"],
"env": {
"REPO_NAME": "custom-repo",
"MGIT_CMD": "/path/to/custom-mgit",
"PROJECT_NAME": "custom-mgit"
}
}
}
}多实例的好处:
- 工具隔离:每个实例都有自己的工具名称(例如。,
local_mgit_push,custom_mgit_push) - 配置隔离:日志存储在单独的目录中(例如。,
./.setting.local/,./.setting.custom/) - 不同的命令:为每个实例配置不同的mgit命令
- 项目品牌:每个实例都可以有自己的项目名称,以便更好地识别
备注:使用多个实例时,工具将以前缀 REPO_NAME例如:
local-repo_mgit_push-对本地仓库使用本地mgit命令custom-repo_mgit_push-为自定义仓库使用自定义mgit命令
作为MCP服务器
启动后,服务器通过stdin/stdout与MCP客户端通信:
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2025-06-18"}}可用工具
- mgit_push:对通过REPO_NAME环境变量配置的存储库执行mgit push命令
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "mgit_push",
"arguments": {
"message": "Update project files"
}
}
}- get_operation_logs:获取操作日志
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_operation_logs",
"arguments": {
"limit": 50,
"offset": 0
}
}
}日志记录
常规日志
日志文件位置: ./.setting/mcp-mgit.log (或 ./.setting./mcp-mgit.log 如果设置了REPO_NAME)
记录的内容:
- 所有请求和答复
- MGit运行记录
- 错误消息
- 服务器状态更改
错误处理
- 单个请求错误不会影响整个服务器
- 进程异常会自动重新启动(管理模式)
- 日志中的详细错误消息
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
| 报告名称 | 必需 推送操作的存储库名称。使用 mgit list (或 ${MGIT_CMD} list)查看可用的存储库名称。例子: export REPO_NAME="my-repo" | |
| MGIT_CMD | MGIT | 要执行的可选MGIT命令(可以是完整路径) |
| LANGUAGE | en | 提交消息的可选语言设置。支持的值: en (英语), zh 或 zh-CN (简体中文), zh-TW (繁体中文)。该工具将提示用户以配置的语言提供提交消息。 |
| CHECK_PUSH_HISTORY | true | 推送前启用/禁用推送历史检查的可选标志。设置为 false 跳过历史检查要求。当 true (默认),您必须调用 get_push_history 工具使用前 mgit_push.何时 false,您可以直接推送,而无需检查历史记录。 注: 如果您遇到错误 Encountered error in step execution: error executing cascade step: CORTEX_STEP_TYPE_MCP_TOOL: calling "tools/call": EOF,请设置 CHECK_PUSH_HISTORY="false" 禁用推送历史检查。 |
| PROJECT_NAME | 工具描述的可选项目品牌 | |
| MCP_LOG_DIR | 。/.setting(如果设置了REPO_NAME,则为./.setting.\) | 日志目录 |
| MCP_LOG_FILE | MCP-mgit.LOG | 日志文件名 |
发展
项目结构
mcp-server-mgit/
├── src/
│ └── server-final.js # Main server file
├── bin/
│ └── cli.js # CLI entry point
├── start-server.js # Managed startup script
├── package.json
└── README.md测试
npm test快速开始
1.安装软件包
npm install -g @liangshanli/mcp-server-mgit2.配置环境变量
# Required: Repository name
export REPO_NAME="my-repo"
# Optional: MGit command (default: mgit)
export MGIT_CMD="mgit"
# Optional: Language setting (default: en)
export LANGUAGE="en"
# Optional: Enable/disable push history check (default: true)
# Set to false to skip history check requirement
export CHECK_PUSH_HISTORY="true"
# Optional: Project branding
export PROJECT_NAME="MyProject"3.运行服务器
mcp-server-mgit用法示例
使用mgit_push工具
这 mgit_push 工具执行以下命令: ${MGIT_CMD} push ${REPO_NAME} ""
注: 存储库名称是通过配置的 REPO_NAME 环境变量(必填)。使用 mgit list (或 ${MGIT_CMD} list)查看可用的存储库名称。
参数:
message(必填):推送操作的提交消息
例子:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "mgit_push",
"arguments": {
"message": "Update documentation"
}
}
}如果 REPO_NAME="my-project" 和 MGIT_CMD="mgit",这将执行: mgit push my-project "Update documentation"
故障排除
错误: Encountered error in step execution: error executing cascade step: CORTEX_STEP_TYPE_MCP_TOOL: calling "tools/call": EOF
如果您在尝试推送代码时遇到此错误,则可能是由推送历史检查功能引起的。要解决此问题,请通过设置环境变量禁用推送历史检查:
export CHECK_PUSH_HISTORY="false"设置此变量后,重新启动MCP服务器并再次尝试推送。这将允许您直接推送,而无需先检查推送历史记录。
许可证
麻省理工学院
