HG MCP服务器
](https://pypi.org/project/hg-mcp/)
用于Mercurial存储库交互的模型上下文协议(MCP)服务器,用Python 3.10+和AsyncIO编写。
特性
核心版本控制
- 初始化:创建新存储库(
hg_init) - 状态与差异:查看工作目录状态(
hg_status)逐行更改(hg_diff) - 提交管理:添加文件(
hg_add),提交更改(hg_commit),删除文件(hg_remove),并修改上次提交(hg_amend) - 文件检查:查看任何版本的文件内容(
hg_cat)重命名或移动文件(hg_rename)
分支和导航
- 导航:更新到任何修订、分支或书签(
hg_update) - 命名分支:创建并列出永久Mercurial分支(
hg_branch) - 书签:管理轻量级的、类似Git的指针(
hg_bookmark,hg_bookmarks) - 高级主题:具有轻量级分支的WIP功能隔离(
hg_topic,hg_topics,hg_topic_current) - 标签:创建、删除和列出存储库标记(
hg_tag,hg_tags)
远程同步
- 推拉:与远程存储库同步更改(
hg_push,hg_pull) - 远程洞察:预览传入或传出的变更集(
hg_incoming,hg_outgoing) - 路径管理:列出并管理已配置的远程路径(
hg_paths) - 分支机构负责人:确定整个存储库的分支负责人(
hg_heads)
历史重写与恢复
- 重基和剥离:移动变更集(
hg_rebase)或永久删除它们(hg_strip) - 交互式编辑:非交互式地修改一系列线性变更集(
hg_histedit) - 移植:Cherry从其他分支中挑选变更集(
hg_transplant) - 取消:逆转早期变更集的影响(
hg_backout) - 进化:跟踪重写变更集的演变(
hg_evolve)
合并和冲突解决
- 合并:合并不同分支的更改(
hg_merge) - 冲突管理:列出并跟踪具有未解决合并冲突的文件(
hg_resolve) - 撤销:放弃未提交的更改,并将文件还原到上次提交的状态(
hg_revert)
存储库检查和诊断
- 责备/注释:逐行显示变更集信息(
hg_annotate) - 文件列表:列出当前版本中的所有跟踪文件(
hg_files) - 状态摘要:获取工作目录状态的简明摘要(
hg_summary) - 诚信与身份:验证存储库的完整性(
hg_verify)并确定当前版本(hg_identify) - 补丁管理:将变更集导出为补丁(
hg_export)或导入补丁文件(hg_import)
技术特性
- 异步I/O:用于高性能操作的异步命令执行
- Git集成(hg-Git):自动检测Git支持的仓库和分支映射(
hg_git) - HTTP传输:为基于web的客户端提供流式HTTP和SSE支持(例如llama.cpp WebUI)
- 安全:监狱路径限制(HTTP需要)和安全的API密钥身份验证
- JSON输出:20多个命令的自动JSON格式化,便于机器解析
- 大文件支持:管理正常历史记录之外的二进制文件(
hg_largefiles) - 诊断和帮助:列出扩展名(
hg_extensions),配置(hg_config),并访问内置帮助(hg_help) - 可靠性:在Linux上使用tmpfs进行快速验证的全面测试套件
安装
# Clone the repository
git clone
cd hg-mcp
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install in editable mode
pip install -e .
# Optional: Install with performance enhancements
pip install uvloop # On Unix/macOS
pip install winloop # On Windows用法
标准输入/输出(stdio)-默认模式
# Activate your virtual environment first
source .venv/bin/activate # On Windows: .venv\Scripts\activate
hg-mcp这将使用stdio传输启动MCP服务器,该传输可与Claude for Desktop、Qwen Coder、Gemini CLI和OpenCode等MCP客户端一起使用。
HTTP传输(SSE和/或流式HTTP)
对于基于web的MCP客户端,如llama.cpp WebUI,您可以使用HTTP传输运行服务器:
# SSE only (compatible with llama.cpp WebUI)
hg-mcp --transport sse --port 8000
# Streamable HTTP only
hg-mcp --transport streamable-http --port 8000
# Both SSE and Streamable HTTP on the same server
hg-mcp --transport sse streamable-http --port 8000终点:
- 上海证券交易所
http://localhost:8000/sse - 流式HTTP:
http://localhost:8000/mcp
选项:
--transport:一个或多个传输协议(stdio,sse,streamable-http)
- 违约: stdio - 多个值: --transport sse streamable-http
--port:要侦听的端口(默认值:8000)--host:要绑定的主机(默认值:0.0.0.0)--api-key: 可选。 启用强制的API密钥身份验证。设置后,客户端必须在其请求标头中提供此密钥。--jail: HTTP传输需要。 为了安全起见,限制存储库对此目录树的访问。
安全特性
通过TCP/IP公开MCP服务器时,有两种安全机制可用:
1.监狱路径限制(--jail)
所有HTTP传输都需要。 这限制了存储库对特定目录树的访问,防止了对监狱外路径的未经授权的访问:
# Restrict access to /home/user/projects and its subdirectories
hg-mcp --transport streamable-http --port 8000 --jail /home/user/projects2.API密钥认证(--api-key)
可选。 您可以要求客户端通过提供有效的API密钥进行身份验证。启用此选项后,服务器将拒绝任何不包含匹配项的请求 X-API-Key 或 API-Key 头球
# Enable mandatory API key authentication
hg-mcp --transport streamable-http --port 8000 --jail /home/user/projects --api-key your-secret-key与AI助手集成
要将此MCP服务器与您的AI编码助手一起使用,请在虚拟环境中指向正确的可执行路径。
配置示例
克劳德桌面/Qwen编码器/Gemini CLI
{
"mcpServers": {
"hg-mcp": {
"command": "/path/to/your/venv/bin/hg-mcp"
}
}
}开源代码
{
"mcp": {
"hg-mcp": {
"type": "local",
"command": ["/path/to/your/venv/bin/hg-mcp"],
"enabled": true
}
}
}需求
- Python 3.10+
- Mercurial已安装并可在PATH中使用
- MCP兼容客户端
发展
运行测试
# Install development dependencies
pip install -e ".[dev]"
# Run all tests with coverage
./scripts/runtest.sh代码质量
# Run linting
./scripts/lint-check-and-fix.sh
# Run type checking
./scripts/type-check.sh
# Run formatter
./scripts/code-format.sh致谢
这个项目的灵感来自 mcp服务器mercurial.
