ybreff/jira-mcp-server
If you are the rightful owner of jira-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server for Jira integration that facilitates interaction with Jira's API through structured tools.
Jira MCP Server
Un servidor MCP (Model Context Protocol) para integración con Jira que permite interactuar con la API de Jira a través de herramientas estructuradas.
📋 Descripción
Este proyecto implementa un servidor MCP que actúa como intermediario entre aplicaciones compatibles con MCP y la API REST de Jira. Permite realizar operaciones comunes de Jira como crear, actualizar, buscar issues y gestionar proyectos de manera programática.
🚀 Características
- ✅ Gestión completa de issues: Crear, leer, actualizar y buscar issues
- ✅ Búsqueda avanzada: Soporte completo para JQL (Jira Query Language)
- ✅ Gestión de comentarios: Agregar comentarios a issues existentes
- ✅ Información de proyectos: Obtener detalles completos de proyectos
- ✅ Transiciones de estado: Consultar y ejecutar transiciones de workflow
- ✅ TypeScript: Completamente tipado para mejor desarrollo
- ✅ Manejo de errores: Logging detallado y manejo robusto de errores
- ✅ Autenticación segura: Soporte para API tokens de Jira
🛠️ Tecnologías
- Node.js >= 18.0.0
- TypeScript 5.3+
- Axios para llamadas HTTP
- @modelcontextprotocol/sdk para el protocolo MCP
📦 Instalación
1. Clonar el repositorio
git clone <url-del-repositorio>
cd jira-mcp-server
2. Instalar dependencias
npm install
3. Configurar variables de entorno
Crear un archivo .env en la raíz del proyecto:
JIRA_BASE_URL=https://tu-dominio.atlassian.net
JIRA_USERNAME=tu-email@ejemplo.com
JIRA_API_TOKEN=tu-api-token-de-jira
Generar token de API en Jira:
-
Ve a tu perfil de Atlassian
- Accede a Atlassian Account Settings
- O navega desde tu instancia de Jira: Avatar → Manage account
-
Security → API tokens
- En el menú lateral, selecciona "Security"
- Haz clic en "API tokens"
-
Crea un nuevo token
- Clic en "Create API token"
- Asigna un nombre descriptivo (ej: "jira-mcp-server")
- Clic en "Create"
-
Guárdalo en las variables de entorno
- Copia el token generado inmediatamente (no podrás verlo nuevamente)
- Pégalo en tu archivo
.envcomo valor deJIRA_API_TOKEN
⚠️ Importante: El token solo se muestra una vez. Si lo pierdes, deberás generar uno nuevo.
4. Compilar el proyecto
npm run build
5. Ejecutar el servidor
npm start
🔧 Scripts disponibles
npm run build # Compilar TypeScript a JavaScript
npm run start # Ejecutar el servidor compilado
npm run dev # Modo desarrollo con watch
npm run clean # Limpiar archivos compilados
npm run type-check # Verificar tipos sin compilar
npx -y @modelcontextprotocol/inspector npx -y tsx src/index.ts # Abre un inspector en el navegador para probar el mcp-server
🛠️ Herramientas disponibles
El servidor MCP expone las siguientes herramientas:
1. get_issue
Obtiene información completa de un issue específico.
Parámetros:
issueKey(string, requerido): Clave del issue (ej: "PROJ-123")
Ejemplo de uso:
{
"name": "get_issue",
"arguments": {
"issueKey": "PROJ-123"
}
}
2. create_issue
Crea un nuevo issue en Jira.
Parámetros:
projectKey(string, requerido): Clave del proyectosummary(string, requerido): Resumen del issueissueType(string, requerido): Tipo de issue (Bug, Story, Task, Epic, etc.)description(string, opcional): Descripción detalladapriority(string, opcional): Prioridad (Highest, High, Medium, Low, Lowest)assignee(string, opcional): Usuario asignado (username o email)labels(array, opcional): Etiquetas del issueduedate(string, opcional): Fecha de vencimiento (YYYY-MM-DD)
Ejemplo de uso:
{
"name": "create_issue",
"arguments": {
"projectKey": "PROJ",
"summary": "Nuevo bug encontrado",
"issueType": "Bug",
"description": "Descripción detallada del bug",
"priority": "High",
"assignee": "usuario@ejemplo.com"
}
}
3. update_issue
Actualiza un issue existente.
Parámetros:
issueKey(string, requerido): Clave del issue a actualizarsummary(string, opcional): Nuevo resumendescription(string, opcional): Nueva descripciónstatus(string, opcional): Nuevo estado (usar nombre del estado)assignee(string, opcional): Nuevo asignadopriority(string, opcional): Nueva prioridadlabels(array, opcional): Nuevas etiquetasduedate(string, opcional): Nueva fecha de vencimiento
4. search_issues
Busca issues usando JQL (Jira Query Language).
Parámetros:
jql(string, requerido): Query JQL para buscar issuesmaxResults(number, opcional): Número máximo de resultados (default: 50)startAt(number, opcional): Índice del primer resultado (default: 0)
Ejemplo de uso:
{
"name": "search_issues",
"arguments": {
"jql": "project = PROJ AND status = 'In Progress'",
"maxResults": 25
}
}
5. add_comment
Agrega un comentario a un issue.
Parámetros:
issueKey(string, requerido): Clave del issuecomment(string, requerido): Texto del comentario
6. get_project_info
Obtiene información completa de un proyecto.
Parámetros:
projectKey(string, requerido): Clave del proyecto
7. get_transitions
Obtiene las transiciones disponibles para un issue.
Parámetros:
issueKey(string, requerido): Clave del issue
📁 Estructura del proyecto
jira-mcp-server/
├── src/
│ ├── config/
│ │ └── jira.ts # Configuración de conexión Jira
│ ├── server/
│ │ └── mcp-server.ts # Implementación del servidor MCP
│ ├── services/
│ │ └── jira-api.ts # Servicio de API de Jira
│ ├── types/
│ │ ├── args.ts # Tipos de argumentos
│ │ └── jira.ts # Tipos de datos de Jira
│ └── index.ts # Punto de entrada
├── build/ # Archivos compilados
├── package.json
├── tsconfig.json
└── README.md
🔍 Ejemplos de uso con JQL
Buscar issues por proyecto y estado
project = MYPROJECT AND status = "In Progress"
Buscar bugs de alta prioridad
project = MYPROJECT AND issuetype = Bug AND priority = High
Buscar issues asignados a un usuario
assignee = "usuario@ejemplo.com" AND status != Done
Buscar issues creados en los últimos 7 días
project = MYPROJECT AND created >= -7d
🐛 Solución de problemas
Error de autenticación
- Verifica que las variables de entorno estén configuradas correctamente
- Asegúrate de que el API token sea válido y no haya expirado
- Confirma que el usuario tenga permisos en el proyecto de Jira
Error de conexión
- Verifica que la URL base de Jira sea correcta
- Asegúrate de que el servidor Jira esté accesible
- Revisa la conectividad de red
Issues con JQL
- Valida la sintaxis JQL en la interfaz web de Jira
- Verifica que los nombres de campos y valores sean correctos
- Consulta la documentación oficial de JQL
📄 Licencia
MIT License - ver el archivo para detalles.
👨💻 Autor
Yasmany Breffpacheco
🤝 Contribuciones
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/nueva-caracteristica) - Commit tus cambios (
git commit -am 'Agregar nueva característica') - Push a la rama (
git push origin feature/nueva-caracteristica) - Abre un Pull Request
📚 Referencias
Configurar la IA para usar el servidor MCP
En el archivo de configuración de tu cliente MCP (como Claude Desktop):
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["path/to/your/jira-mcp-server/build/index.js"],
"env": {
"JIRA_BASE_URL": "https://tu-dominio.atlassian.net",
"JIRA_USERNAME": "tu-email@dominio.com",
"JIRA_API_TOKEN": "tu-token-de-api"
}
}
}
}
Funcionalidades disponibles
get_issue: Obtener información de un issue específico
create_issue: Crear nuevos issues
update_issue: Actualizar issues existentes
search_issues: Buscar issues con JQL
add_comment: Agregar comentarios
get_project_info: Información del proyecto
Ejemplos de uso
Una vez configurado, tu IA podrá:
"Muéstrame el issue PROJ-123"
"Crea un nuevo bug en el proyecto TEST con el resumen 'Error en login'"
"Busca todos los issues asignados a juan.perez"
"Agrega un comentario al issue PROJ-456 diciendo que está en revisión"