Mcp Svn

Mcp Svn

🚀 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 的基本命令
svn --version

# 验证可执行文件的完整路径
where svn        # Windows
which svn        # Linux/Mac

# 验证完整的 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 未安装,常见错误如下:

# 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       # 仅获取包含版本的第一行

💾 在 Windows 上安装 SVN

选项 1:使用包管理器

# 使用 Chocolatey(推荐)
choco install subversion

# 使用 winget
winget install CollabNet.Subversion

# 使用 Scoop
scoop install subversion

选项 2:使用官方安装程序

  1. TortoiseSVN(包含命令行客户端):

    https://tortoisesvn.net/downloads.html
    ✅ 包含 GUI 和 CLI 客户端
    ✅ 与 Windows 资源管理器集成
    
  2. SlikSVN(仅命令行):

    https://sliksvn.com/download/
    ✅ 轻量级(仅 CLI)
    ✅ 适合自动化操作
    
  3. CollabNet Subversion

    https://www.collab.net/downloads/subversion
    ✅ 企业版
    ✅ 提供商业支持
    

选项 3:使用 Visual Studio 或 Git for Windows

# 如果你安装了 Git for Windows,它可能包含 SVN
git svn --version

# Visual Studio 也可能包含 SVN
# 转到:Visual Studio 安装程序 > 修改 > 单个组件 > Subversion

🐧 在 Linux 上安装 SVN

# 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

🍎 在 macOS 上安装 SVN

# Homebrew(推荐)
brew install subversion

# MacPorts
sudo port install subversion

# 从 Xcode 命令行工具(可能已包含)
xcode-select --install

🔧 安装后配置 SVN

验证全局配置

# 查看当前配置
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 安装

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"
}
}
}
}

💻 使用示例

基础用法

验证系统状态

// 验证 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 文件以获取完整的实现清单。

当前进度:第一阶段完成(基本操作)✅

后续阶段

  • 分支管理(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_USERNAMESVN_PASSWORD

长时间操作超时

Error: Command timeout after 30000ms

解决方案:增加 SVN_TIMEOUT 的值。

📄 许可证

本项目采用 MIT 许可证,详情请查看 LICENSE 文件。

🤝 贡献

  1. Fork 本项目
  2. 创建功能分支 (git checkout -b feature/nueva-caracteristica)
  3. 提交更改 (git commit -am 'Add nueva caracteristica')
  4. 将分支推送到远程 (git push origin feature/nueva-caracteristica)
  5. 创建 Pull Request

📞 支持

  • 0 关注
  • 0 收藏,36 浏览
  • system 提出于 2025-09-27 17:09

相似服务问题

相关AI产品