CodemagicMcp
Un servidor MCP local en Python que expone la API REST de Codemagic CI/CD como herramientas invocables por Claude.
Documentación
Servidor MCP de Codemagic
Un servidor MCP local en Python que expone la API REST de Codemagic CI/CD como herramientas invocables desde Claude. Dispara builds, gestiona aplicaciones, descarga artefactos y limpia cachés, todo desde Claude Code o Claude Desktop sin salir del chat.
Herramientas
Aplicaciones
| Herramienta | Descripción |
|---|---|
list_apps | Lista todas las aplicaciones en tu cuenta de Codemagic |
get_app | Obtiene los detalles de una aplicación específica |
add_app | Añade un repositorio público a Codemagic |
add_private_app | Añade un repositorio privado usando una clave SSH |
delete_app ⚠️ | Elimina una aplicación de Codemagic |
Builds
| Herramienta | Descripción |
|---|---|
list_builds | Lista los builds, opcionalmente filtrados por aplicación |
get_build | Obtiene los detalles del build con un resumen del número de pasos; pasa include_steps=True para la lista completa de pasos |
trigger_build | Dispara un nuevo build para una aplicación |
cancel_build ⚠️ | Cancela un build en ejecución |
get_build_logs | Obtiene un resumen del estado paso a paso de un build (filtrable por estado) |
get_step_logs | Obtiene los logs sin procesar en línea o crea/actualiza un archivo temporal gestionado para un paso específico del build |
get_step_log_artifact | Comprueba si un artefacto de log de paso gestionado localmente sigue existiendo para un paso específico del build |
list_build_artifacts | Lista todos los artefactos producidos por un build |
Artefactos
| Herramienta | Descripción |
|---|---|
get_artifact_url | Obtiene la URL de descarga de un artefacto de build |
create_artifact_public_url | Crea una URL pública con límite de tiempo para un artefacto |
Cachés
| Herramienta | Descripción |
|---|---|
list_caches | Lista todas las cachés de build de una aplicación |
delete_cache ⚠️ | Elimina una caché de build específica |
delete_all_caches ⚠️ | Elimina todas las cachés de build de una aplicación |
Variables de Entorno
| Herramienta | Descripción |
|---|---|
list_variables | Lista todas las variables de entorno de una aplicación |
add_variable | Añade una variable de entorno a una aplicación |
update_variable | Actualiza una variable de entorno existente |
delete_variable ⚠️ | Elimina una variable de entorno |
Webhooks
| Herramienta | Descripción |
|---|---|
list_webhooks | Lista todos los webhooks de una aplicación |
add_webhook | Añade un webhook a una aplicación |
delete_webhook ⚠️ | Elimina un webhook |
⚠️ Estas herramientas están marcadas como destructivas y solicitarán confirmación antes de ejecutarse.
Inicio Rápido
La forma más rápida de empezar con Claude Code, sin necesidad de un paso de instalación adicional:
# 1. Add the server (uses uvx to run it on-demand)
claude mcp add codemagic -e CODEMAGIC_API_KEY=your-api-key-here -- uvx codemagic-mcp
# 2. Restart Claude Code — tools will appear in /tools
Eso es todo. Consulta Configuración para ajustes opcionales como CODEMAGIC_DEFAULT_APP_ID.
Instalación
Requisitos: Python 3.11+
Opción 1 — uvx (recomendado, sin necesidad de instalar)
uvx codemagic-mcp
Opción 2 — pip
pip install codemagic-mcp
Opción 3 — desde el código fuente
git clone https://github.com/AgiMaulana/CodemagicMcp.git
cd CodemagicMcp
python3 -m venv .venv
.venv/bin/pip install -e .
Configuración
Obtén tu token de API desde Configuración de usuario de Codemagic → Integraciones → API de Codemagic.
Puedes proporcionar la configuración mediante variables de entorno o mediante un archivo .env:
# .env
CODEMAGIC_API_KEY=your-api-key-here
# Optional: set a default app so you don't have to specify it every time
CODEMAGIC_DEFAULT_APP_ID=your-app-id-here
# Optional: customize managed temp log storage for get_step_logs(..., delivery="file")
CODEMAGIC_LOG_TEMP_DIR=/tmp/codemagic-mcp
CODEMAGIC_LOG_TTL_SECONDS=3600
CODEMAGIC_LOG_CLEANUP_INTERVAL_SECONDS=300
CODEMAGIC_LOG_MAX_TOTAL_BYTES=524288000
CODEMAGIC_LOG_MAX_FILE_COUNT=200
ID de Aplicación Predeterminado
CODEMAGIC_DEFAULT_APP_ID es opcional pero recomendado si trabajas principalmente con una aplicación. Cuando se establece, la IA lo usará automáticamente siempre que una herramienta requiera un app_id y no se haya especificado ninguno. Si no se establece, la IA:
- Llamará a
list_appspara descubrir las aplicaciones disponibles. - Usará la aplicación automáticamente si solo existe una.
- Mostrará la lista y te pedirá que elijas si se encuentran varias aplicaciones.
Entrega de Archivos de Log de Pasos
get_step_logs admite dos modos de entrega:
delivery="file"es el predeterminado y escribe el log en un archivo temporal local gestionado, devolviendo metadatos comoartifact_id,file_path,bytes,line_countyexpires_at.delivery="inline"devuelve el texto del log de pasos sin procesar directamente.
El modo de archivo local es útil cuando un log de pasos es demasiado grande para devolverlo cómodamente en línea. Los archivos de log gestionados se almacenan en CODEMAGIC_LOG_TEMP_DIR y los archivos caducados se limpian oportunistamente cada vez que se escribe un nuevo archivo de log. La ventana de retención predeterminada está controlada por CODEMAGIC_LOG_TTL_SECONDS y tiene un valor predeterminado de 3600 segundos.
El servidor también ejecuta una limpieza de inicio y un bucle de limpieza periódico en segundo plano. El intervalo del bucle está controlado por CODEMAGIC_LOG_CLEANUP_INTERVAL_SECONDS y tiene un valor predeterminado de 300 segundos. Como respaldo de seguridad adicional, el directorio temporal gestionado está limitado por CODEMAGIC_LOG_MAX_TOTAL_BYTES y CODEMAGIC_LOG_MAX_FILE_COUNT; cuando se supera cualquiera de los límites, los archivos más antiguos se eliminan primero.
get_step_log_artifact(build_id, step_id) comprueba si ese artefacto gestionado sigue existiendo sin volver a llamar a Codemagic ni devolver el contenido del archivo. Los metadatos del artefacto incluyen un artifact_id determinista en este formato:
artifact_<build_id>_<step_id>
Si el artefacto no existe, el servidor devuelve status="missing" con el motivo not_generated_or_expired, lo que significa que el archivo nunca se generó o que caducó y fue eliminado.
Registrar con Claude Code
Ejecuta el siguiente comando para añadir el servidor:
claude mcp add codemagic -- codemagic-mcp
Luego establece tu clave de API en la configuración de entorno de MCP, o expórtala en tu shell antes de iniciar Claude Code:
export CODEMAGIC_API_KEY=your-api-key-here
Alternativamente, añádelo manualmente a ~/.claude.json:
{
"mcpServers": {
"codemagic": {
"command": "codemagic-mcp",
"env": {
"CODEMAGIC_API_KEY": "your-api-key-here",
"CODEMAGIC_DEFAULT_APP_ID": "your-app-id-here"
}
}
}
}
Usando uvx (sin necesidad de instalación previa)
{
"mcpServers": {
"codemagic": {
"command": "uvx",
"args": ["codemagic-mcp"],
"env": {
"CODEMAGIC_API_KEY": "your-api-key-here",
"CODEMAGIC_DEFAULT_APP_ID": "your-app-id-here"
}
}
}
}
Reinicia Claude Code: las herramientas aparecerán en /tools.
Registrar con Claude Desktop
Añade a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"codemagic": {
"command": "codemagic-mcp",
"env": {
"CODEMAGIC_API_KEY": "your-api-key-here",
"CODEMAGIC_DEFAULT_APP_ID": "your-app-id-here"
}
}
}
}
Reinicia Claude Desktop para aplicar los cambios.
Estructura del Proyecto
codemagic_mcp/
├── config.py # pydantic-settings config (validates API key at startup)
├── client.py # httpx async client, one method per endpoint
├── server.py # FastMCP instance
└── tools/
├── apps.py
├── builds.py
├── artifacts.py
├── caches.py
├── variables.py
└── webhooks.py
Añadir Nuevas Herramientas
- Añade un método a
client.py - Añade la función de la herramienta al archivo
tools/*.pycorrespondiente - Eso es todo:
server.pynunca necesita cambiar