Saltar al contenido principal
SocialCutter

IA y agentes

SocialCutter como extensión MCP en Goose

Añade SocialCutter a Goose con una extensión streamable_http: config.yaml, la cabecera X-API-Key, los secretos en el llavero y los errores más típicos.

  • Goose
  • Block Goose
  • MCP
  • streamable_http
  • X-API-Key
  • extensions
  • config.yaml
  • SocialCutter

Qué es Goose y cómo encaja el MCP de SocialCutter

Goose es un agente de código abierto de Block que se ejecuta en el terminal o en su aplicación de escritorio y trabaja con extensiones: cada extensión añade un conjunto de herramientas que el modelo puede llamar. El servidor MCP de SocialCutter entra por esa puerta, así que basta una entrada en la configuración para pedir en lenguaje natural los formatos de una imagen en lugar de escribir peticiones HTTP.

Conviene fijar la frontera desde el principio: SocialCutter genera los ficheros, no publica. Recibe una imagen, la recorta de forma centrada a la medida exacta de cada plataforma y formato, y devuelve una URL por salida. No analiza el contenido de la imagen ni edita el original: ajusta la zona central según el modo elegido. Publicar o mover esos ficheros es del llamante. El coste es 1 uso por destino, es decir, por cada combinación de plataforma y formato.

Datos del servidor que vas a necesitar:

DatoValor
Endpointhttps://mcp.socialcutter.theboomer.dev/mcp
TransporteHTTP con streaming (streamable HTTP)
Herramientas28
Cabecera de autenticaciónX-API-Key: sc_... o Authorization: Bearer sc_...
Herramientas públicaslist_platforms, list_formats, list_fit_modes, get_health, get_pricing_plans, get_credit_packs

Si es la primera vez que conectas el servidor, empieza por la guía del servidor MCP de SocialCutter, donde están las 28 herramientas y los dos modos de conexión.

El fichero: config.yaml bajo la clave extensions

Goose guarda toda la configuración en un único YAML y los servidores se declaran bajo la clave raíz extensions:

SistemaRuta del fichero
Linux y macOS~/.config/goose/config.yaml
Windows%APPDATA%\Block\goose\config\config.yaml

La entrada de SocialCutter queda así:

extensions:
  socialcutter:
    type: streamable_http
    name: socialcutter
    enabled: true
    uri: "https://mcp.socialcutter.theboomer.dev/mcp"
    headers:
      X-API-Key: "sc_tu_clave"
      # autentica igual: Authorization: "Bearer sc_tu_clave"
    env_keys: []
    envs: {}
    timeout: 300

sc_tu_clave es un marcador: ahí va tu clave real, la que creaste en el dashboard. Goose reenvía tal cual lo que pongas en headers, y SocialCutter admite las dos cabeceras (X-API-Key: sc_... y Authorization: Bearer sc_...), así que 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. Esa forma, con el valor escrito, sirve para una primera prueba en local. Más abajo está el modo limpio, sin secretos dentro del fichero.

Campo por campo

CampoPara qué sirve
typeTransporte de la extensión. Aquí streamable_http, que es lo que habla nuestro endpoint
nameNombre con el que la extensión aparece en la sesión
enabledSi está activa. Para desactivarla sin borrarla, ponlo en false
uriURL del servidor MCP remoto
headersCabeceras que Goose reenvía en cada petición; aquí viaja X-API-Key o Authorization: Bearer
env_keysNombres de las variables cuyo valor se guarda en el llavero del sistema
envsVariables sin secreto, escritas directamente en el fichero
timeoutSegundos de espera antes de dar una llamada por perdida

SSE está retirado: migra a streamable_http

Si arrastras una entrada antigua con type: sse, no va a funcionar: SSE está retirado en Goose y el transporte que se usa hoy es streamable_http. La migración es cambiar el tipo y conservar la misma uri:

 extensions:
   socialcutter:
-    type: sse
+    type: streamable_http
     uri: "https://mcp.socialcutter.theboomer.dev/mcp"

Nuestro endpoint publica el transporte HTTP con streaming, así que una extensión configurada en SSE se queda sin herramientas aunque la URL sea la correcta. Este es el primer sitio donde mirar si Goose contesta que no encuentra ninguna herramienta de SocialCutter.

Alta sin editar el fichero a mano

Hay dos caminos además de editar el YAML. Para una prueba puntual:

goose session --with-streamable-http-extension "https://mcp.socialcutter.theboomer.dev/mcp"

Ese comando arranca una sesión con la extensión cargada solo para esa ejecución, sin tocar nada. Y para dejarla guardada de forma permanente:

goose configure

Dentro del asistente se elige Remote Extension (Streamable HTTP) y se pega la URL. Goose escribe la entrada por ti, así que es también la forma más segura de ver el formato exacto que espera tu versión.

Los secretos van al llavero, no al fichero

