SVN MCP 服务器是一个完整的 MCP(模型上下文协议)服务器,用于与 Subversion (SVN) 集成。它旨在让人工智能代理能够高效地管理 SVN 仓库。
# 验证 SVN 的基本命令
svn --version
# 验证可执行文件的完整路径
where svn # Windows
which svn # Linux/Mac
# 验证完整的 SVN 客户端
svn --version --verbose
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/
# Windows
'svn' is not recognized as an internal or external command
# Linux/Mac
svn: command not found
bash: svn: command not found
# 验证系统的 PATH
echo $PATH # Linux/Mac
echo %PATH% # Windows CMD
$env:PATH # Windows PowerShell
# 在系统中查找 SVN 可执行文件
find / -name "svn" 2>/dev/null # Linux
Get-ChildItem -Path C:\ -Name "svn.exe" -Recurse -ErrorAction SilentlyContinue # Windows PowerShell
# 验证客户端的特定版本
svn --version | head -1 # 仅获取包含版本的第一行
# 使用 Chocolatey(推荐)
choco install subversion
# 使用 winget
winget install CollabNet.Subversion
# 使用 Scoop
scoop install subversion
TortoiseSVN(包含命令行客户端):
https://tortoisesvn.net/downloads.html
✅ 包含 GUI 和 CLI 客户端
✅ 与 Windows 资源管理器集成
SlikSVN(仅命令行):
https://sliksvn.com/download/
✅ 轻量级(仅 CLI)
✅ 适合自动化操作
CollabNet Subversion:
https://www.collab.net/downloads/subversion
✅ 企业版
✅ 提供商业支持
# 如果你安装了 Git for Windows,它可能包含 SVN
git svn --version
# Visual Studio 也可能包含 SVN
# 转到:Visual Studio 安装程序 > 修改 > 单个组件 > Subversion
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install subversion
# CentOS/RHEL/Fedora
sudo yum install subversion # CentOS 7
sudo dnf install subversion # CentOS 8/Fedora
# Arch Linux
sudo pacman -S subversion
# Alpine Linux
sudo apk add subversion
# Homebrew(推荐)
brew install subversion
# MacPorts
sudo port install subversion
# 从 Xcode 命令行工具(可能已包含)
xcode-select --install
# 查看当前配置
svn config --list
# 配置全局用户
svn config --global auth:username tu_usuario
# 配置默认编辑器
svn config --global editor "code --wait" # VS Code
svn config --global editor "notepad" # Windows 记事本
svn config --global editor "nano" # Linux/Mac nano
# 测试与仓库的连接(不进行检出)
svn list https://svn.ejemplo.com/repo/trunk
# 使用特定凭据进行测试
svn list https://svn.ejemplo.com/repo/trunk --username usuario --password contraseña
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 |
超时时间(毫秒) |
{
"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"
}
}
}
}
// 验证 SVN 是否可用以及工作副本是否有效
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
# 编译 TypeScript
npm run build
# 开发模式
npm run dev
# 监听模式
npm run watch
# MCP 检查器
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 文件以获取完整的实现清单。
当前进度:第一阶段完成(基本操作)✅
后续阶段:
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 文件。
git checkout -b feature/nueva-caracteristica)git commit -am 'Add nueva caracteristica')git push origin feature/nueva-caracteristica)