Resumen
El servidor MCP de Antwork permite que tu asistente de IA cree borradores, programe, publique y analice posts en redes sociales en tu nombre. Habla el estándar abierto Model Context Protocol, así que cualquier cliente compatible con MCP (claude.ai, Claude Code, Cursor, ChatGPT, Windsurf, agentes propios) puede conectarse con la misma URL única.
Qué puedes hacer una vez conectado
- ›Crear borradores on-brand usando el voice profile guardado para cada plataforma.
- ›Programar o publicar en LinkedIn, X, Threads, Facebook, Instagram, YouTube, TikTok y Pinterest.
- ›Leer métricas de engagement, historial de posts y series temporales diarias de cualquier post.
- ›Gestionar borradores, posts programados y la biblioteca de medios.
- ›Conectar / desconectar cuentas sociales e inspeccionar su salud.
URL del servidor
https://api.antwork.io/mcp
Una sola URL sirve a todos los usuarios — no hay subdominios por tenant. La autenticación se hace vía OAuth en la primera llamada a una tool (ver Autenticación).
Inicio rápido
Cada cliente MCP soportado sigue el mismo patrón: registra la URL del servidor y aprueba OAuth en tu navegador cuando se te pida. La forma exacta de instalar varía por cliente — elige el tuyo abajo.
Claude
- 1.Haz clic en Conectar — abriremos el diálogo Añadir conector personalizado de Claude y copiaremos la URL del MCP a tu portapapeles. El mismo conector funciona en Claude Desktop una vez que inicies sesión.
- 2.Introduce el Name, pega la URL en Remote MCP server URL, deja Advanced settings vacío y haz clic en Add.
ChatGPT
- 1.Abre ChatGPT → Ajustes → Apps y conectores → Ajustes avanzados y activa el Modo Desarrollador.
- 2.Vuelve a Apps y conectores y pulsa Crear app. Pon el nombre "antwork", pega la URL del servidor MCP de abajo y elige OAuth como conexión.
- 3.Marca "I understand and want to continue" y pulsa Create.
- 4.Activa el toggle "Reference memories and chats" para que ChatGPT recuerde tu voz de marca entre chats, e inicia sesión para autorizar Antwork.
https://api.antwork.io/mcp
Claude Code
- 1.Ejecuta este comando en tu terminal.
- 2.Luego en Claude Code, escribe /mcp para autorizar.
$ claude mcp add antwork --transport http https://api.antwork.io/mcp
OpenClaw
- 1.Ejecuta este comando en tu terminal.
- 2.Luego ejecuta mcporter auth antwork para autorizar.
$ mcporter config add antwork --url https://api.antwork.io/mcp --auth oauth
Cursor
- 1.Un clic — Cursor se abrirá y te pedirá confirmar la instalación.
Un solo clic — tu cliente se abrirá y te pedirá confirmar la instalación.
VS Code
- 1.Un clic — VS Code se abrirá y te pedirá confirmar.
Un solo clic — tu cliente se abrirá y te pedirá confirmar la instalación.
Windsurf
- 1.Abre Windsurf → Ajustes → Servidores MCP → Editar configuración.
- 2.Pega este fragmento dentro del objeto mcpServers.
{
"mcpServers": {
"antwork": {
"url": "https://api.antwork.io/mcp"
}
}
}Gemini CLI
- 1.Ejecuta este comando en tu terminal.
- 2.Luego ejecuta /mcp auth antwork dentro de la CLI de Gemini.
$ gemini mcp add --transport http antwork https://api.antwork.io/mcp
Autenticación
El servidor MCP de Antwork implementa OAuth 2.1 con PKCE y registro dinámico de clientes (RFC 7591), de forma que los clientes MCP pueden conectarse sin que tengas que pre-registrarlos uno a uno. Los tokens son scoped, revocables y emitidos por cliente.
Scopes OAuth
Cada tool requiere uno de cuatro scopes. La pantalla de consentimiento lista los scopes que un cliente solicita para que puedas aprobarlos o denegarlos de forma granular.
| read | Read | Lee posts, cuentas sociales, voice profiles, configuración del workspace y analítica. Sin mutaciones. |
| write | Write | Crear / editar / borrar borradores y posts programados. Mutar la biblioteca de medios y la configuración del workspace. No publica. |
| publish | Destructive | Publicar posts en las plataformas sociales conectadas y programarlos para publicación futura. Solo se concede cuando el usuario aprueba explícitamente. |
| media | Write | Subir y adjuntar imágenes / vídeo / PDFs a posts. Separado de write para permitir consentimiento granular. |
Ciclo de vida del token
- ›Los access tokens son JWTs de corta duración (TTL de 5 minutos).
- ›Los refresh tokens son de larga duración y se guardan en el servidor. Grant
refresh_tokenestándar. - ›Revoca vía el endpoint estándar
/oauth/revoke(RFC 7009) o desde Settings → Connected AIs en tu dashboard de Antwork. La revocación invalida el refresh token al instante. - ›Cada cliente MCP (Claude desktop, Claude Code, Cursor, …) recibe su propio token. Revocar uno no afecta a los demás.
Endpoints de discovery
- ›
GET /.well-known/oauth-protected-resource— metadatos de recurso RFC 9728. - ›
GET /.well-known/oauth-authorization-server— metadatos del authorization server RFC 8414. - ›
POST /oauth/register— registro dinámico de clientes RFC 7591. - ›
POST /oauth/token— grants authorization-code y refresh-token. PKCE S256 requerido. - ›
POST /oauth/revoke— revocación de tokens RFC 7009.
Referencia de tools
Antwork expone 35 tools MCP en siete categorías. Las tools read-only nunca mutan estado; las destructivas (publish, delete, disconnect) lanzan confirmación explícita en clientes que respetan la anotación destructiveHint.
Identidad y workspaces
| whoami | Read | Perfil del usuario autenticado. |
| list_workspaces | Read | Lista todos los workspaces a los que pertenece el usuario. Muestra el flag isDefault. |
| set_default_workspace | Write | Define o limpia el workspace por defecto para que las siguientes llamadas omitan workspace_id. |
| create_workspace | Write | Crea un nuevo workspace propiedad del usuario autenticado. |
| get_workspace_settings | Read | Identidad de marca, content guidelines, audiencia objetivo y preferencias por plataforma. |
| update_workspace_identity | Destructive | Renombra un workspace o actualiza su descripción. |
| update_workspace_settings | Destructive | Muta las content guidelines y settings de marca a nivel de workspace. |
Cuentas sociales y voice profiles
| list_social_accounts | Read | Todas las cuentas sociales conectadas con salud, expiración y plataforma. |
| get_connection_urls | Read | URLs OAuth para conectar nuevas cuentas sociales. |
| disconnect_social_account | Destructive | Revoca una cuenta social conectada; los tokens se borran del servidor. |
| get_voice_profiles | Read | Tono, vocabulario y frases recurrentes por plataforma, aprendidos del contenido existente. |
| get_voice_profile | Write | Obtiene un voice profile y lo refresca desde la cuenta en vivo si está obsoleto. |
| fetch_platform_posts | Read | Trae posts recientes de una plataforma conectada (usado para refrescar voice profiles). |
Posts — lectura
| list_posts | Read | Lista borradores, programados, publicados y fallidos. Filtrable por estado y plataforma. |
| search_posts | Read | Búsqueda full-text en el cuerpo del post, hashtags y copy por plataforma. |
| get_post | Read | Un post con payload completo (texto, media, estado, URLs por plataforma). |
| get_post_history | Read | Histórico diario de métricas de un post publicado — likes / comentarios / shares / impressions. |
Posts — escritura
| create_post | Write | Crea un borrador. No publica ni programa por sí mismo — encadena con schedule_post o publish_post. |
| update_post | Write | Muta cualquier campo de un post — texto, plataformas, hashtags, media, hora programada, copy por plataforma. |
| duplicate_post | Write | Clona un post existente en un borrador nuevo. |
| delete_post | Destructive | Soft-delete de un post. Para publicados, encola también el borrado en la plataforma cuando el conector lo soporta. |
Posts — publicación
| publish_post | Destructive | Publica un borrador al instante en cada plataforma configurada. Espera hasta ~25 segundos para estado terminal y devuelve URLs por plataforma. |
| schedule_post | Destructive | Programa un borrador para un timestamp futuro. El servidor exige que la hora esté en el futuro. |
| retry_failed_post | Destructive | Reintenta una publicación que falló — útil cuando un token se ha refrescado o se han limpiado rate limits. |
Analítica y planificación
| get_performance | Read | Totales agregados de engagement del workspace en una ventana dada. |
| get_engagement_history | Read | Series temporales diarias de engagement del workspace. |
| get_optimal_posting_times | Read | Ventanas de publicación sugeridas por plataforma inferidas del engagement histórico. |
| refresh_post_metrics | Write | Llama a las APIs de las plataformas en vivo para posts concretos y refresca las métricas cacheadas. Lento pero al minuto — usa get_performance para preguntas amplias. |
| get_calendar | Read | Posts programados y publicados agrupados por fecha. Renderiza como calendario interactivo en clientes con MCP Apps. |
Media
| list_media | Read | Biblioteca de medios del workspace — imágenes, vídeo, PDFs. |
| get_media | Read | Un item de media con URL de descarga y metadatos por mime-type. |
| upload_media | Write | Ingesta un fichero desde una URL pública (p.ej. imagen generada por IA alojada en otro sitio). Es la ruta visible al LLM; el selector Add media del post-card usa upload_media_inline internamente con base64. |
| attach_media | Write | Adjunta items de media a un borrador. |
| delete_media | Destructive | Soft-delete de un item de media; no afecta a posts que ya lo referencian. |
MCP Apps (UI interactiva)
Varias tools renderizan iframes interactivos cuando se llaman desde un host que soporta la spec MCP Apps (claude.ai, Claude Code ≥ 0.5). El iframe llama de vuelta al mismo servidor MCP por el host bridge — sin auth adicional.
- ›
list_posts,search_posts→ posts-table: lista filtrable con modal de detalle inline que edita + publica sin salir del chat. - ›
get_post,create_post,update_post,duplicate_post→ post-preview: tarjeta completa del post con tabs por plataforma, editor inline, acciones de schedule/publish, selector Add media (subida + reuso desde la biblioteca) y enlaces "View on X" por cuenta una vez publicado. - ›
get_calendar→ calendar: vistas mensual / semanal de posts programados + publicados. - ›
list_social_accounts,get_connection_urls,disconnect_social_account→ connections-panel: salud por cuenta, reconectar, desconectar; cambiar de workspace desde su header propaga el cambio a los demás iframes. - ›
list_media,get_media→ media-gallery: grid de miniaturas de la biblioteca del workspace — reutiliza media entre posts sin volver a subirla.
Los clientes que no soportan MCP Apps siguen recibiendo el output crudo de las tools — la UI es solo una capa de presentación.
Solución de problemas
"Bearer token required" / 401 en cada llamada
El cliente MCP no ha completado OAuth o su refresh token ha sido revocado. En claude.ai: Settings → Connectors → Antwork → Disconnect, y vuelve a conectar. En Claude Code: /mcp → elige antwork → Re-authenticate.
La publicación falla en una plataforma pero funciona en las demás
publish_post devuelve el estado por plataforma. La causa más común es una cuenta social cuyo token expiró o se revocó desde la plataforma. Ejecuta list_social_accounts para encontrar cuentas con problemas y reconéctalas vía la URL de consentimiento que devuelve get_connection_urls, luego llama a retry_failed_post.
"El post se queda como DRAFT después de pedir programarlo"
create_post solo crea un borrador. Tu asistente debe encadenar con schedule_post(post_id, scheduled_for) o publish_post(post_id). El Antwork Poster Skill (github.com/iker-gonzalez/antwork-skills) codifica este two-step para que Claude no lo salte.
El post fue a la cuenta equivocada (múltiples cuentas por plataforma)
Cuando un workspace tiene más de una cuenta conectada en una plataforma (p. ej. dos páginas de LinkedIn), Antwork elige la primera cuenta sana por defecto. Para apuntar a una cuenta concreta, pasa su accountId en el array platforms del post en lugar del nombre de la plataforma. El Antwork Poster Skill también pide al asistente que confirme antes de publicar.
La subida de media se descarta silenciosamente
attach_media requiere una URL de Firebase Storage — pasa primero las URLs externas por upload_media para que se almacenen en el storage del workspace. El publisher rechaza URLs que no sean de storage.
Rate limits
Antwork aplica un soft rate limit de 60 llamadas a tools / minuto / workspace. Si lo alcanzas, devuelve HTTP 429 con cabecera Retry-After. Las operaciones de publicación no tienen rate limit en la capa MCP, pero las plataformas downstream tienen los suyos (LinkedIn ~150 posts/día, X ~300 posts/3h).
Origin bloqueado / error CORS en clientes basados en navegador
El servidor valida la cabecera Origin en Streamable HTTP según la spec MCP. Los orígenes permitidos son los hosts first-party de Antwork, claude.ai, claude.com, console.anthropic.com y localhost. Si alojas un cliente propio en otro origen, contáctanos para añadirlo a la lista.
Límites y cuotas
- ›Llamadas a tools: 60 / minuto / workspace (soft limit; HTTP 429 con
Retry-After). - ›Subida de media: 25 MB por fichero. Se aceptan imágenes, vídeo (mp4/mov/webm) y PDFs.
- ›Posts: sin tope en Antwork; las plataformas downstream aplican los suyos (LinkedIn ~150/día, X ~300/3h, otras varían).
- ›Posts programados: horizonte máximo de 1 año.
- ›Tokens OAuth: access token con TTL de 5 min, refresh token revocable en cualquier momento.
Las cuotas duras (generación de imágenes, refresco de voice profiles, brand extraction) están ligadas al plan. Los planes Pro y Business tienen asignaciones mensuales superiores; consulta precios para los valores actuales.
Changelog
v1.0 — Mayo 2026
Primera versión pública, junto a la presentación al directorio de conectores de Anthropic.
- ›35 tools MCP repartidas en identidad, cuentas sociales, voice profiles, posts, publicación, analítica y media.
- ›Cuatro MCP Apps: posts-table, post-preview, calendar, connections-panel.
- ›OAuth 2.1 con PKCE, registro dinámico de clientes (RFC 7591), revocación de tokens (RFC 7009).
- ›
accountResultspor plataforma devueltos porpublish_postyget_post, de forma que los workspaces multi-cuenta muestran la cuenta publicadora correcta en la UI.
Contacto
¿Preguntas, ayuda con la integración o bugs? Escríbenos.
Antwork · España · UE