# Aider no tiene MCP: usa la API de SocialCutter
> Aider no soporta MCP y no existe ningun flag oficial: guia honesta del camino que si funciona, con --lint-cmd y --test-cmd llamando a la API de SocialCutter.
- URL: https://socialcutter.theboomer.dev/guias/aider/
- Idioma: es
- Familia: ia
- Actualizado: 2026-09-24
- Palabras clave: Aider, MCP, lint-cmd, test-cmd, API REST, X-API-Key
## Lo que dice la documentación (y lo que no)

Conviene empezar por aquí, porque hay mucho tutorial que da por hecho lo contrario: **Aider no soporta MCP**. No es una opinión ni una versión desactualizada:

- La documentación oficial de opciones de Aider no tiene **ninguna** opción MCP.
- El fichero de argumentos del propio repositorio de Aider no contiene **ninguna coincidencia** de `mcp`.
- El issue oficial **4506** lo confirma: Aider no soporta el Model Context Protocol de forma nativa.
- Los PR que lo añadirían (**3672**, **3937** y **5539**) siguen **sin fusionar**.

Traducido a la práctica: no hay un `--mcp`, no hay un `mcp.json`, no hay una lista de herramientas MCP que Aider pueda ver. Si un tutorial te da un flag para Aider, o se lo ha inventado o está hablando de otra herramienta. Aquí no vamos a inventarlo.

## El camino que sí funciona

Aider ejecuta comandos externos en dos momentos muy concretos del ciclo de trabajo:

| Opción | Cuándo se ejecuta | Para qué sirve aquí |
|---|---|---|
| `--lint-cmd` | Después de cada edición que Aider hace en tus ficheros | Regenerar los formatos cuando cambia la imagen maestra |
| `--test-cmd` | Cuando se lo pides a Aider, o dentro del flujo de commit | Procesar antes de dar por bueno un cambio |

Los dos reciben un comando de shell cualquiera. Ese es todo el enganche que necesitas: un script que llame a la **API REST** de SocialCutter. No es MCP, es una petición HTTP dentro del flujo de Aider.

Y una advertencia honesta sobre lo que esto **no** hace: el modelo no ve las herramientas de SocialCutter ni decide cuáles usar. Aider se limita a lanzar tu script cuando le toca. La capacidad de procesar imágenes está en el script, no en Aider.

## El script

```bash
#!/usr/bin/env bash
# procesar-imagen.sh — genera los formatos de una imagen maestra
set -euo pipefail

API_URL="https://api.socialcutter.theboomer.dev"
: "${SOCIALCUTTER_API_KEY:?Define SOCIALCUTTER_API_KEY con tu clave sc_}"
IMG_URL="${1:?Uso: procesar-imagen.sh <url-de-la-imagen>}"

curl -sS -X POST "$API_URL/api/v1/images/process" \
  -H "X-API-Key: $SOCIALCUTTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
        \"source\": { \"type\": \"url\", \"value\": \"$IMG_URL\" },
        \"destinations\": [
          { \"platform\": \"instagram\", \"format\": \"post\" },
          { \"platform\": \"tiktok\", \"format\": \"cover\" }
        ]
      }" | python3 -m json.tool

# Misma autenticación con la otra cabecera:
#   -H "Authorization: Bearer $SOCIALCUTTER_API_KEY"
```

Dale permisos de ejecución con `chmod +x procesar-imagen.sh` y exporta la clave antes de lanzarlo:

```bash
export SOCIALCUTTER_API_KEY="sc_tu_clave"
```

La clave va en una cabecera de autenticación, no en el cuerpo de la petición: ninguna herramienta ni endpoint la aceptan como argumento. SocialCutter admite las dos cabeceras: `X-API-Key: sc_...` y `Authorization: Bearer sc_...`. Usa la que documente tu cliente; el resultado es el mismo. Un `Bearer` sin el prefijo `sc_` se trata como token de sesión y dará 401.

## Engancharlo a Aider

```bash
export SOCIALCUTTER_API_KEY="sc_tu_clave"

aider \
  --lint-cmd "./procesar-imagen.sh https://example.com/maestro.jpg" \
  --test-cmd "./procesar-imagen.sh https://example.com/maestro.jpg"
```

Dos detalles que ahorran disgustos:

- **El comando de lint se ejecuta muchas veces.** Se lanza después de cada edición, así que si no lo controlas vas a lanzar el mismo procesamiento una y otra vez, y cada destino consume. Un sello del estado de la maestra evita las llamadas repetidas:

```bash
#!/usr/bin/env bash
# lint-hook.sh — solo llama a la API si la maestra ha cambiado
set -euo pipefail

STAMP=".socialcutter-maestra.etag"
MASTER="https://example.com/maestro.jpg"

etag="$(curl -sSI "$MASTER" | tr -d '\r' | awk -F': ' 'tolower($1)=="etag"{print $2}')"
if [[ -f "$STAMP" && "$(cat "$STAMP")" == "$etag" ]]; then
  echo "La maestra no ha cambiado: no se consume ningun uso."
  exit 0
fi

./procesar-imagen.sh "$MASTER"
printf '%s\n' "$etag" > "$STAMP"
```

