IA y agentes
Zed y SocialCutter: MCP con context servers
Conecta el servidor MCP de SocialCutter a Zed con la clave context_servers y la cabecera X-API-Key: settings.json, verificacion paso a paso y errores tipicos.
- Zed
- context servers
- MCP
- X-API-Key
- settings.json
- SocialCutter
Zed no llama MCP a los MCP
Zed usa MCP internamente, pero no lo llama así en su configuración: los llama context servers. Es el detalle que rompe la mitad de las primeras configuraciones, porque el snippet que funciona en otras herramientas se copia tal cual y no hace nada.
| Lo que esperas | Lo que Zed lee |
|---|---|
mcpServers | Se ignora: no es una clave de Zed |
context_servers | Clave raíz correcta para dar de alta un servidor |
~/.config/zed/settings.json | Configuración global, para todos los proyectos |
.zed/settings.json | Configuración del proyecto concreto |
Si copias un bloque con mcpServers, Zed no da error: simplemente no aparece ningún servidor nuevo. Antes de tocar nada más, comprueba el nombre de la clave raíz.
Requisitos: Zed v0.214.5 o superior
El servidor MCP de SocialCutter es remoto y habla HTTP con streaming en https://mcp.socialcutter.theboomer.dev/mcp. No se lanza con npx, no hay proceso local y no hay nada que instalar en la máquina.
Zed admite servidores MCP remotos por HTTP de forma nativa desde la v0.214.5. En versiones anteriores solo sabe hablar con servidores locales por stdio, así que una entrada con url no conecta por mucho que el JSON sea correcto. Si el servidor no aparece o no muestra herramientas, lo primero es actualizar Zed y reabrirlo.
El transporte es HTTP, no SSE. Un endpoint SSE no es intercambiable: si apuntas a un transporte equivocado, el servidor puede registrarse sin herramientas.
Dos cabeceras de autenticación
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.
Hay cinco herramientas que responden sin clave: list_platforms, list_formats, list_fit_modes, get_health y get_pricing_plans. Sirven para comprobar que la conexión está viva antes de tener credenciales. Las privadas —process_image, process_batch, get_credits, get_wallet, get_history, auth_me y el resto hasta 28— exigen una clave válida. Sin cabecera devuelven 401: Invalid or expired authentication token; con una clave que no vale, 401: Invalid API key.
Crea la clave en el dashboard, en Perfil → API keys. Se muestra una sola vez y solo puede haber una activa por cuenta.
Configurar settings.json
Abre ~/.config/zed/settings.json (o .zed/settings.json si quieres que la configuración viaje con el repositorio) y añade:
{
"context_servers": {
"socialcutter": {
"url": "https://mcp.socialcutter.theboomer.dev/mcp",
"headers": {
"X-API-Key": "sc_tu_clave"
// misma autenticación: "Authorization": "Bearer sc_tu_clave"
}
}
}
}
También puedes darlo de alta desde la interfaz: Settings → AI → MCP Servers → Add Server. La interfaz escribe la misma entrada en el mismo fichero, así que da igual el camino que uses.
Si no declaras ninguna cabecera, Zed abre su propio OAuth
Zed, cuando no encuentra una cabecera de autenticación configurada para un servidor, lanza su propio flujo OAuth contra él. Si dejas que Zed intente autorizar por OAuth, la petición acaba en 401 y lo único que ves es un error de autenticación en la interfaz.
Por eso el snippet de arriba declara la cabecera explícitamente: vale X-API-Key: sc_... o Authorization: Bearer sc_..., y con cualquiera de las dos Zed no abre el flujo OAuth.
Verificar la conexión
- Guarda el fichero y reabre Zed para que relea la configuración.
- Abre Settings → AI → MCP Servers y comprueba que
socialcutteraparece en la lista. - Pide en el asistente algo que no necesita clave: «lista las plataformas y sus formatos». Si responde con las 6 plataformas y los 13 destinos, la conexión funciona incluso antes de copiar la clave.
- Pide después «¿cuántos usos me quedan?», que ya usa
get_creditsyget_wallety por tanto la cabecera. Si esa segunda respuesta falla con 401, el problema es la clave, no el transporte.
Qué puedes pedirle al modelo
| Lo que pides | Herramienta que interviene | Qué devuelve |
|---|---|---|
| «Lista las plataformas y los formatos» | list_platforms y list_formats | El catálogo con medidas y relaciones de aspecto |
| «Procesa esta URL para Instagram post y TikTok cover» | process_image | Un image_id y una URL por destino |
| «Procesa estos cuatro ficheros» | process_upload_file o process_batch | Las salidas de cada imagen |
| «¿Cuántos usos me quedan?» | get_credits y get_wallet | Usos del día, bolsa extra y saldo comprado |
| «Enséñame las últimas diez imágenes» | get_history | El historial con el origen de cada trabajo |
La unidad de coste es 1 uso por destino, entendiendo destino como cada combinación de plataforma y formato: una petición para Instagram post, TikTok cover y YouTube thumbnail son 3 usos. Los procesamientos fallidos se devuelven.
Recuerda también la frontera del producto: SocialCutter genera los ficheros y no publica. El recorte es centrado, con los modos cover, contain, fill y stretch, sin análisis de contenido. La salida es webp, jpg o png con calidad de 1 a 100 (85 por defecto) y el máximo por imagen es de 5 MB.
Errores típicos
| Síntoma | Causa | Solución |
|---|---|---|
401: Invalid or expired authentication token | La entrada no lleva cabecera de autenticación, o el valor del Bearer no empieza por sc_ | Añade X-API-Key: sc_... o Authorization: Bearer sc_... en headers y reinicia Zed |
401: Invalid API key | Clave mal copiada o revocada | Crea una nueva en Perfil → API keys y sustituye el valor |
| El servidor no aparece en Zed | Clave raíz equivocada (mcpServers) | Cambia el nombre a context_servers y guarda |
| Aparece el servidor pero sin herramientas | Zed anterior a la v0.214.5, o transporte equivocado | Actualiza Zed; confirma que la URL es la de HTTP, no una de SSE |
| Zed abre un flujo OAuth | No hay cabecera configurada para ese servidor | Declara X-API-Key o Authorization: Bearer sc_... en headers para que Zed no intente autorizar |
413 al procesar un fichero | La imagen supera 5 MB | Reduce el fichero antes de subirlo |
429 al procesar | 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
- Sin editor, desde la terminal: Procesa imágenes con la API desde la terminal (curl)
- Desde código: Procesa imágenes con la API de SocialCutter desde Python
- Si tu herramienta no tiene MCP: Aider no tiene MCP: usa la API de SocialCutter
- Los cuatro caminos de automatización: Automatizar imágenes para redes sociales
- Documentación de la API: https://docs.socialcutter.theboomer.dev
- Documentación de MCP en Zed: https://zed.dev/docs/ai/mcp
Preguntas frecuentes
¿Por qué Zed no lee mi bloque mcpServers?
Porque Zed no usa ese nombre. Zed llama context servers a los servidores MCP, así que la clave raíz de su settings.json se llama context_servers. Una entrada dentro de mcpServers se ignora sin aviso y no aparecerá ninguna herramienta.
¿Hace falta instalar algo para el servidor MCP de SocialCutter?
No. El servidor es remoto y se accede a https://mcp.socialcutter.theboomer.dev/mcp por HTTP. Solo necesitas una versión de Zed que admita servidores MCP remotos por HTTP y tu clave sc_.
¿Qué versión de Zed necesito?
El MCP remoto por HTTP es nativo en Zed desde la v0.214.5. Si tu Zed es anterior, solo habla con servidores locales y la entrada por URL no conectará: actualiza el editor y vuelve a abrirlo.
¿Por qué Zed me abre una ventana de autorización OAuth?
Porque no ha encontrado ninguna cabecera de autenticación configurada para ese servidor y lanza su propio flujo OAuth. SocialCutter admite X-API-Key: sc_... y Authorization: Bearer sc_...: declara cualquiera de las dos en headers y Zed no abrirá la autorización.
¿Cuánto consume cada imagen?
1 uso por destino, entendiendo destino como cada combinación de plataforma y formato. Una petición con Instagram post y TikTok cover son 2 usos, y el máximo por fichero subido es de 5 MB.