PostMCP AI

Publica y programa publicaciones en LinkedIn, X, Facebook, Instagram, Threads, Bluesky y YouTube Shorts con una sola clave de API.

Documentación

Servidor PostMCP AI Model Context Protocol (MCP)

npm version License: MIT MCP Compatible

Servidor oficial PostMCP AI Model Context Protocol (MCP). Conecta tus pipelines de publicación en redes sociales directamente con asistentes de IA, aplicaciones de escritorio, flujos de trabajo de IDE y entornos web como Claude Desktop, Claude.ai, Cursor y ChatGPT Custom GPTs.

Las plataformas compatibles incluyen LinkedIn, X (Twitter), Facebook, Instagram, Threads, Bluesky y YouTube Shorts.


🚀 Características y capacidades

  • 🤖 15 herramientas integradas: Espacios de trabajo, cuentas conectadas y su estado de tokens, kits de marca, la cola de publicaciones, verificaciones previas al vuelo, crear/programar/reprogramar/publicar/reintentar/eliminar, y generación de imágenes.
  • Modos de transporte duales: Modo Stdio nativo (para aplicaciones de escritorio locales e IDEs) y modo HTTP transmisible (para servicios web, Claude.ai y conectores remotos).
  • 🔑 Autenticación flexible: Detecta automáticamente la clave API desde variables de entorno (POSTMCPAI_API_KEY), parámetros de consulta de URL (?apikey=YOUR_KEY) o encabezados de autorización HTTP (x-api-key, Bearer token).
  • 🗂️ Consciente de múltiples espacios de trabajo: La clave API lleva su propio espacio de trabajo, por lo que una clave simple es suficiente. Para actuar sobre otro, cada herramienta acepta un workspaceId opcional, también configurable por conexión (?projectId=..., x-project-id) o por proceso (POSTMCPAI_PROJECT_ID).
  • 🤖 Compatible con ChatGPT Actions: Incluye un generador de especificaciones OpenAPI 3.0 integrado (/openapi.json) y endpoints REST (/api/tools/:name) para la integración con ChatGPT Custom GPT.
  • 🔒 Soporte OAuth 2.0 y RFC 9728: Anuncia metadatos del servidor de autorización PKCE para un registro dinámico de clientes sin interrupciones con Claude.ai.

📁 Arquitectura del repositorio

mcp-server/
├── bin/
│   └── cli.js            # Executable CLI entry point (Stdio / HTTP mode runner)
├── src/
│   ├── config.js         # Centralized configuration & environment loader
│   ├── client.js         # Backend API client, API key & workspace extraction
│   ├── platforms.js      # Platform limits, credit pricing & post cost helper
│   ├── tools/
│   │   ├── definitions.js# MCP tool JSON schemas & parameter specifications
│   │   ├── handlers.js   # MCP tool execution handlers
│   │   └── index.js      # Tool definitions aggregator
│   ├── server.js         # MCP Server instance factory
│   ├── routes/
│   │   ├── oauth.js      # OAuth 2.0 & RFC 9728 discovery endpoints
│   │   ├── openapi.js    # OpenAPI 3.0 schema & ChatGPT REST endpoints
│   │   ├── mcpHttp.js    # MCP Streamable HTTP transport (/mcp)
│   │   └── health.js     # Health check & system metadata endpoints
│   ├── app.js            # Express application factory
│   └── index.js          # Main library entry point
├── index.js              # Executable wrapper script
├── package.json
└── README.md

⚙️ Configuración del entorno

Variable de entornoDescripciónValor predeterminado
POSTMCPAI_API_KEYRequerida. Tu clave API secreta del panel de PostMCP AI.None
POSTMCPAI_API_URLRaíz de la API backend. Solo se configura para un backend autohospedado o local.https://api.postmcpai.com
POSTMCPAI_PROJECT_IDOpcional. Anula el espacio de trabajo al que está vinculada la clave API. A su vez, es anulada por el workspaceId de una llamada.El espacio de trabajo desde el que se emitió la clave API
PORTConfigurar esto inicia el servidor en Modo HTTP transmisible remoto.None (El valor predeterminado es Modo Stdio)

