Atlassian-mcp-server
Servidor MCP para Atlassian Cloud (Confluence y Jira) con autenticación OAuth 2.0 sin interrupciones.
Documentación
Servidor MCP de Atlassian
Servidor MCP para Atlassian Cloud (Confluence y Jira) con autenticación OAuth 2.0 sin interrupciones. Este servidor permite a los agentes de IA ayudar a los usuarios a documentar trabajo en Confluence, gestionar incidencias de Jira y comprender el contexto del proyecto.
Características
- Flujo OAuth 2.0 sin interrupciones: Autenticación automática basada en navegador con seguridad PKCE
- Arquitectura modular: Clases de cliente especializadas para operaciones de Jira, Confluence y Service Desk
- Carga selectiva de módulos: Configure qué módulos cargar mediante variables de entorno
- Integración con Jira: Buscar, crear y actualizar incidencias; añadir comentarios; gestionar trabajo
- Integración con Confluence: Buscar y leer contenido para comprender el contexto
- Gestión de servicios: Acceder a tickets de soporte y solicitudes
- Gestión automática de tokens: Maneja la renovación de tokens automáticamente
- Permisos mínimos: Sigue el principio de privilegio mínimo con solo los alcances requeridos
Arquitectura
El servidor utiliza una arquitectura modular con clases de cliente especializadas:
- BaseAtlassianClient: Autenticación OAuth 2.0 central y manejo de solicitudes HTTP
- JiraClient: Operaciones específicas de Jira (incidencias, proyectos, comentarios)
- ConfluenceClient: Operaciones específicas de Confluence (páginas, espacios, búsqueda)
- ServiceDeskClient: Operaciones de gestión de servicios (solicitudes, aprobaciones, CMDB de activos)
Cada módulo puede habilitarse/deshabilitarse de forma independiente para un rendimiento y seguridad óptimos.
Casos de uso
Este servidor MCP está diseñado para ayudar a los agentes de IA a asistir a los usuarios con:
- Documentación de trabajo: Ayudar a documentar el progreso del trabajo y las decisiones en Confluence
- Gestión de incidencias: Crear, actualizar y realizar seguimiento de incidencias de Jira basadas en conversaciones
- Comprensión del contexto: Leer páginas de Confluence para entender los antecedentes del proyecto
- Registro de tiempo y actividad: Realizar seguimiento de las actividades de trabajo y el tiempo dedicado a las tareas
- Solicitudes de servicio: Acceder a tickets de gestión de servicios para contexto de soporte
- Coordinación de proyectos: Buscar en Jira y Confluence información del proyecto
Configuración de la aplicación OAuth
1. Crear aplicación OAuth
- Vaya a la Consola de desarrolladores de Atlassian
- Haga clic en Crear → Integración OAuth 2.0
- Ingrese el nombre de su aplicación y acepte los términos
- Establezca la URL de devolución de llamada a:
http://localhost:8080/callback
2. Configurar los alcances requeridos
IMPORTANTE: Debe agregar estos alcances exactos a su aplicación OAuth antes de que el servidor MCP pueda funcionar correctamente.
Alcances de la API de Jira
Navegue a Permisos → API de Jira y agregue:
read:jira-work- Leer incidencias, proyectos y búsquedasread:jira-user- Leer información del usuariowrite:jira-work- Crear y actualizar incidencias
Alcances de la API de Confluence
Navegue a Permisos → API de Confluence y agregue:
read:page:confluence- Leer contenido de páginas (alcance granular para API v2)read:space:confluence- Leer información de espacios (alcance granular para API v2)write:page:confluence- Crear y actualizar páginas (alcance granular para API v2)
Alcances de la API de Gestión de Servicios
Navegue a Permisos → API de Gestión de Servicios de Jira y agregue:
read:servicedesk-request- Leer solicitudes de gestión de servicioswrite:servicedesk-request- Crear y actualizar solicitudes de gestión de serviciosmanage:servicedesk-customer- Gestionar clientes y participantes del service deskread:knowledgebase:jira-service-management- Buscar artículos de la base de conocimientos
Alcances de la API de Identidad de Usuario
Navegue a Permisos → API de identidad de usuario y agregue:
read:me- Información del perfil de usuario
Alcances principales
Estos suelen estar disponibles por defecto:
offline_access- Capacidad de renovación de tokens
3. Instalar la aplicación en su sitio de Atlassian
Después de configurar los alcances, debe instalar la aplicación en su sitio de Atlassian:
- En su aplicación OAuth, vaya a la pestaña Autorización
- Use el generador de URL de autorización para crear una URL de instalación:
- Seleccione sus alcances configurados
- Elija su sitio de Atlassian en el menú desplegable
- Haga clic en Generar URL
- Visite la URL generada en su navegador para instalar la aplicación en su sitio
- Conceda permisos cuando Atlassian se lo solicite
Nota: Este paso es necesario antes de que el servidor MCP pueda acceder a sus datos de Atlassian. La aplicación debe estar instalada y autorizada para su sitio específico.
4. Obtener sus credenciales
Después de instalar la aplicación:
- Vaya a la pestaña Configuración en su aplicación OAuth
- Copie su ID de cliente y Secreto de cliente
- Establezca las variables de entorno (consulte la sección de Configuración a continuación)
5. Resumen de configuración de alcances
Mínimo requerido (12 alcances):
read:jira-work
read:jira-user
write:jira-work
read:page:confluence
read:space:confluence
write:page:confluence
read:servicedesk-request
write:servicedesk-request
manage:servicedesk-customer
read:knowledgebase:jira-service-management
read:me
offline_access
Opcional (agregue solo si es necesario):
write:servicedesk-request # Only if creating service tickets
manage:* scopes # Only for administrative operations
6. Solución de problemas de alcances
Si recibe errores relacionados con alcances:
- "el alcance no coincide": El alcance no está agregado a su aplicación OAuth en la Consola de desarrolladores
- "usuario actual no permitido": El usuario carece de permisos a nivel de producto (contacte a su administrador de Atlassian)
- "No autorizado": Verifique que todos los alcances requeridos estén configurados correctamente
Nota: Después de agregar nuevos alcances a su aplicación OAuth, debe volver a autenticarse usando la herramienta authenticate_atlassian para obtener tokens nuevos con los nuevos permisos.
Instalación
Requisitos previos
- Python 3.8 o superior
- Gestor de paquetes pip3
- Acceso a un sitio de Atlassian Cloud
- Aplicación OAuth configurada (consulte la Configuración de la aplicación OAuth arriba)
Instalar desde PyPI (Recomendado)
pip3 install atlassian-mcp-server
Instalar desde el repositorio de GitHub
# Install directly from GitHub repository
pip3 install git+https://github.com/rorymcmahon/atlassian-mcp-server.git
Instalar desde el código fuente
# Clone the repository
git clone https://github.com/rorymcmahon/atlassian-mcp-server.git
cd atlassian-mcp-server
# Install in development mode
pip3 install -e .
Verificar la instalación
# Check that the command is available
atlassian-mcp-server --help
# Or check the Python module
python -m atlassian_mcp_server --help
Configuración
Establezca las siguientes variables de entorno:
export ATLASSIAN_SITE_URL="https://your-domain.atlassian.net"
export ATLASSIAN_CLIENT_ID="your-oauth-client-id"
export ATLASSIAN_CLIENT_SECRET="your-oauth-client-secret"
Configuración opcional
Selección de módulos: Controle qué módulos se cargan (por defecto: todos los módulos habilitados):
export ATLASSIAN_MODULES="jira,confluence,service_desk" # Enable specific modules
export ATLASSIAN_MODULES="jira,confluence" # Enable only Jira and Confluence
export ATLASSIAN_MODULES="jira" # Enable only Jira
Módulos disponibles:
jira- Gestión de incidencias de Jira y operaciones de proyectosconfluence- Operaciones de páginas y espacios de Confluenceservice_desk- Gestión de servicios y operaciones de CMDB de activos
Nota: Deshabilitar módulos no utilizados reduce el uso de memoria y mejora el tiempo de inicio.
Uso
# Start the MCP server
python -m atlassian_mcp_server
# Or run directly
python src/atlassian_mcp_server/server.py
Configuración del cliente MCP
Nota: Todos los ejemplos de configuración a continuación muestran las variables de entorno requeridas. Opcionalmente, puede agregar "ATLASSIAN_MODULES": "jira,confluence,service_desk" a cualquier sección de env para controlar qué módulos se cargan.
Claude Desktop
Agregue a su archivo de configuración de Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"atlassian": {
"command": "atlassian-mcp-server",
"env": {
"ATLASSIAN_SITE_URL": "https://your-domain.atlassian.net",
"ATLASSIAN_CLIENT_ID": "your-oauth-client-id",
"ATLASSIAN_CLIENT_SECRET": "your-oauth-client-secret"
}
}
}
}
Amazon Q Developer CLI
Cree un archivo de configuración de agente:
Archivo: ~/.aws/amazonq/cli-agents/atlassian.json
{
"$schema": "https://raw.githubusercontent.com/aws/amazon-q-developer-cli/refs/heads/main/schemas/agent-v1.json",
"name": "atlassian",
"description": "Atlassian Jira and Confluence integration agent",
"prompt": "You are an AI assistant with access to Atlassian Jira and Confluence. Help users manage issues, search content, and document their work.",
"mcpServers": {
"atlassian-mcp-server": {
"command": "atlassian-mcp-server",
"args": [],
"env": {
"ATLASSIAN_SITE_URL": "https://your-domain.atlassian.net",
"ATLASSIAN_CLIENT_ID": "your-oauth-client-id",
"ATLASSIAN_CLIENT_SECRET": "your-oauth-client-secret"
},
"autoApprove": ["*"],
"disabled": false,
"timeout": 60000,
"initTimeout": 120000
}
},
"tools": [
"@atlassian-mcp-server/*"
],
"allowedTools": [
"@atlassian-mcp-server/*"
]
}
Luego use: q chat --agent atlassian
VS Code con Continue
Agregue a su configuración de Continue:
Archivo: ~/.continue/config.json
{
"models": [...],
"mcpServers": {
"atlassian": {
"command": "atlassian-mcp-server",
"env": {
"ATLASSIAN_SITE_URL": "https://your-domain.atlassian.net",
"ATLASSIAN_CLIENT_ID": "your-oauth-client-id",
"ATLASSIAN_CLIENT_SECRET": "your-oauth-client-secret"
}
}
}
}
VS Code con GitHub Copilot Chat
Para GitHub Copilot Chat con soporte MCP, agregue a la configuración del espacio de trabajo:
Archivo: .vscode/settings.json
{
"github.copilot.chat.mcp.servers": {
"atlassian": {
"command": "atlassian-mcp-server",
"env": {
"ATLASSIAN_SITE_URL": "https://your-domain.atlassian.net",
"ATLASSIAN_CLIENT_ID": "your-oauth-client-id",
"ATLASSIAN_CLIENT_SECRET": "your-oauth-client-secret"
}
}
}
}
Cline (Extensión de VS Code)
Agregue a la configuración MCP de Cline:
Archivo: ~/.cline/mcp_servers.json
{
"atlassian": {
"command": "atlassian-mcp-server",
"env": {
"ATLASSIAN_SITE_URL": "https://your-domain.atlassian.net",
"ATLASSIAN_CLIENT_ID": "your-oauth-client-id",
"ATLASSIAN_CLIENT_SECRET": "your-oauth-client-secret"
}
}
}
Configuración de variables de entorno
Por seguridad, establezca variables de entorno en lugar de codificarlas en los archivos de configuración:
# Add to your shell profile (.bashrc, .zshrc, etc.)
export ATLASSIAN_SITE_URL="https://your-domain.atlassian.net"
export ATLASSIAN_CLIENT_ID="your-oauth-client-id"
export ATLASSIAN_CLIENT_SECRET="your-oauth-client-secret"
Luego use en las configuraciones:
{
"env": {
"ATLASSIAN_SITE_URL": "${ATLASSIAN_SITE_URL}",
"ATLASSIAN_CLIENT_ID": "${ATLASSIAN_CLIENT_ID}",
"ATLASSIAN_CLIENT_SECRET": "${ATLASSIAN_CLIENT_SECRET}"
}
}
Flujo de autenticación
- Inicie el servidor MCP
- Use la herramienta
authenticate_atlassianpara comenzar el flujo OAuth - El navegador se abre automáticamente al inicio de sesión de Atlassian
- Después de la autorización, la autenticación se completa automáticamente
- Las credenciales se guardan localmente para uso futuro
Herramientas disponibles
Autenticación
authenticate_atlassian()- Iniciar flujo de autenticación OAuth sin interrupciones
Operaciones de Jira
jira_search(jql, max_results=50)- Buscar incidencias con JQLjira_get_issue(issue_key)- Obtener detalles de incidencia específicajira_create_issue(project_key, summary, description, issue_type="Task")- Crear nueva incidenciajira_update_issue(issue_key, summary=None, description=None)- Actualizar incidencia existentejira_add_comment(issue_key, comment)- Agregar comentario a una incidencia
Operaciones de Confluence
Gestión de contenido principal
confluence_search(query, limit=10)- Buscar contenido de Confluenceconfluence_get_page(page_id)- Obtener contenido de página específicaconfluence_create_page(space_key, title, content, parent_id=None)- Crear nueva página de Confluenceconfluence_update_page(page_id, title, content, version)- Actualizar página de Confluence existente
Gestión de espacios
confluence_list_spaces(limit=25, space_type=None, status="current")- Listar espacios disponiblesconfluence_get_space(space_id, include_icon=False)- Obtener información detallada del espacioconfluence_get_space_pages(space_id, limit=25, status="current")- Obtener páginas en un espacio
Búsqueda y descubrimiento mejorados
confluence_search_content(query, limit=25, space_id=None)- Búsqueda avanzada de contenidoconfluence_get_page_children(page_id, limit=25)- Obtener páginas hijas
Comentarios y colaboración
confluence_get_page_comments(page_id, limit=25)- Obtener comentarios de páginaconfluence_add_comment(page_id, comment, parent_comment_id=None)- Agregar comentario a una páginaconfluence_get_comment(comment_id)- Obtener detalles de comentario específico
Etiquetas y organización
confluence_get_page_labels(page_id, limit=25)- Obtener etiquetas de una páginaconfluence_search_by_label(label_id, limit=25)- Encontrar páginas con etiqueta específicaconfluence_list_labels(limit=25, prefix=None)- Listar todas las etiquetas disponibles
Archivos adjuntos
confluence_get_page_attachments(page_id, limit=25)- Obtener archivos adjuntos de páginaconfluence_get_attachment(attachment_id)- Obtener detalles de archivo adjunto
Historial de versiones
confluence_get_page_versions(page_id, limit=25)- Obtener historial de versiones de páginaconfluence_get_page_version(page_id, version_number)- Obtener versión específica de página
Operaciones de gestión de servicios
Herramientas de descubrimiento (esenciales para agentes de IA)
servicedesk_check_availability()- Verificar si Jira Service Management está configuradoservicedesk_list_service_desks(limit=50)- Listar service desks disponibles para crear solicitudesservicedesk_get_service_desk(service_desk_id)- Obtener información detallada del service deskservicedesk_list_request_types(service_desk_id=None, limit=50)- Listar tipos de solicitud disponiblesservicedesk_get_request_type(service_desk_id, request_type_id)- Obtener información detallada del tipo de solicitudservicedesk_get_request_type_fields(service_desk_id, request_type_id)- Obtener campos obligatorios/opcionales para el tipo de solicitud
Gestión de solicitudes
servicedesk_get_requests(service_desk_id=None, limit=50)- Obtener solicitudes del service deskservicedesk_get_request(issue_key)- Obtener detalles de solicitud específica del service deskservicedesk_create_request(service_desk_id, request_type_id, summary, description)- Crear nueva solicitud de servicioservicedesk_add_comment(issue_key, comment, public=True)- Agregar comentario a una solicitud de servicioservicedesk_get_request_comments(issue_key, limit=50)- Obtener comentarios de una solicitud de servicioservicedesk_get_request_status(issue_key)- Obtener estado de la solicitud de servicioservicedesk_get_request_transitions(issue_key)- Obtener transiciones de estado disponibles para la solicitudservicedesk_transition_request(issue_key, transition_id, comment=None)- Transicionar solicitud a un nuevo estado
Gestión de aprobaciones y participantes
servicedesk_get_approvals(issue_key)- Obtener información de aprobación para la solicitudservicedesk_approve_request(issue_key, approval_id, decision)- Aprobar o rechazar aprobación de solicitudservicedesk_get_participants(issue_key)- Obtener participantes de la solicitudservicedesk_add_participants(issue_key, usernames)- Agregar participantes a la solicitud (con mensajes de confirmación)servicedesk_manage_notifications(issue_key, subscribe)- Suscribirse/cancelar suscripción a notificaciones de solicitud
Solución de problemas
Problemas de autenticación
- Asegúrese de que la URI de redirección coincida exactamente:
http://localhost:8080/callback - Verifique que todos los alcances requeridos estén configurados en la Consola de desarrolladores de Atlassian
- Verifique que las variables de entorno estén configuradas correctamente
Problemas de permisos
- Asegúrese de que su usuario tenga acceso apropiado a Jira y Confluence
- Verifique que la aplicación OAuth tenga todos los alcances requeridos habilitados
- Verifique que el usuario esté en los grupos correctos (por ejemplo, confluence-users)
Errores de API
- Verifique que la URL de su sitio de Atlassian sea correcta
- Asegúrese de tener permisos adecuados para los recursos a los que accede
- Ejecute los scripts de prueba para verificar la funcionalidad
Requisitos de alcances
Este servidor MCP utiliza alcances mínimos requeridos siguiendo el principio de privilegio mínimo:
Alcances esenciales (16 en total)
- Jira:
read:jira-work,read:jira-user,write:jira-work - Confluence:
read:page:confluence,read:space:confluence,write:page:confluence,read:comment:confluence,write:comment:confluence,read:label:confluence,read:attachment:confluence - Gestión de servicios:
read:servicedesk-request,write:servicedesk-request,manage:servicedesk-customer,read:knowledgebase:jira-service-management - Principal:
read:me,offline_access
Alcances opcionales (agregue solo si es necesario)
- Alcances de
manage:*- Solo para operaciones administrativas
Importante: Alcances granulares para API v2
Este servidor MCP utiliza alcances granulares para operaciones de Confluence para garantizar la compatibilidad con los endpoints de la API v2 de Confluence. La API v2 proporciona mejor rendimiento y preparación para el futuro en comparación con la API REST v1 obsoleta.
Alcances granulares vs clásicos:
- Granular (recomendado):
read:page:confluence,write:page:confluence- Funciona con API v2 - Clásico (obsoleto):
read:confluence-content.all,write:confluence-content- Solo funciona con API v1
Si configuró previamente alcances clásicos, deberá actualizar su aplicación OAuth para usar alcances granulares y volver a autenticarse para obtener tokens nuevos.
Seguridad de la cadena de suministro
Este proyecto implementa medidas integrales de seguridad en la cadena de suministro:
Gestión de Dependencias
- Versiones Fijadas: Todas las dependencias utilizan versiones exactas fijadas para evitar actualizaciones inesperadas
- Escaneo de Seguridad: Escaneo automatizado de vulnerabilidades con Safety y pip-audit
- Seguimiento de Dependencias: Documentación completa de dependencias en
docs/DEPENDENCIES.md - Actualizaciones Regulares: Verificaciones de seguridad automatizadas semanales mediante GitHub Actions
Herramientas de Seguridad
# Generate dependency report
python3 scripts/generate_dependency_report.py
# Check for vulnerabilities
pip3 install safety pip-audit
safety check
pip-audit
# Update dependencies safely
python3 scripts/update_dependencies.py
Archivos
requirements.txt- Dependencias de producción fijadasdocs/DEPENDENCIES.md- Informe de dependencias legible para humanosdocs/dependency-report.json- Datos de dependencias legibles por máquinaSECURITY.md- Política de seguridad y respuesta a vulnerabilidades.github/workflows/dependency-security.yml- Verificaciones de seguridad automatizadas
Desarrollo
El servidor está construido utilizando:
- FastMCP: Marco moderno de servidor MCP
- httpx: Cliente HTTP asíncrono
- Pydantic: Validación de datos y gestión de configuraciones
Licencia
Licencia MIT - consulte el archivo LICENSE para más detalles.