补丁MCP服务器
    
A. 模型上下文协议(MCP) 服务器能够使AI助手在全面的安全验证下,安全地对文件应用统一的差异补丁。
版本2.0.0 | 状态Beta(测试版)| 工具7 | 测试覆盖率84%(286项测试)
______________________________________________________________________
为什么要修补MCP服务器?
启用您的AI助手以:
- ✅ 应用代码更改 使用标准的统一差异格式
- ✅ 验证补丁 在应用它们之前
- ✅ 创建和恢复备份 自动地
- ✅ 撤销更改 如果出现问题,确保安全
- ✅ 原子性地应用多个更改 通过多块补丁
- ✅ 测试更改 在提交前进行预演模式(或模拟运行)
全部与 内置安全功能 (无符号链接、二进制文件或目录遍历)以及 自动回滚 关于失败。
______________________________________________________________________
为什么使用补丁工具而不是直接编辑?
对于AI助手和开发者而言, apply_patch 相较于传统的编辑操作提供了显著优势:
| 功能 | apply_patch | 编辑工具 |
|---|---|---|
| 格式 | 标准统一差异(如 git diff) | 自定义旧/新字符串 |
| 多次变更 | ✅ 多片段(原子性) | ❌ 分离调用(无原子性) |
| 更改可见性 | ✅ 清晰的差异视图 | ❌ 难以发现差异 |
| 代币效率 | ✅ 令牌减少~50% | ❌ 需要完整的旧+新字符串 |
| 测试 | ✅ 支持干运行模式 | ❌ 无预览功能 |
| 原子性 | ✅ 所有更改同时成功/失败 | ❌ 可能进行部分更新 |
| 可审查性 | ✅ 开发者熟知的标准格式 | ❌ 自定义格式 |
现实世界中的例子
任务在一个文件中更新3个配置值
- 编辑3次独立的工具调用,无原子性,难以审查
- 应用补丁1次调用包含3个片段,原子操作,清晰的差异
简而言之对于大多数文件修改来说,使用apply_patch比直接编辑操作更高效、更安全、更清晰。
______________________________________________________________________
快速入门
安装
# Clone the repository
git clone https://github.com/shenning00/patch_mcp.git
cd patch_mcp
# Create virtual environment and install
python3 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e ".[dev]"使用Claude桌面版进行配置
添加到您的Claude桌面MCP配置中(~/Library/Application Support/Claude/claude_desktop_config.json (在 macOS 上):
{
"mcpServers": {
"patch": {
"command": "python",
"args": ["-m", "patch_mcp"],
"cwd": "/path/to/patch_mcp"
}
}
}重启Claude桌面版后,补丁工具即可使用。
独立运行
python -m patch_mcp服务器以标准输入输出(stdio)模式运行,并通过模型上下文协议进行通信。
______________________________________________________________________
可用工具
服务器提供了7种工具以实现全面的补丁管理:
核心补丁操作
apply_patch- 对文件应用统一的差异补丁
- 支持多块补丁(原子方式应用多个更改) - 测试模式(不修改原样运行) - 应用前自动验证
validate_patch- 检查是否可以应用补丁(只读)
- 在应用更改前进行预览 - 检测上下文不匹配 - 查看受影响的行范围
revert_patch- 取消之前应用的补丁
- 安全地撤销更改 - 支持多片段补丁 - 需要准确的原始补丁
generate_patch- 从两个文件版本创建补丁
- 比较原始文件和修改后的文件 - 生成标准的统一差异格式 - 可配置的上下文行
分析与检验
inspect_patch- 分析补丁内容(无需文件)
- 查看哪些文件受到影响 - 统计代码块和行变更 - 支持多文件补丁
备份与恢复
backup_file- 创建带有时间戳的备份
- 格式: filename.backup.YYYYMMDD_HHMMSS - 保留文件元数据 - 自动检查磁盘空间
restore_backup- 从备份中恢复
- 自动检测原始位置 - 在覆盖前进行安全检查 - 提供强制选项
______________________________________________________________________
示例:人工智能助手如何使用这台服务器
场景1:简单的代码修改
AI助手的思考过程:
“用户希望在config.py中将超时时间从30秒改为60秒。我将使用补丁服务器来安全地完成此操作。”
人工智能使用工具:
- 生成补丁:
Tool: generate_patch
Args: {
"original_file": "config.py",
"modified_file": "config_new.py"
}- 验证其可应用性:
Tool: validate_patch
Args: {
"file_path": "config.py",
"patch": "--- config.py\n+++ config.py\n@@ -10,3 +10,3 @@\n-timeout = 30\n+timeout = 60"
}
Result: {
"success": true,
"can_apply": true,
"preview": {"lines_to_add": 1, "lines_to_remove": 1}
}- 在应用前创建备份:
Tool: backup_file
Args: {"file_path": "config.py"}
Result: {"backup_file": "config.py.backup.20250118_143052"}- 应用补丁:
Tool: apply_patch
Args: {
"file_path": "config.py",
"patch": "--- config.py\n+++ config.py\n@@ -10,3 +10,3 @@\n-timeout = 30\n+timeout = 60"
}
Result: {"success": true, "applied": true}AI向用户报告:
“我已经在config.py中将超时时间从30秒更新为60秒。同时,已创建config.py.backup.20250118_143052作为备份,以防您需要回滚。”
______________________________________________________________________
场景2:带预演的多文件重构
AI助手的思考过程:
“用户想在三个文件中重命名一个函数。我应该先用模拟运行测试一下,然后再进行原子化应用。”
人工智能使用工具:
- 对每个补丁进行干运行测试:
Tool: apply_patch
Args: {
"file_path": "utils.py",
"patch": "...",
"dry_run": true
}
Result: {"success": true, "changes": {"lines_added": 5, "lines_removed": 5}}- 应用所有补丁:
Applies each patch with backups and validationAI向用户报告:
“我已经在 utils.py、handlers.py 和 tests.py 中重命名了该函数。所有更改都先经过了验证,然后以原子方式应用。”
______________________________________________________________________
情景3:出了点问题
AI助手的思考过程:
“补丁应用失败。我应该恢复到备份状态。”
人工智能使用工具:
Tool: restore_backup
Args: {
"backup_file": "config.py.backup.20250118_143052"
}
Result: {"success": true, "restored_to": "config.py"}AI向用户报告:
“补丁无法应用,因为文件内容不匹配。我已经从备份中恢复了原始文件。自我们讨论这个更改以来,该文件可能已被修改过。”
______________________________________________________________________
安全特性
所有操作均包含全面的安全检查:
- 🔒(锁形符号,常用于表示安全、保密或锁定状态) 符号链接保护 - 符号链接被拒绝(安全策略)
- 🔒(锁形符号,通常表示安全、保密或锁定状态) 二进制文件检测 - 二进制文件自动检测并被拒绝
- 🔒(锁形图标,通常表示安全、保密或锁定状态) 大小限制 - 文件大小最大为10MB
- 🔒(锁形图标,常用于表示安全、保密或锁定状态) 磁盘空间验证 - 确保操作前有100MB以上的可用空间
- 🔒(锁形图标,通常表示安全、保密或锁定状态) 路径遍历防护 - 防止目录逃逸
- 🔒 表示“锁定”或“安全”的符号。 权限检查 - 验证读/写权限
- 🔒(锁形符号,常用于表示安全、保密或锁定状态) 原子操作 - 文件替换使用原子重命名
看 SECURITY.md 翻译为中文是:“安全说明文件”或“安全指南文件” 以获取详细的安全信息。
______________________________________________________________________
多块补丁
一个强大的功能:对文件的不同部分应用多个更改 在原子层面上 在一个补丁中:
--- config.py
+++ config.py
@@ -10,3 +10,3 @@
# Connection settings
-timeout = 30
+timeout = 60
@@ -25,3 +25,3 @@
# Retry settings
-retries = 3
+retries = 5
@@ -50,3 +50,3 @@
# Debug settings
-debug = False
+debug = True这三个更改要么全部应用,要么一个都不应用。如果任何一部分更改失败,整个补丁将被拒绝。
______________________________________________________________________
文档
文档
- SECURITY.md 翻译为中文是:“安全指南/安全声明文件” - 安全策略和最佳实践
- WORKFLOWS.md 翻译为中文是:“工作流程.md” - 错误恢复工作流模式
- CONTRIBUTING.md(贡献指南文件) - 贡献指南
- CHANGELOG.md 翻译为中文是:“变更日志文件(Markdown 格式)” - 版本历史及更改
错误类型
服务器提供了10种不同的错误类型,以便进行精确的错误处理:
标准误差:
file_not_found,permission_denied,invalid_patch,context_mismatch,encoding_error,io_error
安全错误:
symlink_error,binary_file,disk_space_error,resource_limit
______________________________________________________________________
测试与质量
- 286项测试 (全部通过)
- 84%的代码覆盖率 跨所有模块
- 严格的类型检查 使用 mypy
- 代码格式化 与黑色(一起)
- Linting(在编程领域,通常指代码检查或代码风格检测的过程) 带有绳圈(或项圈)
- 持续集成/持续交付(CI/CD) 通过 GitHub Actions(Linux、macOS、Windows)
# Run tests
pytest tests/ -v --cov=src/patch_mcp
# Check code quality
black src/patch_mcp tests/
ruff check src/patch_mcp tests/
mypy src/patch_mcp --strict______________________________________________________________________
做出贡献
欢迎投稿!请参阅 CONTRIBUTING.md 翻译为中文是:“贡献指南.md” 或 “贡献说明文件.md”。这个文件通常用于说明如何向某个项目或组织做出贡献,包括提交代码、报告问题、提出建议等相关的指南和规范 for:
- 开发环境设置
- 测试指南
- 代码质量标准
- 提交信息规范
______________________________________________________________________
许可证
这个项目遵循MIT许可证授权——详见 许可证 文件中详述。
作者斯科特·亨宁
______________________________________________________________________
支持
- 问题:
- 讨论:
- 安全查看 \
SECURITY.md\翻译为中文是“安全指南.md”或“安全声明文件.md”,具体取决于上下文和该文件的具体内容。在实际应用中,\SECURITY.md\通常是一个用于说明项目或软件的安全注意事项、漏洞报告流程、安全更新策略等内容的文档。因此,也可以简要地翻译为“安全文档.md” 用于漏洞报告
______________________________________________________________________
模型上下文协议
这台服务器实现了 模型上下文协议(MCP)这是一个开放协议,使人工智能助手能够安全地与本地工具和数据源进行交互。
了解更多:
______________________________________________________________________
最后更新时间2025年10月19日 阶段5星中的5星(测试版)| 工具7月7日
