🚀 SVN MCP 服务器
SVN MCP 服务器是一个完整的 MCP(模型上下文协议)服务器,用于与 Subversion (SVN) 集成。它旨在让人工智能代理能够高效地管理 SVN 仓库。
✨ 主要特性
- ✅ 仓库基本操作:info、status、log、diff、checkout、update
- ✅ 文件管理:add、commit、delete、revert
- ✅ 维护工具:cleanup
- 🔄 分支管理:(开发中)
- 🔄 高级操作:merge、switch、properties(开发中)
- 🔄 分析工具:blame、conflict detection(开发中)
- 🔄 批量操作:(开发中)
📦 安装指南
安装要求
- Node.js >= 18.0.0
- Subversion (SVN) 已安装并添加到系统环境变量 PATH 中
- TypeScript(用于开发)
🔍 检测 SVN 安装情况
验证 SVN 是否安装
svn --version
where svn
which svn
svn --version --verbose
如果 SVN 正确安装,预期输出如下:
svn, version 1.14.x (r1876290)
compiled Apr 13 2023, 17:22:07 on x86_64-pc-mingw32
Copyright (C) 2023 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/
❌ 如果 SVN 未安装,常见错误如下:
'svn' is not recognized as an internal or external command
svn: command not found
bash: svn: command not found
🛠️ 高级诊断
echo $PATH
echo %PATH%
$env:PATH
find / -name "svn" 2>/dev/null
Get-ChildItem -Path C:\ -Name "svn.exe" -Recurse -ErrorAction SilentlyContinue
svn --version | head -1
💾 在 Windows 上安装 SVN
选项 1:使用包管理器
choco install subversion
winget install CollabNet.Subversion
scoop install subversion
选项 2:使用官方安装程序
-
TortoiseSVN(包含命令行客户端):
https://tortoisesvn.net/downloads.html
✅ 包含 GUI 和 CLI 客户端
✅ 与 Windows 资源管理器集成
-
SlikSVN(仅命令行):
https://sliksvn.com/download/
✅ 轻量级(仅 CLI)
✅ 适合自动化操作
-
CollabNet Subversion:
https://www.collab.net/downloads/subversion
✅ 企业版
✅ 提供商业支持
选项 3:使用 Visual Studio 或 Git for Windows
git svn --version
🐧 在 Linux 上安装 SVN
sudo apt-get update
sudo apt-get install subversion
sudo yum install subversion
sudo dnf install subversion
sudo pacman -S subversion
sudo apk add subversion
🍎 在 macOS 上安装 SVN
brew install subversion
sudo port install subversion
xcode-select --install
🔧 安装后配置 SVN
验证全局配置
svn config --list
svn config --global auth:username tu_usuario
svn config --global editor "code --wait"
svn config --global editor "notepad"
svn config --global editor "nano"
验证对仓库的访问
svn list https://svn.ejemplo.com/repo/trunk
svn list https://svn.ejemplo.com/repo/trunk --username usuario --password contraseña
从 NPM 安装
npm install -g @grec0/mcp-svn
本地开发安装
git clone https://github.com/gcorroto/mcp-svn.git
cd mcp-svn
npm install
npm run build
⚙️ 配置
环境变量
属性 |
详情 |
SVN_PATH |
SVN 可执行文件的路径 |
SVN_WORKING_DIRECTORY |
工作目录 |
SVN_USERNAME |
用于身份验证的用户名 |
SVN_PASSWORD |
用于身份验证的密码 |
SVN_TIMEOUT |
超时时间(毫秒) |
MCP 配置示例
{
"mcpServers": {
"svn": {
"command": "npx",
"args": ["@grec0/mcp-svn"],
"env": {
"SVN_PATH": "svn",
"SVN_WORKING_DIRECTORY": "/path/to/working/copy",
"SVN_USERNAME": "tu_usuario",
"SVN_PASSWORD": "tu_contraseña"
}
}
}
}
💻 使用示例
基础用法
验证系统状态
const healthCheck = await svn_health_check();
获取仓库信息
const info = await svn_info();
const fileInfo = await svn_info("src/main.js");
查看文件状态
const status = await svn_status();
const fullStatus = await svn_status(null, true);
检出仓库
const checkout = await svn_checkout(
"https://svn.example.com/repo/trunk",
"local-copy",
"HEAD",
"infinity",
false,
false
);
提交更改
await svn_add(["src/new-file.js", "docs/readme.md"], { parents: true });
await svn_commit(
"Add new feature and documentation",
["src/new-file.js", "docs/readme.md"]
);
高级用法
npm test
npm run test -- --coverage
npm run test -- --watch
🧪 测试
npm test
npm run test -- --coverage
npm run test -- --watch
🏗️ 开发
可用脚本
npm run build
npm run dev
npm run watch
npm run inspector
npm test
npm run release:patch
npm run release:minor
npm run release:major
项目结构
svn-mcp/
├── package.json
├── tsconfig.json
├── jest.config.js
├── index.ts
├── common/
│ ├── types.ts # TypeScript 类型
│ ├── utils.ts # SVN 实用工具
│ └── version.ts # 包版本
├── tools/
│ └── svn-service.ts # 主要的 SVN 服务
├── tests/
│ └── integration.test.ts # 集成测试
└── README.md
📊 开发状态
查看 SVN_MCP_IMPLEMENTATION.md 文件以获取完整的实现清单。
当前进度:第一阶段完成(基本操作)✅
后续阶段:
- 分支管理(branching)
- 高级操作(merge、switch)
- 分析工具
- 批量操作
🐛 故障排除
未找到 SVN
Error: SVN is not available in the system PATH
解决方案:安装 SVN 并确保其在系统的 PATH 中。
不是工作副本
Error: Failed to get SVN info: svn: warning: W155007: '.' is not a working copy
解决方案:导航到一个 SVN 工作副本目录或先进行检出操作。
身份验证问题
Error: svn: E170001: Authentication failed
解决方案:配置环境变量 SVN_USERNAME
和 SVN_PASSWORD
。
长时间操作超时
Error: Command timeout after 30000ms
解决方案:增加 SVN_TIMEOUT
的值。
📄 许可证
本项目采用 MIT 许可证,详情请查看 LICENSE 文件。
🤝 贡献
- Fork 本项目
- 创建功能分支 (
git checkout -b feature/nueva-caracteristica
)
- 提交更改 (
git commit -am 'Add nueva caracteristica'
)
- 将分支推送到远程 (
git push origin feature/nueva-caracteristica
)
- 创建 Pull Request
📞 支持