🚀 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
📞 支持