config.yaml es un fichero que acaba en un repositorio más veces de las que debería. La forma limpia en Goose es no escribir la clave dentro: se declara su nombre en env_keys y el valor vive en el llavero del sistema (Keychain en macOS, el gestor de secretos del escritorio en Linux, Credential Manager en Windows). env_keys es la lista de variables que la extensión tiene que leer de ahí:

    headers:
      X-API-Key: "sc_tu_clave"
      # o bien Authorization: "Bearer sc_tu_clave"
    env_keys:
      - SOCIALCUTTER_API_KEY

El valor de SOCIALCUTTER_API_KEY queda fuera del fichero, así que puedes versionar la configuración sin filtrar nada. El nombre exacto de la variable y el formato que espera tu versión los confirma el propio asistente al configurar la extensión remota: si al guardar no ves la entrada que esperabas, vuelve a goose configure antes de editar el YAML a mano.

Comprobar que la conexión funciona

Las herramientas públicas responden sin clave, así que sirven para verificar la instalación antes de crear credenciales:

  • «Lista las plataformas y sus formatos» → list_platforms
  • «¿Está el servicio en pie?» → get_health
  • «¿Qué modos de ajuste hay y cuánto cuestan los planes?» → list_fit_modes, get_pricing_plans

Con la clave puesta, una pregunta de negocio confirma la autenticación: «¿cuántos usos me quedan?» pasa por get_credits y get_wallet. Si responde con tu saldo, la extensión está bien montada.

Lo que suele pedirse desde la sesión

Lo que pidesHerramientaQué devuelve
«Procesa esta imagen para Instagram post y TikTok cover»process_image (URL) o process_upload_file (fichero)Un image_id y una URL por destino
«Manda estas tres a todos los formatos de feed cuadrados»process_batchUn resultado por imagen del lote
«¿Cuántos usos me quedan?»get_credits y get_walletUsos del día, bolsa extra y saldo comprado
«Enséñame las diez últimas»get_historyLas diez imágenes más recientes con su origen
«¿Qué formatos tiene LinkedIn?»list_platformsPlataformas, formatos y medidas

Límites y coste

  • 1 uso por destino (plataforma y formato). Recuerda que 13 destinos de una misma imagen son 13 usos.
  • 5 MB por imagen, tanto en la variante por URL como en la subida de fichero.
  • Salida en webp, jpg o png, con calidad de 1 a 100 y 85 por defecto.
  • Modos de ajuste cover, contain, fill y stretch, todos con recorte centrado.
  • 6 plataformas y 13 destinos en el catálogo público; no existe 4:5.

Errores típicos

SíntomaCausaSolución
401: Invalid or expired authentication tokenLa cabecera X-API-Key no llega al servidorRevisa el bloque headers de la entrada y guarda el fichero antes de reiniciar Goose
401: Invalid API keyLa clave está mal copiada, caducada o revocadaVuelve a copiarla desde Perfil → API keys; solo hay una clave activa por cuenta
Goose no muestra ninguna herramienta de SocialCutterTransporte equivocado: queda una entrada con type: sseCambia type a streamable_http y vuelve a arrancar la sesión
La extensión existe pero está desactivadaenabled en false, o el fichero editado no es el que Goose leePon enabled: true y confirma la ruta según tu sistema
Sigue sin verla tras editar el YAMLGoose lee la configuración al arrancarCierra la sesión y ábrela de nuevo
La llamada se corta con un lote grandeEl procesamiento dura más que timeoutSube timeout (en segundos) o divide el lote en partes menores

Siguientes pasos

Preguntas frecuentes

¿Tengo que escribir la clave dentro de config.yaml?

No es obligatorio y no es lo recomendable. Puedes probar con el valor en la cabecera y, cuando el flujo funcione, pasar el secreto al llavero del sistema y dejar en el fichero solo el nombre de la variable declarado en env_keys.

¿Puedo seguir usando la extensión de tipo sse que ya tenía?

No. SSE está retirado en Goose y el transporte que se usa hoy es streamable_http. Hay que cambiar el campo type de la entrada y mantener la misma uri, porque el endpoint de SocialCutter publica HTTP con streaming.

¿Cuánto cuesta cada procesamiento desde Goose?

1 uso por destino, entendiendo destino como cada combinación de plataforma y formato. Un lote de una sola imagen a los 13 destinos del catálogo son 13 usos, y se consumen en una única llamada a process_batch.

Las herramientas públicas, ¿necesitan la clave?

No. list_platforms, list_formats, list_fit_modes, get_health, get_pricing_plans y get_credit_packs responden sin credenciales, así que sirven para comprobar la extensión antes de crear la clave en el dashboard.

¿Qué tamaño máximo admite una imagen?

5 MB por fichero. Por encima de ese límite la API responde con el error 413 y conviene reducir la imagen antes de enviarla, tanto si va por URL como si se sube como fichero.