Redmine
Un servidor MCP para interactuar con el sistema de gestión de proyectos Redmine.
Documentación
Servidor MCP de Redmine
Un servidor de Protocolo de Contexto de Modelo (MCP) para la integración con Redmine, construido con TypeScript siguiendo la metodología TDD. Este servidor permite a los asistentes de IA interactuar con instancias de Redmine para gestionar incidencias, proyectos y usuarios con características integrales de seguridad y monitoreo.
Características
- Gestión de Incidencias: Crear, leer, actualizar y listar incidencias
- Gestión de Proyectos: Listar y ver detalles de proyectos
- Gestión de Usuarios: Listar y ver información de usuarios
- Manejo de Errores: Manejo integral de errores con mensajes significativos
- Seguridad de Tipos: Implementación completa en TypeScript con definiciones de tipos adecuadas
Instalación
npm install
npm run build
Configuración
El servidor requiere dos variables de entorno:
REDMINE_BASE_URL: La URL base de tu instancia de Redmine (por ejemplo,https://redmine.example.com)REDMINE_API_KEY: Tu clave de API de Redmine (se encuentra en la configuración de tu cuenta)
Uso
Ejecutar el Servidor
export REDMINE_BASE_URL="https://your-redmine-instance.com"
export REDMINE_API_KEY="your-api-key-here"
npm run dev
Compilar y Ejecutar
npm run build
export REDMINE_BASE_URL="https://your-redmine-instance.com"
export REDMINE_API_KEY="your-api-key-here"
npm start
Despliegue en Producción
# Build the project
npm run build
# Set production environment variables
export REDMINE_BASE_URL="https://your-redmine-instance.com"
export REDMINE_API_KEY="your-api-key-here"
export LOG_LEVEL="info"
# Start the server
npm start
Herramientas Disponibles
Herramientas de Incidencias
-
list-issues: Listar incidencias con filtrado opcional
- Parámetros:
project_id,status_id,assigned_to_id,limit,offset
- Parámetros:
-
create-issue: Crear una nueva incidencia
- Requeridos:
project_id,subject - Opcionales:
description,tracker_id,status_id,priority_id,assigned_to_id
- Requeridos:
-
get-issue: Obtener detalles de una incidencia específica
- Requerido:
id
- Requerido:
-
update-issue: Actualizar una incidencia existente
- Requerido:
id - Opcionales:
subject,description,status_id,priority_id,assigned_to_id,done_ratio
- Requerido:
Herramientas de Proyectos
-
list-projects: Listar todos los proyectos
-
get-project: Obtener detalles de un proyecto específico
- Requerido:
id(puede ser un ID numérico o un identificador de cadena)
- Requerido:
Herramientas de Usuarios
-
list-users: Listar todos los usuarios
-
get-user: Obtener detalles de un usuario específico
- Requerido:
id
- Requerido:
Desarrollo
Ejecutar Pruebas
npm test
Ejecutar Pruebas con Cobertura
npm run test:coverage
Ejecutar en Modo de Observación
npm run test:watch
Linting
npm run lint
Verificación de Tipos
npm run typecheck
Limpiar Directorio de Compilación
npm run clean
Referencia de la API
RedmineClient
El cliente principal para interactuar con la API REST de Redmine.
const client = new RedmineClient({
baseUrl: 'https://redmine.example.com',
apiKey: 'your-api-key'
});
RedmineMcpServer
El servidor MCP que expone la funcionalidad de Redmine como herramientas MCP.
const server = new RedmineMcpServer({
baseUrl: 'https://redmine.example.com',
apiKey: 'your-api-key'
});
await server.start();
Manejo de Errores
El servidor proporciona un manejo integral de errores para escenarios comunes:
- Errores de autenticación (401): Clave de API inválida
- Errores de autorización (403): Permisos insuficientes
- Errores de no encontrado (404): El recurso no existe
- Errores de validación (422): Datos proporcionados inválidos
- Errores del servidor (500): Problemas internos del servidor
- Errores de red: Tiempos de espera de conexión y problemas de red
- Validación de entrada: Validación del lado del cliente con mensajes de error detallados
Registro de Actividades
El servidor incluye registro estructurado con niveles configurables:
- DEBUG: Información detallada de ejecución y datos de solicitud/respuesta
- INFO: Información operativa general (predeterminado)
- WARN: Condiciones de advertencia que no afectan la operación
- ERROR: Condiciones de error que requieren atención
Configure el nivel de registro usando la variable de entorno LOG_LEVEL:
export LOG_LEVEL="debug" # For development
export LOG_LEVEL="info" # For production (default)
export LOG_LEVEL="error" # For minimal logging
Contribuciones
- Haga un fork del repositorio
- Cree una rama de características
- Realice sus cambios
- Agregue pruebas para la nueva funcionalidad
- Ejecute el conjunto de pruebas
- Envíe una solicitud de extracción
Licencia
Licencia MIT