GitLab MR & Confluence Linker

Analiza las solicitudes de fusión de GitLab y las vincula con la documentación de Confluence.

Documentación

Translate the Markdown document to Spanish, preserving all placeholders and code exactly. Don't modify any token, code fence, or structure. Output only the translated Markdown and the completion sentinel. Ensure placeholders appear exactly once. The sentinel is MCP_TRANSLATION_DONE on its own line. I'll output now.

GitLab PR Analysis MCP Server

Este proyecto proporciona un servidor MCP (Protocolo de Control de Modelos) que integra el análisis de solicitudes de fusión de GitLab con la documentación de Confluence. Permite obtener detalles de las solicitudes de fusión, analizar los cambios de código y almacenar los resultados en páginas de Confluence.

Características

  • Obtener detalles de solicitudes de fusión desde GitLab
  • Analizar cambios de código en solicitudes de fusión
  • Generar informes detallados que incluyen:
    • Información básica de la solicitud de fusión
    • Estadísticas de cambios de código
    • Análisis de tipos de archivo
    • Cambios detallados de archivos
  • Almacenar resultados de análisis en Confluence
  • Registro completo para depuración

Requisitos previos

  • Python 3.8 o superior
  • Cuenta de GitLab con acceso a la API
  • Cuenta de Confluence (opcional, para almacenar resultados de análisis)
  • Acceso al(los) proyecto(s) de GitLab requerido(s)

Instalación

  1. Clona el repositorio:
git https://github.com/CodeByWaqas/MRConfluenceLinker-mcp-server.git
cd MRConfluenceLinker-mcp-server
  1. Crea y activa un entorno virtual:
python -m venv .venv
source .venv/bin/activate  # On Windows, use: .venv\Scripts\activate
  1. Instala las dependencias:
pip install -r requirements.txt

o

uv add "mcp[cli]" python-gitlab python-dotenv atlassian-python-api requests

Configuración

  1. Copia el archivo de entorno de ejemplo:
cp .env.example .env
  1. Edita el archivo .env con tus credenciales:
GITLAB_URL=https://gitlab.com
GITLAB_TOKEN=your_gitlab_token
GITLAB_PROJECT_ID=your_project_id

# Optional Confluence integration
CONFLUENCE_URL=your_confluence_url
CONFLUENCE_USERNAME=your_username
CONFLUENCE_TOKEN=your_confluence_token
CONFLUENCE_SPACE=your_space_key

Obtención de credenciales

  • Token de GitLab: Genera un token de acceso personal en GitLab con el alcance api
  • Token de Confluence: Genera un token de API en la configuración de tu cuenta de Atlassian

Uso

  1. Inicia el servidor MCP:
python src/MRConfluenceLinker-mcp-server/server.py

o

Configuración con Claude Desktop

# claude_desktop_config.json
# Can find location through:
# Claude -> Settings -> Developer -> Edit Config
{
  "mcpServers": {
      "MRConfluenceLinker-mcp-server": {
          "command": "uv",
          "args": [
              "--directory",
              "/<Absolute-path-to-folder>/MRConfluenceLinker-mcp-server/src/MRConfluenceLinker-mcp-server",
              "run",
              "server.py"
          ]
      }
  }
}

2. The server will listen for commands through stdin/stdout. You can interact with it using prompts like:

¿Puedes obtener detalles de la solicitud de fusión #1 del proyecto "my-project"? ¿Puedes analizar los cambios de código en la solicitud de fusión #1 del proyecto "my-project"? ¿Puedes almacenar un resumen de la solicitud de fusión #1 del proyecto "my-project" en Confluence?


## Available Tools

The server provides the following tools:

1. `fetch_mr_details`: Fetches details of a specific merge request or all merge requests
   - Parameters:
     - `project_id`: The GitLab project ID
     - `mr_id` (optional): Specific merge request ID

2. `analyze_code_changes`: Analyzes code changes in a merge request
   - Parameters:
     - `project_id`: The GitLab project ID
     - `mr_id`: The merge request ID to analyze

3. `store_in_confluence`: Stores analysis results in Confluence
   - Parameters:
     - `project_id`: The GitLab project ID
     - `mr_id` (optional): Specific merge request ID
     - `analysis` (optional): Analysis results to store

## Logging

The server generates detailed logs in `mcp_server.log` and outputs to stderr. This helps in debugging issues with:
- GitLab API access
- Confluence integration
- Code analysis
- Page creation and updates

## Error Handling

The server includes comprehensive error handling for:
- Missing environment variables
- API authentication issues
- Network connectivity problems
- Invalid project or merge request IDs
- Confluence permission issues

## Contributing

1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Support

For support, please [create an issue](https://github.com/CodeByWaqas/MRConfluenceLinker-mcp-server/issues) or contact the maintainers.

## Project Structure

MRConfluenceLinker-mcp-server/ ├── src/ # Directorio de código fuente │ └── MRConfluenceLinker-mcp-server/ # Paquete principal del servidor │ ├── resources/ # Módulos de recursos │ │ ├── init.py │ │ ├── client.py # Implementación del cliente / integración con GitLab PR │ ├── server.py # Implementación principal del servidor │ └── mcp_server.log # Registros del servidor ├── pycache/ # Archivos de caché de Python ├── .git/ # Repositorio git ├── .gitignore # Reglas de ignorados de git ├── CONTRIBUTING.md # Guía de contribución ├── LICENSE # Licencia del proyecto ├── README.md # Documentación del proyecto ├── pyproject.toml # Configuración del proyecto Python ├── requirements.txt # Dependencias del proyecto └── uv.lock # Archivo de bloqueo de dependencias


### Componentes clave

- **Código fuente**: Ubicado en el directorio `src/MRConfluenceLinker-mcp-server/`
  - `server.py`: Implementación principal del servidor MCP
  - `resources/client.py`: La implementación del lado del cliente contiene la integración con GitLab PR

- **Archivos de configuración**:
  - `requirements.txt`: Dependencias del paquete Python
  - `pyproject.toml`: Metadatos del proyecto y configuración de compilación
  - `uv.lock`: Versiones de dependencias bloqueadas
  - `.env.example`: Plantilla de variables de entorno

- **Documentación**:
  - `README.md`: Descripción general del proyecto e instrucciones de configuración
  - `CONTRIBUTING.md`: Guía de contribución
  - `LICENSE`: Licencia del proyecto

- **Desarrollo**:
  - `__pycache__/`: Archivos de caché de Python
  - `mcp_server.log`: Registros del servidor para depuración

</markdown>