- **El código de salida importa.** Aider interpreta un comando que termina con un código distinto de cero como un fallo y te muestra la salida como aviso. Si el script devuelve error por cualquier motivo —la clave, la red, un 429—, lo verás mezclado con los avisos de lint. Haz que el script salga con cero solo cuando la petición se ha completado.

## La misma idea en Python

Si prefieres leer el JSON y descargar las salidas, el script puede ser de Python:

```python
import os, requests

resp = requests.post(
    "https://api.socialcutter.theboomer.dev/api/v1/images/process",
    headers={"X-API-Key": os.environ["SOCIALCUTTER_API_KEY"]},
    # equivalente: headers={"Authorization": "Bearer " + os.environ["SOCIALCUTTER_API_KEY"]},
    json={
        "source": {"type": "url", "value": "https://example.com/maestro.jpg"},
        "destinations": [
            {"platform": "instagram", "format": "post"},
            {"platform": "tiktok", "format": "cover"},
        ],
    },
    timeout=60,
)
resp.raise_for_status()
for out in resp.json()["outputs"]:
    print(out["platform"], out["format"], out["url"])
```

Las salidas son URLs públicas por destino: el script las imprime, las guarda o las pasa al siguiente paso. Tienes el detalle completo en la [guía de Python](/guias/python/) y en la [guía de curl](/guias/curl/).

## Si lo que quieres es que el modelo elija la herramienta

Entonces este camino no te sirve: un comando de lint no expone herramientas al modelo. Para eso necesitas un cliente que hable MCP, porque SocialCutter sí tiene servidor MCP: 28 herramientas en `https://mcp.socialcutter.theboomer.dev/mcp`, con la clave en la cabecera `X-API-Key` o en `Authorization: Bearer sc_...`. El punto de partida es la [guía del servidor MCP](/guias/mcp/) y, si usas Zed, la [guía de Zed](/guias/zed/).

## AiderDesk no es Aider

Existe **AiderDesk**, un producto distinto construido alrededor de Aider, que sí incorpora MCP. Que AiderDesk tenga MCP no significa que Aider lo tenga: son dos herramientas con dos nombres parecidos. Si trabajas con Aider por línea de comandos, sigues sin herramientas MCP y sigues necesitando el camino del script. Merece la pena tenerlo claro al buscar documentación, porque muchas páginas mezclan los dos nombres.

## Coste y límites

- **1 uso por destino** (plataforma y formato). Dos destinos en una petición, 2 usos; los fallos se devuelven.
- **5 MB** por imagen, y salida en `webp`, `jpg` o `png` con calidad de 1 a 100 (85 por defecto).
- El recorte es **centrado**, con los modos `cover`, `contain`, `fill` y `stretch`, sin análisis del contenido.
- SocialCutter **genera los ficheros y no publica** en redes sociales ni edita la imagen.

## Errores típicos

| Síntoma | Causa | Solución |
|---|---|---|
| `401: Invalid or expired authentication token` | El script no envía ninguna cabecera de autenticación, o el valor del `Bearer` no empieza por `sc_` | Exporta `SOCIALCUTTER_API_KEY` y pásala en `-H "X-API-Key: ..."` o en `-H "Authorization: Bearer ..."` |
| `401: Invalid API key` | Clave mal copiada o revocada | Crea otra en Perfil → API keys y actualiza la variable de entorno |
| No aparecen herramientas MCP en Aider | Aider no soporta MCP | No hay flag que activar: usa el script, o un cliente MCP si quieres herramientas |
| El comando no se ejecuta | `--lint-cmd` solo se lanza tras una edición, y la ruta del script es relativa al directorio de trabajo | Revisa la ruta (`./procesar-imagen.sh`) y provoca una edición para probarlo |
| Aviso de lint tras cada edición | El script sale con un código distinto de cero | Devuelve 0 cuando la petición es correcta y guarda un sello para no repetir llamadas |
| Tu cliente MCP conecta pero sin herramientas | Transporte equivocado (SSE, o `url` sin tipo en clientes que lo exigen) | Usa la URL HTTP con la cabecera `X-API-Key` y ajusta la clave raíz del cliente |
| `413` | La imagen supera 5 MB | Reduce el fichero antes de procesarlo |
| `429` | Cuota del monedero agotada | Consulta `get_credits` y compra un pack o sube de plan |

## Siguientes pasos

- Panorama del protocolo: [Usa SocialCutter desde tu LLM o editor con MCP](/guias/mcp/)
- Terminal: [Procesa imágenes con la API desde la terminal (curl)](/guias/curl/)
- Código: [Procesa imágenes con la API de SocialCutter desde Python](/guias/python/)
- Editor con herramientas MCP: [Zed y SocialCutter: MCP con context servers](/guias/zed/)
- Los cuatro caminos de automatización: [Automatizar imágenes para redes sociales](/guias/automatizar-imagenes-redes-sociales/)
- Opciones oficiales de Aider: https://aider.chat/docs/config/options.html
- Issue 4506 sobre MCP en Aider: https://github.com/Aider-AI/aider/issues/4506