Servidor MCP de Atlassian Confluence

Un servidor Model Context Protocol (MCP) de código abierto para Atlassian Confluence que permite a asistentes de IA como Claude y Windsurf leer, crear, buscar y gestionar páginas wiki de Confluence. Funciona con Confluence Cloud, Server local y despliegues de Data Center — conecta tu agente de IA de codificación a la base de conocimiento de tu equipo en segundos a través de npx.
¿Por qué atlassian-confluence-mcp-server?
- ✅ Único servidor MCP que soporta Cloud + Server + Data Center en un solo paquete
- ✅ 47 herramientas — el MCP de Confluence más completo disponible
- ✅ Configuración cero a través de
npx — no requiere instalación
- ✅ Soporte para PAT, Autenticación Básica y tokens de API
- ✅ Mantenido activamente con versiones firmadas con procedencia
¿Por qué usar esto en lugar del servidor MCP oficial de Atlassian?
| Característica | Este paquete | Atlassian Oficial |
|---|
| Confluence Cloud | ✅ | ✅ |
| Server local | ✅ | ❌ |
| Data Center | ✅ | ❌ |
| Configuración cero vía npx | ✅ | ❌ |
| 47 herramientas | ✅ | ~15 herramientas |
| Gestión de espacios (crear/eliminar) | ✅ | ❌ |
| Copiar/mover páginas | ✅ | ❌ |
| Observadores | ✅ | ❌ |
| Permisos/restricciones | ✅ | ❌ |
| Extracción de tareas | ✅ | ❌ |
| Exportación (PDF/Word) | ✅ | ❌ |
| Código abierto | ✅ MIT | ✅ |
| Funciona sin conexión/intranet | ✅ | ❌ |
Características
- Gestión de Espacios — Crear, eliminar, listar e inspeccionar espacios
- CRUD de Páginas — Crear, leer, actualizar, eliminar, copiar y mover páginas
- Búsqueda — Búsqueda completa por CQL y texto, páginas modificadas recientemente
- Etiquetas — Añadir, listar y eliminar etiquetas de páginas
- Comentarios — Leer y publicar comentarios en páginas
- Adjuntos — Listar y subir adjuntos de páginas y comentarios
- Jerarquía de Páginas — Navegar relaciones padre/hijo
- Historial de Versiones — Explorar e inspeccionar versiones de páginas
- Observadores — Ver y gestionar observadores de páginas
- Permisos — Obtener y establecer restricciones de páginas
- Tareas — Extraer tareas en línea de las páginas
- Exportación — Generar URLs de exportación PDF/Word
- Espacio Personal — Crear páginas en tu espacio personal
- Análisis de URLs — Recuperar contenido de páginas desde una URL de Confluence
Requisitos previos
- Node.js 22.12+
- Una instancia de Confluence (Cloud o Server/Data Center 7.9+)
- Credenciales de autenticación (PAT o nombre de usuario/contraseña)
Instalación
Vía npx (sin necesidad de instalación)
npx atlassian-confluence-mcp-server
Instalación global
npm install -g atlassian-confluence-mcp-server
Desde el código fuente
git clone https://github.com/anuragagrawal0430/atlassian-confluence-mcp-server.git
cd atlassian-confluence-mcp-server
npm install
npm run build
Configuración
Toda la configuración se pasa a través de variables de entorno. Nunca codifiques credenciales.
| Variable | Requerida | Descripción |
|---|
CONFLUENCE_BASE_URL | Sí | URL raíz de tu instancia de Confluence |
PAT | Ver abajo | Token de API (Cloud) o Token de Acceso Personal (Server/DC) |
CONFLUENCE_USERNAME | Solo Cloud | El correo de tu cuenta de Atlassian |
CONFLUENCE_PASSWORD | Autenticación alternativa | Contraseña o token de API para Autenticación Básica |
CONFLUENCE_READ_ONLY | No | Por defecto es true; establece false para permitir herramientas de mutación |
CONFLUENCE_ENABLE_DESTRUCTIVE_TOOLS | No | Por defecto es false; establece true para permitir herramientas de eliminación/mutación de permisos |
CONFLUENCE_ENABLED_TOOLS | No | Lista opcional separada por comas de nombres de herramientas a exponer |
CONFLUENCE_ALLOWED_SPACES | No | Lista opcional separada por comas de claves de espacio para solicitudes con spaceKey/destinationSpaceKey |
CONFLUENCE_ALLOW_INSECURE_HTTP | No | Por defecto es false; solo permite http:// para localhost/loopback cuando se establece true |
CONFLUENCE_MAX_ATTACHMENT_BYTES | No | Tamaño máximo de archivo del lado del cliente para confluence_upload_attachment en bytes (por defecto: 52428800 / 50 MB). Confluence puede imponer un límite de instancia menor. |
CONFLUENCE_UPLOAD_ALLOWED_DIRS | No | Seguridad: Lista separada por comas de rutas de directorio absolutas desde las cuales se permiten cargas de archivos. Vacía por defecto (cargas deshabilitadas). |
Confluence Cloud
Los tokens de API de Cloud se generan desde tu cuenta de Atlassian y requieren tanto tu correo como el token:
CONFLUENCE_BASE_URL=https://your-site.atlassian.net
CONFLUENCE_USERNAME=you@example.com
PAT=your-api-token
- Ve a https://id.atlassian.com/manage-profile/security/api-tokens
- Haz clic en Crear token de API, asígnale una etiqueta y copia el valor
- Establece
CONFLUENCE_USERNAME con el correo de tu cuenta de Atlassian
- Establece
PAT con el token de API copiado
Confluence Server / Data Center (7.9+)
Las instancias de Server y Data Center usan un Token de Acceso Personal con autenticación Bearer. Solo se necesita el token:
CONFLUENCE_BASE_URL=https://confluence.example.com
PAT=your-personal-access-token
- Navega a Perfil > Configuración > Tokens de Acceso Personal
- Crea un token con los permisos requeridos
- Copia el valor del token
Autenticación Básica (alternativa)
Para versiones de Server más antiguas sin soporte de PAT, usa nombre de usuario/contraseña:
CONFLUENCE_BASE_URL=https://confluence.example.com
CONFLUENCE_USERNAME=your-username
CONFLUENCE_PASSWORD=your-password
Controles de Seguridad (importante)
El servidor ahora usa valores predeterminados seguros para reducir el radio de explosión de inyección de prompts y el riesgo de fuga de credenciales:
CONFLUENCE_READ_ONLY=true por defecto
- Las herramientas de mutación están deshabilitadas a menos que establezcas
CONFLUENCE_READ_ONLY=false.
CONFLUENCE_ENABLE_DESTRUCTIVE_TOOLS=false por defecto
confluence_delete_page, confluence_delete_space y confluence_set_page_permissions permanecen deshabilitadas a menos que se habiliten explícitamente.
CONFLUENCE_ENABLED_TOOLS (opcional)
- Restringe la exposición a una lista de herramientas explícita.
CONFLUENCE_ALLOWED_SPACES (opcional)
- Restringe solicitudes que incluyan
spaceKey / destinationSpaceKey a un conjunto aprobado.
CONFLUENCE_ALLOW_INSECURE_HTTP=false por defecto
- Se requiere HTTPS a menos que esto se establezca en
true.
- Incluso cuando está habilitado, HTTP inseguro se restringe solo a localhost/loopback.
CONFLUENCE_MAX_ATTACHMENT_BYTES (opcional, por defecto 50 MB)
- Limita el tamaño de un archivo host que
confluence_upload_attachment leerá antes de llamar a Confluence.
- Independiente de la configuración administrativa de "Tamaño Máximo de Adjuntos" de la instancia (no expuesta a través de REST público).
CONFLUENCE_UPLOAD_ALLOWED_DIRS (opcional, por defecto vacío)
- Restringe explícitamente qué directorios host puede leer el servidor MCP al subir adjuntos.
- Si no se configura, las cargas de archivos desde el sistema de archivos host están completamente deshabilitadas.
Ejemplo (habilitar escrituras seguras, mantener herramientas destructivas deshabilitadas):
CONFLUENCE_READ_ONLY=false
CONFLUENCE_ENABLE_DESTRUCTIVE_TOOLS=false
Ejemplo (lista de permitidos estricta):
CONFLUENCE_ENABLED_TOOLS=confluence_get_page,confluence_search_pages,confluence_get_page_body_chunk
Ejemplo (lista de permitidos a nivel de espacio):
CONFLUENCE_ALLOWED_SPACES=ENG,SECURITY
Configuración del Cliente MCP
Cloud (npx)
{
"mcpServers": {
"confluence": {
"command": "npx",
"args": ["-y", "atlassian-confluence-mcp-server"],
"env": {
"CONFLUENCE_BASE_URL": "https://your-site.atlassian.net",
"CONFLUENCE_USERNAME": "you@example.com",
"PAT": "your-api-token"
}
}
}
}
Server / Data Center (npx)
{
"mcpServers": {
"confluence": {
"command": "npx",
"args": ["-y", "atlassian-confluence-mcp-server"],
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.example.com",
"PAT": "your-personal-access-token"
}
}
}
}
Instalación global
{
"mcpServers": {
"confluence": {
"command": "atlassian-confluence-mcp-server",
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.example.com",
"PAT": "your-personal-access-token"
}
}
}
}
Desde el código fuente
{
"mcpServers": {
"confluence": {
"command": "node",
"args": ["./dist/index.js"],
"env": {
"CONFLUENCE_BASE_URL": "https://confluence.example.com",
"PAT": "your-personal-access-token"
}
}
}
}
Herramientas Disponibles (47)
Nota: la exposición de herramientas depende de la configuración de seguridad. Con el CONFLUENCE_READ_ONLY=true predeterminado, las herramientas de mutación están intencionalmente ocultas/bloqueadas.
Conexión
| Herramienta | Descripción |
|---|
confluence_test_connection | Probar conexión con la API de Confluence |
Espacios
| Herramienta | Descripción |
|---|
confluence_get_spaces | Listar todos los espacios |
confluence_get_space | Obtener detalles del espacio por clave |
confluence_get_space_by_key | Alias para get_space |
confluence_create_space | Crear un nuevo espacio |
confluence_delete_space | Eliminar un espacio y todo su contenido |
confluence_get_space_homepage | Obtener la página de inicio de un espacio |
Páginas
| Herramienta | Descripción |
|---|
confluence_get_pages | Listar páginas, opcionalmente filtradas por espacio |
confluence_get_page | Obtener página por ID |
confluence_get_page_by_title | Obtener página por título dentro de un espacio |
confluence_create_page | Crear una nueva página |
confluence_update_page | Actualizar una página existente |
confluence_patch_page | Parche de buscar/reemplazar exacto del lado del servidor para páginas grandes |
confluence_replace_page_range | Reemplazar rango medio usando desplazamientos o números de línea |
confluence_append_to_page | Añadir o anteponer contenido del lado del servidor |
confluence_get_page_body_chunk | Leer cuerpo de página grande en fragmentos de desplazamiento/longitud |
confluence_delete_page | Eliminar una página |
confluence_copy_page | Copiar una página, opcionalmente a un espacio diferente |
confluence_move_page | Mover una página a un padre o espacio diferente |
Búsqueda
| Herramienta | Descripción |
|---|
confluence_search | Buscar usando CQL |
confluence_search_pages | Buscar páginas por texto |
confluence_get_recently_modified | Obtener páginas modificadas recientemente |
Etiquetas
| Herramienta | Descripción |
|---|
confluence_get_page_labels | Obtener etiquetas en una página |
confluence_add_page_label | Añadir una etiqueta a una página |
confluence_delete_page_label | Eliminar una etiqueta de una página |
Comentarios
| Herramienta | Descripción |
|---|
confluence_get_page_comments | Obtener comentarios en una página |
confluence_add_page_comment | Añadir un comentario a una página |
Adjuntos
| Herramienta | Descripción |
|---|
confluence_get_page_attachments | Listar adjuntos en una página |
confluence_get_comment_attachments | Listar adjuntos en un comentario |
confluence_upload_attachment | Subir/actualizar un archivo local como adjunto de página o comentario |
Jerarquía de Páginas
| Herramienta | Descripción |
|---|
confluence_get_child_pages | Obtener páginas hijas de un padre |
confluence_get_page_ancestors | Obtener páginas ancestro |
Historial de Versiones
| Herramienta | Descripción |
|---|
confluence_get_page_versions | Obtener historial de versiones de página |
confluence_get_page_version | Obtener una versión específica de página |
Propiedades
| Herramienta | Descripción |
|---|
confluence_get_page_properties | Obtener propiedades de contenido de una página |
Usuario
| Herramienta | Descripción |
|---|
confluence_get_current_user | Obtener usuario autenticado actual |
Observadores
| Herramienta | Descripción |
|---|
confluence_get_page_watchers | Obtener usuarios que observan una página |
confluence_watch_page | Añadir usuario actual como observador |
confluence_unwatch_page | Eliminar usuario actual como observador |
Permisos
| Herramienta | Descripción |
|---|
confluence_get_page_permissions | Obtener restricciones/permisos de página |
confluence_set_page_permissions | Establecer restricciones/permisos de página |
Tareas
| Herramienta | Descripción |
|---|
confluence_get_page_tasks | Extraer tareas en línea de una página |
Exportación
| Herramienta | Descripción |
|---|
confluence_export_page | Obtener URL de exportación para una página (PDF o Word) |
Utilidades
| Herramienta | Descripción |
|---|
confluence_get_page_by_url | Obtener página desde una URL de Confluence |
Espacio Personal
| Herramienta | Descripción |
|---|
confluence_get_personal_space_key | Obtener clave de espacio personal del usuario actual |
confluence_create_page_in_personal_space | Crear página en espacio personal |
confluence_create_private_space | Crear un espacio privado |
Recursos
| URI | Descripción |
|---|
confluence://spaces | Lista de todos los espacios de Confluence |
Ejemplos de Consultas CQL
# Pages in a specific space
type=page AND space=TEAM
# Pages with a label
type=page AND label=documentation
# Recently modified pages
type=page AND lastModified > now("-7d")
# Title search
type=page AND title~"Meeting Notes"
# Pages created by current user
type=page AND creator=currentUser()
Formato del Cuerpo de Página
Las páginas usan el formato de almacenamiento de Confluence (XHTML):
<p>This is a paragraph.</p>
<h1>Heading 1</h1>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
<ac:structured-macro ac:name="code">
<ac:parameter ac:name="language">javascript</ac:parameter>
<ac:plain-text-body><![CDATA[console.log("Hello");]]></ac:plain-text-body>
</ac:structured-macro>
Edición de Páginas Muy Grandes
Cuando el cuerpo de una página es muy grande (por ejemplo, cientos de KB), evita enviar el cuerpo completo a través de confluence_update_page.
Flujo de trabajo recomendado:
- Usa
confluence_get_page_body_chunk para inspeccionar la parte relevante de la página.
- Usa uno de:
confluence_patch_page para ediciones exactas de buscar/reemplazar.
confluence_replace_page_range para reemplazar un rango medio específico.
confluence_append_to_page para actualizaciones incrementales de añadir/anteponer.
Notas:
- El reemplazo de rango basado en desplazamiento es el modo más confiable para XHTML de almacenamiento.
- El reemplazo basado en líneas requiere caracteres de nueva línea reales en el cuerpo almacenado.
- Estas herramientas aún realizan una actualización completa de Confluence internamente, pero el cuerpo completo permanece del lado del servidor.
Seguridad
- Credenciales se leen exclusivamente de variables de entorno — nunca codificadas.
- Validación de entrada — todos los parámetros proporcionados por el usuario se validan y sanean antes de su uso.
- Prevención de inyección CQL — la entrada del usuario interpolada en consultas CQL se escapa.
- Codificación de ruta URL — todos los segmentos de ruta dinámicos se codifican con
encodeURIComponent.
- Tiempos de espera de solicitud — todas las solicitudes HTTP tienen un tiempo de espera de 30 segundos para evitar bloqueos.
- Saneamiento de errores — las respuestas de error de API se truncan y se les elimina el HTML antes de mostrarlas.
- Límites de paginación — los límites de consulta se limitan a un máximo seguro (100) para prevenir abusos.
Contribuciones
Consulta CONTRIBUTING.md para las pautas sobre cómo contribuir a este proyecto.
Política de Seguridad
Para políticas de seguridad y reporte de vulnerabilidades, consulta SECURITY.md.
Registro de Cambios
Consulta CHANGELOG.md para un historial de cambios.
Licencia
MIT
Agradecimientos