An MCP server for integrating with and managing Subversion (SVN) repositories, enabling AI agents to perform version control tasks.
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
)Interact with GitHub APIs for automation and repository management.
Gitee API integration, repository, issue, and pull request management, and more.
GitHub's official MCP Server
Connects AI assistants to Obsidian vaults stored in GitHub repositories, enabling them to read, search, and analyze your notes and documentation.
Interact with GitHub repositories, including issues, pull requests, commits, releases, and actions.
A server for GitHub project management with advanced resource management, capacity planning, and workload optimization capabilities.
Manage GitHub Projects V2 using the GitHub GraphQL API.
Integrates with GitHub APIs for advanced automation and interaction, supporting both remote and local deployments.
An MCP server for Bitbucket that provides pull request context to LLMs for automated code reviews.
An MCP server for interacting with and automating Git repositories using Large Language Models.