MCP Servers

模型上下文协议服务器、框架、SDK 和模板的综合目录。

S
Svn MCP Server
作者 @lgx-lj

MCP server by lgx-lj

创建于 5/9/2026
更新于 about 3 hours ago
Repository documentation and setup instructions

SVN MCP Server

基于 Spring AI 构建的 SVN(Subversion)MCP 工具服务器,以 stdio 模式运行,为 AI 客户端提供 SVN 版本管理能力。

技术栈

| 组件 | 版本 | |------|------| | JDK | 21 | | Spring Boot | 3.5.11 | | Spring AI | 1.1.2 | | SVN CLI | 1.14+ |

项目结构

svn-mcp-server/
├── pom.xml
├── README.md
└── src/
    ├── main/java/com/lgx/svnmcpserver/
    │   ├── SvnMcpServerApplication.java    # 启动类 + Bean 注册
    │   └── mcp/
    │       └── SvnTools.java               # SVN 工具定义(7个工具)
    └── resources/
        ├── application.yml                 # 应用配置
        └── logback-spring.xml              # 日志配置

前置条件

  • JDK 21:必须使用 Java 21 及以上版本
  • SVN CLI:需要 svn 命令行工具,建议 1.14+ 版本
  • Maven:确保 mvn 命令可用

提示:可通过环境变量 SVN_HOME 指定 svn 可执行文件所在目录,不配则自动使用 PATH 中的 svn


快速开始

1. 构建项目

mvn clean package -DskipTests

构建成功后,可执行 jar 位于 target/svn-mcp-server-1.0.0.jar

2. 配置 MCP 客户端

jar 包无需手动启动——由 MCP 客户端(如 Claude Code)自动拉起并管理生命周期。

配置位置

以 Claude Code 为例,有两个位置可选:

| 位置 | 路径 | 生效范围 | |------|------|----------| | 全局配置 | C:\Users\<用户名>\.claude\settings.json | 所有项目 | | 项目配置 | <项目根目录>\.claude\settings.json | 仅当前项目 |

settings.json 中新增 mcpServers 字段即可:

{
  "mcpServers": {
    "svn-tools": {
      "command": "C:/Users/LiGuoXian/.jdks/ms-21.0.10/bin/java.exe",
      "args": [
        "-jar",
        "D:/SoftwareCoding/workspace/LGX/svn-mcp-server/target/svn-mcp-server-1.0.0.jar"
      ],
      "env": {
        "JAVA_OPTS": "-Xmx256m",
        "SVN_HOME": "D:/SoftwareCoding/SVN/Subversion-1.14.9-x64/bin"
      }
    }
  }
}

配置项说明:

| 字段 | 说明 | |------|------| | command | JDK 21 java.exe绝对路径 | | args | -jar 后跟 jar 包的绝对路径 | | env.JAVA_OPTS | JVM 启动参数,此处限制最大堆内存为 256MB | | env.SVN_HOME | svn 命令所在目录(可选),不配则用 PATH 中的 svn |

配置完成后重启客户端即可生效。

3. SVN 认证(重要)

MCP 服务器不需要配置账号密码——它直接调用系统本地的 svn 命令行工具,认证完全依赖 SVN 自身的凭据缓存。

AI 客户端 → MCP 协议 → SvnTools → svn 命令 → 读取本地缓存凭据

首次使用前,手动执行一次 svn 操作,让 SVN 缓存凭据:

# 方式一:checkout 一个仓库,会提示输入账号密码
svn checkout https://your-svn-server/svn/your-project D:/your-local-path

# 方式二:查看仓库信息,也会触发认证
svn info https://your-svn-server/svn/your-project

输入一次账号密码后,SVN 会自动缓存到 %APPDATA%\Subversion\auth(Windows),之后 MCP 调用 svn 命令就能自动使用这些凭据。

总结:只要本机 svn 命令能正常工作(凭据已缓存),MCP 就能正常工作。凭据过期后,重新 svn info <仓库URL> 认证一次即可。

4. 验证连接

