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ó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
#!/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,jpgopngcon calidad de 1 a 100 (85 por defecto). - El recorte es centrado, con los modos
cover,contain,fillystretch, 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
- Terminal: Procesa imágenes con la API desde la terminal (curl)
- Código: Procesa imágenes con la API de SocialCutter desde Python
- Editor con herramientas MCP: Zed y SocialCutter: MCP con context servers
- Los cuatro caminos de automatización: Automatizar imágenes para 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
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.