
SVN
STDIOMCP server for Subversion (SVN) repository management and version control operations
MCP server for Subversion (SVN) repository management and version control operations
Un servidor MCP (Model Context Protocol) completo para integración con Subversion (SVN), diseñado para permitir a agentes de IA gestionar repositorios SVN de manera eficiente.
# Comando básico para verificar SVN svn --version # Verificar ruta completa del ejecutable where svn # Windows which svn # Linux/Mac # Verificar cliente SVN completo 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
# Verificar PATH del sistema echo $PATH # Linux/Mac echo %PATH% # Windows CMD $env:PATH # Windows PowerShell # Buscar executables SVN en el sistema find / -name "svn" 2>/dev/null # Linux Get-ChildItem -Path C:\ -Name "svn.exe" -Recurse -ErrorAction SilentlyContinue # Windows PowerShell # Verificar versión específica del cliente svn --version | head -1 # Obtener solo la primera línea con la versión
# Usando Chocolatey (Recomendado) choco install subversion # Usando winget winget install CollabNet.Subversion # Usando Scoop scoop install subversion
TortoiseSVN (incluye cliente de línea de comandos):
https://tortoisesvn.net/downloads.html
✅ Incluye cliente GUI y CLI
✅ Integración con Windows Explorer
SlikSVN (solo línea de comandos):
https://sliksvn.com/download/
✅ Ligero (solo CLI)
✅ Ideal para automatización
CollabNet Subversion:
https://www.collab.net/downloads/subversion
✅ Versión empresarial
✅ Soporte comercial disponible
# Si tienes Git for Windows instalado, puede incluir SVN git svn --version # Visual Studio también puede incluir SVN # Ir a: Visual Studio Installer > Modify > Individual Components > 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 (Recomendado) brew install subversion # MacPorts sudo port install subversion # Desde Xcode Command Line Tools (puede estar incluido) xcode-select --install
# Ver configuración actual svn config --list # Configurar usuario global svn config --global auth:username tu_usuario # Configurar editor por defecto svn config --global editor "code --wait" # VS Code svn config --global editor "notepad" # Windows Notepad svn config --global editor "nano" # Linux/Mac nano
# Probar conexión a repositorio (sin hacer checkout) svn list https://svn.ejemplo.com/repo/trunk # Probar con credenciales específicas 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
Variable | Descripción | Por Defecto |
---|---|---|
SVN_PATH | Ruta del ejecutable SVN | svn |
SVN_WORKING_DIRECTORY | Directorio de trabajo | process.cwd() |
SVN_USERNAME | Usuario para autenticación | - |
SVN_PASSWORD | Contraseña para autenticación | - |
SVN_TIMEOUT | Timeout en milisegundos | 30000 |
{ "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_health_check
Verificar el estado de salud del sistema SVN y working copy.
svn_health_check()
svn_info
Obtener información detallada del working copy o archivo específico.
svn_info(path?: string)
svn_status
Ver el estado de archivos en el working copy.
svn_status(path?: string, showAll?: boolean)
svn_log
Ver historial de commits del repositorio.
svn_log(path?: string, limit?: number, revision?: string)
svn_diff
Ver diferencias entre versiones de archivos.
svn_diff(path?: string, oldRevision?: string, newRevision?: string)
svn_checkout
Hacer checkout de un repositorio SVN.
svn_checkout(
url: string,
path?: string,
revision?: number | "HEAD",
depth?: "empty" | "files" | "immediates" | "infinity",
force?: boolean,
ignoreExternals?: boolean
)
svn_update
Actualizar working copy desde el repositorio.
svn_update(
path?: string,
revision?: number | "HEAD" | "BASE" | "COMMITTED" | "PREV",
force?: boolean,
ignoreExternals?: boolean,
acceptConflicts?: "postpone" | "base" | "mine-conflict" | "theirs-conflict" | "mine-full" | "theirs-full"
)
svn_add
Añadir archivos al control de versiones.
svn_add(
paths: string | string[],
force?: boolean,
noIgnore?: boolean,
parents?: boolean,
autoProps?: boolean,
noAutoProps?: boolean
)
svn_commit
Confirmar cambios al repositorio.
svn_commit(
message: string,
paths?: string[],
file?: string,
force?: boolean,
keepLocks?: boolean,
noUnlock?: boolean
)
svn_delete
Eliminar archivos del control de versiones.
svn_delete(
paths: string | string[],
message?: string,
force?: boolean,
keepLocal?: boolean
)
svn_revert
Revertir cambios locales en archivos.
svn_revert(paths: string | string[])
svn_cleanup
Limpiar working copy de operaciones interrumpidas.
svn_cleanup(path?: string)
// Verificar que SVN esté disponible y el working copy sea válido const healthCheck = await svn_health_check();
// Información general del working copy const info = await svn_info(); // Información de un archivo específico const fileInfo = await svn_info("src/main.js");
// Estado de todos los archivos const status = await svn_status(); // Estado con información remota const fullStatus = await svn_status(null, true);
const checkout = await svn_checkout( "https://svn.example.com/repo/trunk", "local-copy", "HEAD", "infinity", false, false );
// Añadir archivos await svn_add(["src/new-file.js", "docs/readme.md"], { parents: true }); // Hacer commit await svn_commit( "Add new feature and documentation", ["src/new-file.js", "docs/readme.md"] );
# Ejecutar tests npm test # Tests con cobertura npm run test -- --coverage # Tests en modo watch npm run test -- --watch
# Compilar TypeScript npm run build # Modo desarrollo npm run dev # Modo watch npm run watch # Inspector MCP npm run inspector # Tests npm test # Publicar nueva versión 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 # Tipos TypeScript
│ ├── utils.ts # Utilidades para SVN
│ └── version.ts # Versión del paquete
├── tools/
│ └── svn-service.ts # Servicio principal SVN
├── tests/
│ └── integration.test.ts # Tests de integración
└── README.md
Ver el archivo SVN_MCP_IMPLEMENTATION.md para el checklist completo de implementación.
Progreso actual: Etapa 1 completada (Operaciones Básicas) ✅
Próximas etapas:
Error: SVN is not available in the system PATH
Solución: Instalar SVN y asegurarse de que esté en el PATH del sistema.
Error: Failed to get SVN info: svn: warning: W155007: '.' is not a working copy
Solución: Navegar a un directorio que sea un working copy de SVN o hacer checkout primero.
Error: svn: E170001: Authentication failed
Solución: Configurar las variables de entorno SVN_USERNAME
y SVN_PASSWORD
.
Error: Command timeout after 30000ms
Solución: Incrementar el valor de SVN_TIMEOUT
.
MIT License - ver LICENSE para más detalles.
git checkout -b feature/nueva-caracteristica
)git commit -am 'Add nueva caracteristica'
)git push origin feature/nueva-caracteristica
)