配置完成后,在 AI 客户端中询问类似问题即可验证:

  • "帮我看看 D:/my-svn-project 的提交历史"
  • "查看这个工作区的文件状态"
  • "帮我更新一下工作区"

可用工具

SVN MCP 服务器对外暴露以下 7 个工具:

与 Git 命令对比

| 操作 | SVN(本工具) | Git | |------|--------------|-----| | 拉取最新代码 | svnUpdate | git pull | | 查看改动 | svnDiff | git diff | | 查看状态 | svnStatus | git status | | 查看日志 | svnLog | git log | | 行级追溯 | svnBlame | git blame | | 仓库信息 | svnInfo | git remote -v + git log -1 | | 目录浏览 | svnList | 无直接对应 |

注意:所有工具均为只读操作(svnUpdate 除外),不提供 commit、add、delete 等写操作。

1. svnLog——提交历史查询

查看 SVN 工作区的提交历史记录。

| 参数 | 类型 | 说明 | |------|------|------| | workingDir | String | 工作目录的绝对路径 | | limit | int | 显示最近多少条记录,默认 20 |

2. svnDiff——差异对比

查看工作区文件与基准版本的差异,输出 unified diff 格式。

| 参数 | 类型 | 说明 | |------|------|------| | workingDir | String | 工作目录的绝对路径 | | filePath | String | 要查看差异的文件(相对路径),不填则对比整个工作区 |

3. svnStatus——工作区状态

查看文件的变更状态。

| 状态码 | 含义 | |--------|------| | M | 已修改(Modified) | | A | 新添加(Added) | | D | 已删除(Deleted) | | ? | 未纳入版本控制 |

| 参数 | 类型 | 说明 | |------|------|------| | workingDir | String | 工作目录的绝对路径 |

4. svnInfo——仓库信息

查看当前工作区或指定 URL 的 SVN 仓库信息(仓库 URL、当前版本号、最后修改者、最后修改时间)。

| 参数 | 类型 | 说明 | |------|------|------| | path | String | 工作目录路径或 SVN 仓库 URL |

5. svnUpdate——更新工作区

将工作区更新到最新版本。相当于 git pull,执行后本地文件直接变成最新版本。

| 参数 | 类型 | 说明 | |------|------|------| | workingDir | String | 工作目录的绝对路径 |

6. svnBlame——文件追溯

查看文件每一行的最后修改者和版本号,适合追查某段代码是谁在哪个版本写的。

| 参数 | 类型 | 说明 | |------|------|------| | workingDir | String | 工作目录的绝对路径 | | filePath | String | 要追溯的文件路径(相对于工作目录) |

7. svnList——目录列表

列出 SVN 仓库中的目录和文件,不依赖本地工作副本,可直接传仓库 URL。

| 参数 | 类型 | 说明 | |------|------|------| | url | String | SVN 仓库 URL 或本地路径 | | recursive | boolean | 是否递归列出,默认 false |


关键设计说明

  • 日志写入 stderr:stdout 为 MCP 协议专用通道,日志输出到 stderr 和文件 svn-mcp-server.log
  • 无外部依赖:直接调用系统 svn 命令行工具,不引入 SVNKit 等第三方库,减少依赖复杂度。
  • 安全防护:校验路径中的 .. 防止目录穿越,校验 ; | & ` 等字符防止命令注入。
  • 超时保护:每个 svn 命令最多执行 30 秒,超时自动终止进程,避免卡死 MCP 通道。
  • 非交互模式:所有 svn 命令自动加 --non-interactive,避免交互式提示卡死进程。
快速设置
此服务器的安装指南

安装命令 (包未发布)

git clone https://github.com/lgx-lj/svn-mcp-server
手动安装: 请查看 README 获取详细的设置说明和所需的其他依赖项。

Cursor 配置 (mcp.json)

{ "mcpServers": { "lgx-lj-svn-mcp-server": { "command": "git", "args": [ "clone", "https://github.com/lgx-lj/svn-mcp-server" ] } } }