🛠️ Referencia de herramientas MCP

Cada herramienta a continuación también acepta un workspaceId opcional (de list_workspaces) para actuar sobre un espacio de trabajo específico.

Lectura

Nombre de la herramientaDescripciónRequeridoOpcional
get_user_infoUsuario autenticado: plan, saldo de créditos, tokens de IA, espacio de trabajo activo y rol.workspaceId
list_workspacesCada espacio de trabajo al que pertenece el usuario, con ids, roles y plataformas conectadas.
get_connected_accountsPerfiles sociales conectados con el profileId necesario para dirigirse a ellos.workspaceId
get_account_healthConexiones cuyo token expiró o está cerca de expirar y necesitan reconexión.workspaceId
list_brandingsKits de marca: tono, audiencia, palabras clave, imágenes de estilo.workspaceId
list_postsCola de publicaciones, primero las más recientes, con estado de entrega por perfil, paginación y conteos.status, page, limit, all
get_postUna publicación completa: qué perfiles la recibieron, URLs en vivo y errores por perfil.id

Escritura

Nombre de la herramientaDescripciónRequeridoOpcional
preflight_postPrueba en seco: límites de caracteres, perfiles no conectados, medios faltantes, costo de créditos. No publica nada.contenttargetAccounts, platforms, mediaUrl
create_postBorrador, programar o publicar inmediatamente una publicación en perfiles nombrados. Cada perfil se convierte en su propia publicación con su propio id.contenttargetAccounts, variants, platforms, publishImmediately, scheduleDate, scheduleTime, timezone, mediaUrl
publish_post_nowPublicar una publicación existente inmediatamente; también reintenta una publicación fallida, omitiendo perfiles entregados.id
update_postActualizar contenido, perfiles objetivo, programación, medios o estado.idcontent, targetAccounts, platforms, scheduleDate, scheduleTime, timezone, mediaUrl, status
reschedule_postMover una publicación a un nuevo espacio, conservando el texto y los objetivos. Reactiva publicaciones fallidas y borradores.id, scheduleDate, scheduleTimetimezone
reset_stuck_postLiberar una publicación atascada a mitad de publicación para que pueda reintentarse. Los perfiles entregados conservan su estado.idforce
delete_postCancelar y eliminar una publicación programada o fallida.id
generate_imageGenerar una imagen de publicación y devolver su URL alojada para mediaUrl. Gasta tokens de IA.promptbrandingId, styleImageUrl

Procesamiento por lotes

Nombre de la herramientaDescripciónRequeridoOpcional
multicallEjecutar hasta 20 de las herramientas anteriores en una sola solicitud, en orden. Los nombres de las herramientas se validan antes de que se ejecute cualquier cosa, por lo que un error tipográfico no puede dejar medio lote escrito. No se puede anidar.callsstopOnError, workspaceId
{
  "calls": [
    { "id": "img", "tool": "generate_image", "arguments": { "prompt": "launch banner" } },
    {
      "tool": "create_post",
      "arguments": {
        "content": "We shipped it 🚀",
        "targetAccounts": [
          { "platform": "linkedin", "profileId": "lin_7741903" },
          { "platform": "twitter", "profileId": "tw_1293847", "content": "We shipped it 🚀" }
        ],
        "scheduleDate": "2026-09-01",
        "scheduleTime": "10:00",
        "timezone": "Asia/Kolkata"
      }
    }
  ],
  "stopOnError": true
}

La respuesta incluye una entrada por llamada — { id, tool, ok, result } o { id, tool, ok: false, error } — además de conteos y, cuando una falla detiene el lote, las llamadas que se omitieron.

