Skip to main content
Glama

SVN MCP Server

by gcorroto
SVN_MCP_IMPLEMENTATION.md6.85 kB
# SVN MCP - Implementación por Etapas ## 🎯 Objetivo Crear un MCP (Model Context Protocol) completo para Subversion (SVN) que permita a agentes de IA: - Entender la estructura de ramas y repositorios - Ver cambios y historial - Realizar todas las operaciones SVN disponibles - Funcionar correctamente en entornos Windows ## 📋 Checklist de Implementación ### Etapa 1: Estructura Base del Proyecto ✅ - [x] Crear estructura de directorios - [x] Configurar package.json - [x] Configurar TypeScript (tsconfig.json) - [x] Crear archivo de versión - [x] Configurar tipos básicos - [x] Crear utilidades para ejecutar comandos SVN ### Etapa 2: Operaciones Básicas de Repositorio ✅ - [x] **svn_info** - Obtener información del repositorio - [x] **svn_status** - Ver estado de archivos - [x] **svn_log** - Ver historial de commits - [x] **svn_diff** - Ver diferencias entre versiones - [x] **svn_checkout** - Clonar repositorio - [x] **svn_update** - Actualizar working copy ### Etapa 3: Gestión de Archivos ✅ - [x] **svn_add** - Añadir archivos al control de versiones - [x] **svn_delete** - Eliminar archivos - [ ] **svn_move** - Mover/renombrar archivos - [ ] **svn_copy** - Copiar archivos - [x] **svn_revert** - Revertir cambios - [x] **svn_commit** - Confirmar cambios ### Etapa 4: Gestión de Ramas (Branching) 🔄 - [ ] **svn_branch_create** - Crear nueva rama - [ ] **svn_branch_list** - Listar ramas existentes - [ ] **svn_branch_switch** - Cambiar de rama - [ ] **svn_branch_merge** - Fusionar ramas - [ ] **svn_branch_delete** - Eliminar rama ### Etapa 5: Operaciones Avanzadas 🔄 - [ ] **svn_resolve** - Resolver conflictos - [ ] **svn_import** - Importar proyecto - [ ] **svn_export** - Exportar sin metadatos - [ ] **svn_relocate** - Cambiar URL del repositorio - [ ] **svn_cleanup** - Limpiar working copy - [ ] **svn_lock** - Bloquear archivos - [ ] **svn_unlock** - Desbloquear archivos ### Etapa 6: Análisis y Reporting 🔄 - [ ] **svn_blame** - Ver quién modificó cada línea - [ ] **svn_list** - Listar contenido del repositorio - [ ] **svn_cat** - Ver contenido de archivo - [ ] **svn_propget** - Obtener propiedades - [ ] **svn_propset** - Establecer propiedades - [ ] **svn_propdel** - Eliminar propiedades ### Etapa 7: Herramientas de Productividad 🔄 - [ ] **svn_working_copy_summary** - Resumen completo del working copy - [ ] **svn_branch_comparison** - Comparar ramas - [ ] **svn_conflict_detector** - Detectar conflictos potenciales - [ ] **svn_health_check** - Verificar estado del repositorio - [ ] **svn_batch_operations** - Operaciones en lote ### Etapa 8: Testing y Optimización 🔄 - [ ] Crear tests unitarios - [ ] Manejo de errores robusto - [ ] Optimización de rendimiento - [ ] Documentación completa - [ ] Validación en Windows --- ## 🛠️ Comandos SVN a Implementar ### Comandos Básicos ```bash svn checkout (co) # Checkout working copy svn update (up) # Update working copy svn commit (ci) # Commit changes svn add # Add files to version control svn delete (del/rm) # Delete files svn status (st/stat) # Show status svn info # Show info svn log # Show log messages svn diff (di) # Show differences ``` ### Comandos de Archivos ```bash svn copy (cp) # Copy files/directories svn move (mv/rename) # Move/rename files svn revert # Revert changes svn resolve # Resolve conflicts svn cat # Output file contents svn list (ls) # List directory entries ``` ### Comandos de Ramas ```bash svn switch (sw) # Switch working copy to different URL svn merge # Merge changes svn import # Import files into repository svn export # Export clean directory tree ``` ### Comandos de Propiedades ```bash svn propget (pget/pg) # Get property value svn propset (pset/ps) # Set property value svn propdel (pdel/pd) # Delete property svn proplist (plist/pl) # List properties ``` ### Comandos de Administración ```bash svn cleanup # Clean up working copy svn relocate # Relocate working copy svn lock # Lock files svn unlock # Unlock files svn blame (praise/annotate) # Show file annotations ``` --- ## 🔧 Implementación Técnica ### Estructura de Archivos ``` svn-mcp/ ├── package.json ├── tsconfig.json ├── index.ts ├── common/ │ ├── types.ts │ ├── utils.ts │ └── version.ts ├── tools/ │ ├── svn-service.ts │ ├── file-operations.ts │ ├── branch-operations.ts │ └── analysis-tools.ts ├── tests/ │ └── integration.test.ts └── README.md ``` ### Consideraciones para Windows - Usar `child_process.spawn()` con `shell: true` - Manejar rutas con `path.resolve()` y `path.normalize()` - Escapar argumentos correctamente - Detectar si SVN está instalado y disponible en PATH - Manejar encoding de caracteres especiales ### Manejo de Errores - Capturar stderr de comandos SVN - Parsear códigos de error específicos - Proporcionar mensajes de error claros - Manejar timeouts de operaciones largas --- ## 📊 Progreso Actual **Completado:** 14/40 tareas (35%) **Etapa Actual:** Operaciones Básicas de Repositorio ✅ **Próxima Etapa:** Gestión de Archivos ### ✅ Completado Recientemente: - [x] Estructura base del proyecto - [x] Configuración de TypeScript y Jest - [x] **svn_health_check** - Verificar sistema SVN - [x] **svn_info** - Obtener información del repositorio - [x] **svn_status** - Ver estado de archivos - [x] **svn_log** - Ver historial de commits - [x] **svn_diff** - Ver diferencias entre versiones - [x] **svn_checkout** - Clonar repositorio - [x] **svn_update** - Actualizar working copy - [x] **svn_add** - Añadir archivos al control de versiones - [x] **svn_commit** - Confirmar cambios - [x] **svn_delete** - Eliminar archivos - [x] **svn_revert** - Revertir cambios - [x] **svn_cleanup** - Limpiar working copy --- ## 🚀 Comandos de Desarrollo ```bash # Instalar dependencias npm install # Compilar TypeScript npm run build # Ejecutar en modo desarrollo npm run dev # Ejecutar tests npm test # Compilar y publicar npm run release ``` --- ## 📝 Notas de Implementación ### Comando Base SVN Todos los comandos utilizarán la estructura: ```typescript svn [command] [options] [arguments] ``` ### Formato de Respuesta Todas las herramientas devolverán JSON estructurado con: - `success`: boolean - `data`: resultado del comando - `error`: mensaje de error si aplica - `command`: comando ejecutado - `workingDirectory`: directorio de trabajo ### Autenticación - Soporte para credenciales mediante variables de entorno - Manejo de autenticación por certificados - Cache de credenciales cuando sea posible

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gcorroto/mcp-svn'

If you have feedback or need assistance with the MCP directory API, please join our Discord server