内容
# svn-agent MCP
适用于代理的安全状态、差异、EOL诊断、预提交检查和受保护的SVN突变的严格SVN模型上下文协议服务器。
实现合约位于 `docs/SPEC.md` 中。 版本 `1.0.0` 是第一个公开的开源版本,可以在 `releases/v1.0.0` 下准备一个自包含的本地运行时包。
要求:Windows,Node.js 20 或更新版本,Git,以及访问公共 npm 注册表。捆绑的 SlikSVN 和 dos2unix 运行时有效载荷仅限 Windows。
## 快速入门
```powershell
git clone https://github.com/shrishailrana-maker/svn-agent-mcp-v1.git
cd svn-agent-mcp-v1
npm install
npm run prepare:local
npm test
```
## 从 GitHub 设置代理
告诉代理:
```text
从 https://github.com/shrishailrana-maker/svn-agent-mcp-v1 获取 SVN MCP,将其克隆到 C:\MCP\svn-agent-mcp-v1,运行 npm install,运行 npm run prepare:local,然后将 MCP 命令配置为 node C:\MCP\svn-agent-mcp-v1\current\dist\index.js。
```
设置命令为:
```powershell
git clone https://github.com/shrishailrana-maker/svn-agent-mcp-v1.git C:\MCP\svn-agent-mcp-v1
cd C:\MCP\svn-agent-mcp-v1
npm install
npm run prepare:local
```
然后配置 MCP 客户端运行:
```text
node C:\MCP\svn-agent-mcp-v1\current\dist\index.js
```
### Claude 桌面配置示例
在 `mcpServers` 下添加:
```json
{
"mcpServers": {
"svn": {
"command": "node",
"args": ["C:\\MCP\\svn-agent-mcp-v1\\current\\dist\\index.js"]
}
}
}
```
### Codex 配置示例
```toml
[mcp_servers.svn]
command = "node"
args = ["C:\\MCP\\svn-agent-mcp-v1\\current\\dist\\index.js"]
startup_timeout_sec = 120
```
更改配置后重启 MCP 客户端。
## 启动 MCP
从此工作副本进行开发:
```powershell
cd <path-to-svn-agent-mcp-v1>
npm install
npm run prepare:local
node .\current\dist\index.js
```
源代码树包括 `bin/`,其中包含完整的 SlikSVN `bin` 有效载荷和完整的 dos2unix `bin` 有效载荷。发布会将该文件夹复制到 `current/bin`,因此普通的 Windows 客户端不需要定位或安装 `svn`、`svnversion`、`svnadmin`、`dos2unix`、`unix2dos` 或其所需的 DLL。请参阅 `THIRD_PARTY_NOTICES.md` 和 `THIRD_PARTY_CHECKSUMS.txt` 以获取捆绑二进制通知和 SHA256 哈希值。
## 即插即用客户端配置
全局注册 MCP 一次。不要设置 `cwd`,也不要设置环境变量:
通用客户端示例:
```json
{
"mcpServers": {
"svn": {
"command": "node",
"args": ["C:\\MCP\\svn-agent-mcp-v1\\current\\dist\\index.js"]
}
}
}
```
MCP 不绑定到一个 SVN 工作副本。如果工具调用提供绝对路径并省略 `cwd`,服务器会为这些路径找到最近的 SVN 工作副本。相对路径需要明确的每次调用 `cwd`。
客户端注册是静态的:配置 MCP 一次,工作副本发现发生在每个工具调用时。服务器不会在运行时重写客户端配置。
环境变量对于正常使用不是必需的。它们仅是开发/测试逃生口:`SVN_AGENT_BIN_DIR`、`SVN_AGENT_SVN_PATH`、`SVN_AGENT_DOS2UNIX_DIR`、`SVN_AGENT_TIMEOUT_MS` 和 `SVN_AGENT_MAX_DIFF_LINES`。
## 命令
| 命令 | 描述 |
| --- | --- |
| `npm run dev` | 在开发过程中运行 TypeScript 入口点 |
| `npm run typecheck` | 检查 TypeScript 而不发出构建输出 |
| `npm run build` | 编译 `src/` 到 `dist/` |
| `npm test` | 运行 Jest 测试套件 |
| `npm run prepare:local` | 构建并准备本地 `current` 运行时 |
| `npm run release:prepare` | 将 `dist/` 和 `bin/` 复制到 `releases/v<version>` 并重新指向 `current` |
| `npm run clean` | 使用 Node 清洁脚本删除根 `dist/` |
## 操作诊断
使用 `svn_self_check` 验证 MCP 包、`current` 版本指针、捆绑二进制文件和发布脚本。在 SVN 自身行为异常时,在工作副本路径上使用 `svn_diagnose`;它检查本地状态、远程状态、HEAD 信息、最新日志可达性,并返回有关身份验证、网络、锁定和工作副本数据库失败的可行说明。
对于 SVN 属性工作,请使用 `svn_propget` 和受保护的 `svn_propset` 代替原始 `svn propget`/`svn propset`。`svn_propset_eol_style` 仍然是 `svn:eol-style` 规范化的更安全快捷方式。
## 更新日志
发布历史记录在 `CHANGELOG.md` 中。
## 布局
| 路径 | 用途 |
| --- | --- |
| `src/` | MCP 服务器实现 |
| `src/parse/` | SVN XML/文本解析器 |
| `src/tools/` | MCP 工具系列 |
| `tests/` | 单元测试和临时仓库集成测试 |
| `.svn-mcp-policy.json` | 此 MCP 的故意运行时有效载荷的仓库本地防护异常 |
| `bin/` | 版本化的 Windows SVN 和 EOL 转换器运行时二进制文件 |
| `THIRD_PARTY_NOTICES.md` | 捆绑二进制有效载荷的通知 |
| `docs/` | 规范、本地规则和决策 |
| `releases/` | 生成的版本化运行时发布有效载荷,被 Git 忽略 |
## 使用模型
注册一个全局 MCP 服务器,并在跨 SVN 工作副本工作时使用显式路径或每次调用 `cwd` 值。服务器不假定产品名称、项目名称或固定的工作副本。