Labsco
gcorroto logo

SVN MCP Server

17

from gcorroto

An MCP server for integrating with and managing Subversion (SVN) repositories, enabling AI agents to perform version control tasks.

🔥🔥🔥✓ VerifiedAccount requiredAdvanced setup

SVN MCP Server

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.

🎯 Características

  • Operaciones básicas de repositorio: info, status, log, diff, checkout, update

  • Gestión de archivos: add, commit, delete, revert

  • Herramientas de mantenimiento: cleanup

  • 🔄 Gestión de ramas: (En desarrollo)

  • 🔄 Operaciones avanzadas: merge, switch, properties (En desarrollo)

  • 🔄 Herramientas de análisis: blame, conflict detection (En desarrollo)

  • 🔄 Operaciones en lote: (En desarrollo)

📋 Requisitos

  • Node.js >= 18.0.0

  • Subversion (SVN) instalado y disponible en PATH

  • TypeScript (para desarrollo)

🔍 Detectar instalación de SVN

Verificar si SVN está instalado

Copy & paste — that's it
# 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

Salida esperada si SVN está correctamente instalado:

Copy & paste — that's it
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/

❌ Errores comunes si SVN NO está instalado:

Copy & paste — that's it
# Windows
'svn' is not recognized as an internal or external command

# Linux/Mac 
svn: command not found
bash: svn: command not found

🛠️ Diagnóstico avanzado

Copy & paste — that's it
# 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

💾 Instalar SVN en Windows

Opción 1: Gestores de paquetes

Copy & paste — that's it
# Usando Chocolatey (Recomendado)
choco install subversion

# Usando winget
winget install CollabNet.Subversion

# Usando Scoop
scoop install subversion

Opción 2: Instaladores oficiales

TortoiseSVN (incluye cliente de línea de comandos):

Copy & paste — that's it
https://tortoisesvn.net/downloads.html
✅ Incluye cliente GUI y CLI
✅ Integración con Windows Explorer

SlikSVN (solo línea de comandos):

Copy & paste — that's it
https://sliksvn.com/download/
✅ Ligero (solo CLI)
✅ Ideal para automatización

CollabNet Subversion:

Copy & paste — that's it
https://www.collab.net/downloads/subversion
✅ Versión empresarial
✅ Soporte comercial disponible

Opción 3: Visual Studio o Git for Windows

Copy & paste — that's it
# 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

🐧 Instalar SVN en Linux

Copy & paste — that's it
# 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

🍎 Instalar SVN en macOS

Copy & paste — that's it
# Homebrew (Recomendado)
brew install subversion

# MacPorts
sudo port install subversion

# Desde Xcode Command Line Tools (puede estar incluido)
xcode-select --install

🔧 Configurar SVN después de la instalación

Verificar configuración global

Copy & paste — that's it
# 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

Verificar acceso a repositorios

Copy & paste — that's it
# 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

🚀 Instalación

Desde NPM

Copy & paste — that's it
npm install -g @grec0/mcp-svn

Desarrollo Local

Copy & paste — that's it
git clone https://github.com/gcorroto/mcp-svn.git
cd mcp-svn
npm install
npm run build

⚙️ Configuración

Variables de Entorno

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

Ejemplo de configuración MCP

Copy & paste — that's it
{
 "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"
 }
 }
 }
}

🛠️ Herramientas Disponibles

Operaciones Básicas

svn_health_check

Verificar el estado de salud del sistema SVN y working copy.

Copy & paste — that's it
svn_health_check()

svn_info

Obtener información detallada del working copy o archivo específico.

Copy & paste — that's it
svn_info(path?: string)

svn_status

Ver el estado de archivos en el working copy.

Copy & paste — that's it
svn_status(path?: string, showAll?: boolean)

svn_log

Ver historial de commits del repositorio.

Copy & paste — that's it
svn_log(path?: string, limit?: number, revision?: string)

svn_diff

Ver diferencias entre versiones de archivos.

Copy & paste — that's it
svn_diff(path?: string, oldRevision?: string, newRevision?: string)

Operaciones de Repositorio

svn_checkout

Hacer checkout de un repositorio SVN.

Copy & paste — that's it
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.

Copy & paste — that's it
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"
)

Gestión de Archivos

svn_add

Añadir archivos al control de versiones.

Copy & paste — that's it
svn_add(
 paths: string | string[],
 force?: boolean,
 noIgnore?: boolean,
 parents?: boolean,
 autoProps?: boolean,
 noAutoProps?: boolean
)

svn_commit

Confirmar cambios al repositorio.

Copy & paste — that's it
svn_commit(
 message: string,
 paths?: string[],
 file?: string,
 force?: boolean,
 keepLocks?: boolean,
 noUnlock?: boolean
)

svn_delete

Eliminar archivos del control de versiones.

Copy & paste — that's it
svn_delete(
 paths: string | string[],
 message?: string,
 force?: boolean,
 keepLocal?: boolean
)

svn_revert

Revertir cambios locales en archivos.

Copy & paste — that's it
svn_revert(paths: string | string[])

Herramientas de Mantenimiento

svn_cleanup

Limpiar working copy de operaciones interrumpidas.

Copy & paste — that's it
svn_cleanup(path?: string)

📖 Ejemplos de Uso

Verificar estado del sistema

Copy & paste — that's it
// Verificar que SVN esté disponible y el working copy sea válido
const healthCheck = await svn_health_check();

Obtener información del repositorio

Copy & paste — that's it
// 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");

Ver estado de archivos

Copy & paste — that's it
// Estado de todos los archivos
const status = await svn_status();

// Estado con información remota
const fullStatus = await svn_status(null, true);

Hacer checkout de un repositorio

Copy & paste — that's it
const checkout = await svn_checkout(
 "https://svn.example.com/repo/trunk",
 "local-copy",
 "HEAD",
 "infinity",
 false,
 false
);

Confirmar cambios

Copy & paste — that's it
// 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"]
);

🧪 Testing

Copy & paste — that's it
# Ejecutar tests
npm test

# Tests con cobertura
npm run test -- --coverage

# Tests en modo watch
npm run test -- --watch

🏗️ Desarrollo

Scripts disponibles

Copy & paste — that's it
# 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

Estructura del proyecto

Copy & paste — that's it
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

📊 Estado del Desarrollo

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:

  • Gestión de ramas (branching)

  • Operaciones avanzadas (merge, switch)

  • Herramientas de análisis

  • Operaciones en lote

📄 Licencia

MIT License - ver LICENSE para más detalles.

🤝 Contribuir

  • Fork el proyecto

  • Crear una rama feature (git checkout -b feature/nueva-caracteristica)

  • Commit los cambios (git commit -am 'Add nueva caracteristica')

  • Push a la rama (git push origin feature/nueva-caracteristica)

  • Crear un Pull Request

📞 Soporte