Notas para clientes

  • Dirígete a perfiles, no a plataformas. targetAccounts envía solo a los perfiles nombrados; platforms distribuye a todos los perfiles conectados en cada plataforma.
  • Una publicación por perfil. create_post almacena una publicación separada por perfil objetivo, para que cada una pueda editarse, reintentarse o cancelarse por separado. Proporciona texto por perfil a través de targetAccounts[].content o el mapa variants.
  • Siempre pasa timezone cuando el tiempo del reloj importa. El backend usa UTC por defecto, por lo que una publicación a las 9:00 IST programada sin zona se publica a las 14:30 IST.
  • Créditos se cobran por perfil al que se entrega (X/Twitter cuesta 5, otros 1), más un recargo único de 50 créditos cuando el texto contiene un enlace. preflight_post informa esto antes de que te comprometas.

💻 Guías de integración para clientes

1. Aplicación de escritorio Claude (Modo Stdio)

Agrega la configuración a continuación a tu archivo de configuración de Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "postmcpai": {
      "command": "npx",
      "args": ["-y", "@postmcpai/server"],
      "env": {
        "POSTMCPAI_API_KEY": "pmcp_sec_your_secret_api_key_here"
      }
    }
  }
}

2. IDE Cursor

  1. Abre Cursor Settings -> Features -> MCP.
  2. Haz clic en + Add New MCP Server.
  3. Completa los detalles:
    • Name: postmcpai
    • Type: command
    • Command: npx -y @postmcpai/server
  4. En Environment Variables, agrega:
    • POSTMCPAI_API_KEY = pmcp_sec_your_secret_api_key_here
  5. Haz clic en Save.

3. Claude.ai y conectores web remotos (HTTP transmisible / Modo SSE)

Aloja este servidor en cualquier servicio en la nube (Render, Railway, Fly.io, Vercel) o tuneliza tu máquina local usando ngrok.

Iniciar en modo HTTP:

export POSTMCPAI_API_KEY="pmcp_sec_your_secret_api_key_here"
export PORT=3000

npm run start:sse

Conectarse a Claude.ai:

  1. Proporciona tu URL MCP pública con tu clave API adjunta: https://your-hosted-domain.com/mcp?apikey=pmcp_sec_your_secret_api_key_here
  2. Claude.ai descubrirá las capacidades de las herramientas a través de /mcp y se autenticará sin problemas.
  3. Esa URL es todo lo que necesitas: la clave está vinculada al espacio de trabajo desde el que se emitió, por lo que las herramientas actúan en ese espacio de trabajo sin que se les indique. Para apuntar la misma clave a un espacio de trabajo diferente, agrega &projectId=YOUR_WORKSPACE_ID (o envía un encabezado x-project-id); las llamadas de herramientas individuales aún pueden anular cualquiera de los dos con workspaceId.

4. ChatGPT Custom GPTs (Acciones REST)

  1. Al configurar una Custom GPT Action, especifica la URL de tu servidor (por ejemplo, https://your-hosted-domain.com).
  2. Importa el esquema OpenAPI directamente desde: https://your-hosted-domain.com/openapi.json
  3. Configura la autenticación como API Key (Header Name: Authorization o x-api-key).

5. Uso programático de la biblioteca Node.js

También puedes usar @postmcpai/server como biblioteca en tus propios backends Node.js:

import { createServer, createExpressApp, makeBackendRequest } from "@postmcpai/server";

// Create a standalone MCP Server instance
const mcpServer = createServer(() => process.env.POSTMCPAI_API_KEY);

// Or create an Express app with all remote routes attached
const app = createExpressApp();
app.listen(3000);

🧪 Pruebas locales y desarrollo

# Clone the repository
git clone https://github.com/postmcp/postmcp-mcp-server.git
cd postmcp-mcp-server

# Install dependencies
npm install

# Start in Stdio Mode
npm start

# Start in HTTP Mode with hot reload
npm run dev

📄 Licencia

Distribuido bajo la Licencia MIT. Copyright © 2026 PostMCP AI.