Saltar al contenido principal
SocialCutter

IA y agentes

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.

  • 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ónCuándo se ejecutaPara qué sirve aquí
--lint-cmdDespués de cada edición que Aider hace en tus ficherosRegenerar los formatos cuando cambia la imagen maestra
--test-cmdCuando se lo pides a Aider, o dentro del flujo de commitProcesar 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

#!/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:

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

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:
#!/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:

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 y en la guía de 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 y, si usas Zed, la guía de 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íntomaCausaSolución
401: Invalid or expired authentication tokenEl 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 keyClave mal copiada o revocadaCrea otra en Perfil → API keys y actualiza la variable de entorno
No aparecen herramientas MCP en AiderAider no soporta MCPNo 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 trabajoRevisa la ruta (./procesar-imagen.sh) y provoca una edición para probarlo
Aviso de lint tras cada ediciónEl script sale con un código distinto de ceroDevuelve 0 cuando la petición es correcta y guarda un sello para no repetir llamadas
Tu cliente MCP conecta pero sin herramientasTransporte 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
413La imagen supera 5 MBReduce el fichero antes de procesarlo
429Cuota del monedero agotadaConsulta get_credits y compra un pack o sube de plan

Siguientes pasos

Preguntas frecuentes

¿Aider soporta MCP?

No. La documentación oficial de opciones de Aider no incluye ninguna opción MCP, el fichero de argumentos del repositorio no tiene ninguna coincidencia de mcp, y el issue oficial 4506 lo confirma. Los PR que lo añadirían siguen sin fusionar.

¿Existe algún flag o fichero de configuración MCP en Aider?

No existe. Si buscas una opción de línea de comandos, un fichero de servidores MCP o una forma de listar herramientas MCP en Aider, no la vas a encontrar: no está implementado. No hay atajos que inventar.

¿Qué puedo hacer entonces para procesar imágenes?

Llamar a la API REST de SocialCutter desde los comandos que Aider ya ejecuta: --lint-cmd y --test-cmd pueden lanzar un script que haga una petición a POST /api/v1/images/process con la cabecera X-API-Key.

¿Eso hace que Aider vea las herramientas de SocialCutter?

No. El modelo no ve ninguna herramienta ni elige parámetros: lo único que ocurre es que Aider ejecuta tu script en los momentos que le indicas. Si quieres que un modelo elija la herramienta, necesitas un cliente MCP.

¿AiderDesk sirve?

AiderDesk es un producto distinto de Aider. AiderDesk sí incorpora MCP, pero eso no cambia nada en Aider: si trabajas con Aider por línea de comandos, sigues sin herramientas MCP.