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

MCP Registry

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.

Codemagic MCP server

CodemagicMcp MCP server MCP Badge License: MIT

Herramientas

Aplicaciones

HerramientaDescripción
list_appsLista todas las aplicaciones en tu cuenta de Codemagic
get_appObtiene los detalles de una aplicación específica
add_appAñade un repositorio público a Codemagic
add_private_appAñade un repositorio privado usando una clave SSH
delete_app ⚠️Elimina una aplicación de Codemagic

Builds

HerramientaDescripción
list_buildsLista los builds, opcionalmente filtrados por aplicación
get_buildObtiene los detalles del build con un resumen del número de pasos; pasa include_steps=True para la lista completa de pasos
trigger_buildDispara un nuevo build para una aplicación
cancel_build ⚠️Cancela un build en ejecución
get_build_logsObtiene un resumen del estado paso a paso de un build (filtrable por estado)
get_step_logsObtiene los logs sin procesar en línea o crea/actualiza un archivo temporal gestionado para un paso específico del build
get_step_log_artifactComprueba si un artefacto de log de paso gestionado localmente sigue existiendo para un paso específico del build
list_build_artifactsLista todos los artefactos producidos por un build

Artefactos

HerramientaDescripción
get_artifact_urlObtiene la URL de descarga de un artefacto de build
create_artifact_public_urlCrea una URL pública con límite de tiempo para un artefacto

Cachés

HerramientaDescripción
list_cachesLista 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

HerramientaDescripción
list_variablesLista todas las variables de entorno de una aplicación
add_variableAñade una variable de entorno a una aplicación
update_variableActualiza una variable de entorno existente
delete_variable ⚠️Elimina una variable de entorno

Webhooks

HerramientaDescripción
list_webhooksLista todos los webhooks de una aplicación
add_webhookAñ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:

  1. Llamará a list_apps para descubrir las aplicaciones disponibles.
  2. Usará la aplicación automáticamente si solo existe una.
  3. 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 como artifact_id, file_path, bytes, line_count y expires_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

  1. Añade un método a client.py
  2. Añade la función de la herramienta al archivo tools/*.py correspondiente
  3. Eso es todo: server.py nunca necesita cambiar