mcp-redmine
mcp-redmine
Un servidor de Model Context Protocol que conecta Claude (Desktop o Code) — o cualquier otro cliente MCP — a una instancia de Redmine a través de su API REST.
Expone 73 herramientas que cubren, en la práctica, toda la API REST estable de Redmine: incidencias, relaciones, proyectos, membresías, versiones, categorías, usuarios, grupos, roles, wiki, seguimiento de tiempo, adjuntos, archivos de proyecto, noticias y búsqueda. Apunta tu agente a un proyecto de Redmine y deja que lea y gestione incidencias, registre tiempo, edite páginas wiki y administre usuarios, todo mediante conversación natural.
Características
Cobertura completa de lectura/escritura de incidencias, incluyendo actualizaciones masivas, relaciones, observadores y comentarios.
Administración de proyectos: crear/actualizar/archivar proyectos, gestionar miembros, versiones y categorías.
Administración de usuarios y grupos, sin herramientas de "eliminar usuario" o "eliminar proyecto" a propósito — ver Seguridad.
Wiki, incluyendo páginas anidadas y archivos adjuntos.
Seguimiento de tiempo, adjuntos, archivos de proyecto, noticias y búsqueda de texto completo.
Errores legibles: cada fallo devuelve una frase clara extraída de la propia respuesta de validación de Redmine, no un rastro de pila crudo.
Nada que ejecutar: un único proceso de Python que habla stdio con tu cliente MCP — sin base de datos, sin servidor que alojar, sin Docker requerido.
Related MCP server: redmine-mcp
Requisitos previos
Python 3.10+
Una instancia de Redmine con la API REST habilitada:
En Redmine, ve a Administración → Configuración → API y habilita "Habilitar servicio web REST" (si no está ya activado).
Ve a Mi cuenta → Clave de acceso a la API y copia el valor.
Instalación
La distribución se publica como mcp-redmine-rest, y el comando que instala es mcp-redmine-rest. El nombre más corto mcp-redmine en PyPI pertenece a un proyecto no relacionado — no instales ese esperando este servidor.
Si estás apuntando un agente de IA a este repositorio para que haga la configuración por ti, llms-install.md está escrito exactamente para eso.
Con uv (recomendado)
uv tool install mcp-redmine-restCon pip
pip install mcp-redmine-restDesde el código fuente
git clone https://github.com/alsimoes/mcp-redmine-rest.git
cd mcp-redmine-rest
python3 -m venv venv && source venv/bin/activate # Linux/Mac
pip install -e .En Windows, usa py y PowerShell en lugar de un shell de Git Bash/WSL — crear o recrear el venv desde un shell de estilo Unix en Windows sobrescribe venv\pyvenv.cfg con una ruta home de Unix, y cada lanzamiento posterior de venv\Scripts\python.exe falla con No Python at '/usr/bin\python.exe' (o similar):
git clone https://github.com/alsimoes/mcp-redmine-rest.git
cd mcp-redmine-rest
py -3 -m venv venv
.\venv\Scripts\Activate.ps1
pip install -e .Configuración
El servidor lee su configuración de variables de entorno:
Variable | Requerida | Descripción |
| Sí | URL base de tu instancia de Redmine (sin barra final). |
| Sí | Tu clave de acceso a la API, desde Mi cuenta → Clave de acceso a la API. |
| No | Tiempo de espera por solicitud en segundos. Por defecto 15. |
| No | Directorios desde los que las herramientas de subida de archivos pueden leer, separados por |
Mantener la clave fuera de la configuración del cliente
Los valores que faltan en el entorno se leen de un archivo .env, por lo que la clave de API no tiene que estar en texto plano en la configuración de tu cliente MCP. Copia .env.example a .env en la raíz del repositorio y complétalo — cada variable de la tabla anterior se respeta, por lo que el bloque env del cliente se puede eliminar por completo:
REDMINE_URL=https://redmine.example.com
REDMINE_API_KEY=your_api_key_here
REDMINE_TIMEOUT=15El archivo está en gitignore. Las variables ya presentes en el entorno siempre ganan, por lo que un bloque env en la configuración de tu cliente aún lo anula. Para mantener el archivo en otro lugar, establece REDMINE_ENV_FILE a su ruta completa.
Esto importa especialmente en Claude Desktop: lanza servidores MCP con un entorno mínimo que construye él mismo, por lo que las variables que exportas en tu shell o estableces con setx nunca llegan al servidor. Usa el bloque env o un archivo .env.
Claude Desktop
Edita (o crea) el archivo de configuración de Claude Desktop:
Mac:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"redmine": {
"command": "mcp-redmine-rest",
"env": {
"REDMINE_URL": "https://redmine.example.com",
"REDMINE_API_KEY": "your_api_key_here"
}
}
}
}Si instalaste desde el código fuente en lugar de mediante uv tool install / pip install, apunta command al intérprete de tu entorno virtual y pasa el script como argumento:
{
"mcpServers": {
"redmine": {
"command": "/full/path/to/mcp-redmine/venv/bin/python",
"args": ["-m", "mcp_redmine"],
"env": {
"REDMINE_URL": "https://redmine.example.com",
"REDMINE_API_KEY": "your_api_key_here"
}
}
}
}En Windows, apunta command a venv\Scripts\python.exe (con \\ escapado en JSON):
{
"mcpServers": {
"redmine": {
"command": "C:\\full\\path\\to\\mcp-redmine\\venv\\Scripts\\python.exe",
"args": ["-m", "mcp_redmine"],
"env": {
"REDMINE_URL": "https://redmine.example.com",
"REDMINE_API_KEY": "your_api_key_here"
}
}
}
}Reinicia Claude Desktop después. El icono de herramientas (🔨) debería mostrar las herramientas de Redmine como disponibles.
Claude Code
claude mcp add redmine \
--env REDMINE_URL=https://redmine.example.com \
--env REDMINE_API_KEY=your_api_key_here \
-- mcp-redmine-restConfirma con:
claude mcp listCline (VS Code)
Abre la configuración de MCP desde la paleta — Ctrl+Shift+P → Cline: Open MCP Config File — o haz clic en el engranaje junto a "MCP Servers" en la barra lateral de Cline y elige Configure MCP Servers. Cualquiera de los dos abre cline_mcp_settings.json; añade el servidor allí:
{
"mcpServers": {
"redmine": {
"command": "mcp-redmine-rest",
"env": {
"REDMINE_URL": "https://redmine.example.com",
"REDMINE_API_KEY": "your_api_key_here"
}
}
}
}Usa el comando de la paleta en lugar de editar el archivo a mano — vive en lo profundo del almacenamiento global de VS Code (.../User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json), y la ruta difiere según la plataforma.
Si mcp-redmine-rest no está en el PATH que ve VS Code, usa la forma de módulo en su lugar — "command" apuntando al intérprete que tiene el paquete instalado, con "args": ["-m", "mcp_redmine"], exactamente como los ejemplos de Claude Desktop anteriores.
Recarga la ventana (Ctrl+Shift+P → Developer: Reload Window) y el servidor debería aparecer como conectado bajo "MCP Servers". Un tutorial más largo, que cubre el .mcp.json del espacio de trabajo y la interfaz de Añadir Servidor, está en CLINE_SETUP.md.
Otros clientes MCP
Cualquier cliente que pueda lanzar un proceso local y hablar MCP sobre stdio funciona de la misma manera: ejecuta mcp-redmine-rest (o python -m mcp_redmine) con REDMINE_URL y REDMINE_API_KEY establecidas en su entorno.
Ejecutar localmente (opcional)
Útil para una comprobación rápida antes de conectar el servidor a un cliente:
cp .env.example .env # then edit .env with your values
export $(grep -v '^#' .env | xargs) # or use a tool like direnv
mcp-redmine-restSi no hay error de conexión, el servidor está listo — espera mensajes MCP en stdin/stdout, por lo que no ver nada en la terminal es normal. Pulsa Ctrl+C para detenerlo.
Ejemplos de uso
Una vez configurado, solo habla con el agente:
"Lista las incidencias abiertas asignadas a mí en el proyecto Website."
"Crea un error en Website titulado 'El botón de inicio de sesión no responde en móvil', prioridad alta."
"Mueve las incidencias #101, #104 y #110 a En Progreso y asígnalas a Alice."
"Registra 3.5 horas en la incidencia #204 para hoy, actividad Desarrollo."
"¿Qué hay en la página wiki 'Deployment' para el proyecto Infra?"
"Busca 'timeout' en todos los proyectos."
Herramientas disponibles
73 herramientas, agrupadas por recurso. La referencia completa — firmas, parámetros, forma de retorno y las advertencias que importan (como cómo precedes reprograma incidencias, o que list_custom_fields requiere un administrador) — está en docs/TOOLS.md.
Recurso | Herramientas |
Incidencias |
|
Relaciones de incidencias |
|
Proyectos |
|
Miembros del proyecto |
|
Versiones |
|
Categorías |
|
Usuarios |
|
Grupos |
|
Roles |
|
Wiki |
|
Seguimiento de tiempo |
|
Adjuntos |
|
Archivos del proyecto |
|
Noticias |
|
Búsqueda |
|
Metadatos |
|
Cobertura de la API
Recurso de API de Redmine | Estado |
Issues (Incidencias) | Completo (listar, leer, crear, actualizar, eliminar, observadores) |
Relaciones de incidencias | Completo |
Proyectos | Completo menos eliminación |
Miembros del proyecto | Completo |
Versiones | Completo |
Categorías de incidencias | Completo |
Usuarios | Completo menos eliminación |
Grupos | Completo |
Roles | Completo (la API es de solo lectura) |
Wiki | Completo, incluyendo anidamiento y adjuntos |
Adjuntos | Completo |
Archivos del proyecto | Completo |
Noticias | Completo |
Registro de tiempo | Completo |
Búsqueda y consultas guardadas | Completo |
Seguimientos, estados, prioridades, actividades, campos personalizados | Completo (la API es de solo lectura) |
Categorías de documentos | Completo (la API es de solo lectura) |
Las dos omisiones son deliberadas. delete_project y delete_user son
irreversibles y eliminan contenido de otros usuarios junto con ellos: incidencias,
entradas de tiempo, páginas wiki, autoría. archive_project y update_user con
status=3 cubren el caso de uso real de forma reversible. La eliminación definitiva sigue siendo una
operación de la interfaz web, donde la confirmación es explícita y humana. Consulta
SECURITY.md para conocer el razonamiento completo.
Los seguimientos, estados de incidencias, prioridades y roles no tienen operaciones de escritura en la API de Redmine: solo se configuran en Administración. Eso no es una carencia en este servidor.
Fuera de la API REST estable y, por tanto, fuera del alcance de este servidor: repositorios y conjuntos de cambios, protección de páginas wiki y pantallas de configuración de la instancia.
Mensajes de error
Los errores se gestionan de forma centralizada: cuando Redmine rechaza una llamada, el servidor lee
el cuerpo de la respuesta — ahí es donde está la explicación real, en el campo errors —
y devuelve esa frase. Si no hay un cuerpo útil, recurre al
código de estado HTTP con un motivo probable:
Estado | Mensaje |
401 | clave de API no válida o ausente |
403 | no se permite realizar esta operación, o el módulo está deshabilitado para este proyecto |
404 | no encontrado (comprueba el ID, o este endpoint puede no existir en esta versión de Redmine) |
409 | conflicto: el recurso fue modificado por otra persona |
422 | Redmine rechazó los datos durante la validación |
Esto se aplica a cada herramienta, tanto de lectura como de escritura.
Solución de problemas
"REDMINE_URL and REDMINE_API_KEY must be set": el servidor comprueba su configuración al iniciar y sale inmediatamente con este mensaje en lugar de arrancar de forma incorrecta. Revisa el bloque
enven la configuración de tu cliente MCP.Cada llamada falla con un error de red: confirma que el proceso del servidor puede alcanzar realmente
REDMINE_URL— los clientes MCP ejecutan el servidor como un proceso local, por lo que necesita el mismo acceso de red que tu máquina, no el del navegador.Error 401 en cada llamada: la clave de API es incorrecta, o "Habilitar servicio web REST" está desactivado en la configuración de Redmine.
Error 403 en una herramienta específica: normalmente es un permiso que falta en el rol del usuario propietario de la clave de API.
get_rolemuestra exactamente qué permisos tiene un rol.Una herramienta responde 404 cuando esperarías que funcionara: algunos endpoints (
update_journal_note,update_news/delete_news,update_attachment) se añadieron en versiones específicas de Redmine — consulta docs/TOOLS.md para conocer la versión mínima de cada uno.
Seguridad
Consulta SECURITY.md para conocer el modelo completo. En resumen: una clave de API otorga acceso equivalente al del usuario que la posee, así que crea un usuario de Redmine dedicado con un rol limitado a lo que quieres que el agente haga, y utiliza la clave de ese usuario — no intentes limitar al agente editando el código de este servidor.
La subida de archivos está deshabilitada hasta que establezcas REDMINE_UPLOAD_ROOTS. Las
tres herramientas que suben un archivo local (attach_file_to_issue,
attach_file_to_wiki_page, upload_project_file) rechazan cualquier ruta por
defecto, precisamente porque un agente puede ser dirigido mediante contenido inyectado
(un comentario de incidencia, una página wiki) a subir un archivo que nunca debía
leer. Consulta SECURITY.md.
Contribuciones
Consulta CONTRIBUTING.md.
Licencia
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server providing 63 tools to interact with Redmine instances, covering issues, projects, time entries, and wiki pages. It utilizes streamable HTTP transport and supports per-client authentication for secure management of Redmine resources.20
- AlicenseNot gradedqualityAmaintenanceA stateless MCP server for Redmine that allows users to interact with issues, time entries, wiki, projects, and more via their own API keys.4MIT
- AlicenseBqualityDmaintenanceMCP server for Redmine project management, enabling tools for managing projects, issues, users, time entries, groups, memberships, versions, wiki, news, attachments, search, and Agile sprints via the Redmine REST API.8981MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Redmine that enables interaction with issues, wiki pages, and time entries through natural language.ISC
Related MCP Connectors
MCP Server for JFrog, providing tools for development and artifact management.
2,000+ MCP servers read at source level. Know what one does before you connect. Free, no key.
A MCP server built for developers enabling Git based project management with project and personal…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/alsimoes/mcp-redmine-rest'
If you have feedback or need assistance with the MCP directory API, please join our Discord server