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)
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
workspaceIdopcional, 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 entorno | Descripción | Valor predeterminado |
|---|---|---|
POSTMCPAI_API_KEY | Requerida. Tu clave API secreta del panel de PostMCP AI. | None |
POSTMCPAI_API_URL | Raíz de la API backend. Solo se configura para un backend autohospedado o local. | https://api.postmcpai.com |
POSTMCPAI_PROJECT_ID | Opcional. 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 |
PORT | Configurar 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 herramienta | Descripción | Requerido | Opcional |
|---|---|---|---|
get_user_info | Usuario autenticado: plan, saldo de créditos, tokens de IA, espacio de trabajo activo y rol. | — | workspaceId |
list_workspaces | Cada espacio de trabajo al que pertenece el usuario, con ids, roles y plataformas conectadas. | — | — |
get_connected_accounts | Perfiles sociales conectados con el profileId necesario para dirigirse a ellos. | — | workspaceId |
get_account_health | Conexiones cuyo token expiró o está cerca de expirar y necesitan reconexión. | — | workspaceId |
list_brandings | Kits de marca: tono, audiencia, palabras clave, imágenes de estilo. | — | workspaceId |
list_posts | Cola de publicaciones, primero las más recientes, con estado de entrega por perfil, paginación y conteos. | — | status, page, limit, all |
get_post | Una publicación completa: qué perfiles la recibieron, URLs en vivo y errores por perfil. | id | — |
Escritura
| Nombre de la herramienta | Descripción | Requerido | Opcional |
|---|---|---|---|
preflight_post | Prueba en seco: límites de caracteres, perfiles no conectados, medios faltantes, costo de créditos. No publica nada. | content | targetAccounts, platforms, mediaUrl |
create_post | Borrador, programar o publicar inmediatamente una publicación en perfiles nombrados. Cada perfil se convierte en su propia publicación con su propio id. | content | targetAccounts, variants, platforms, publishImmediately, scheduleDate, scheduleTime, timezone, mediaUrl |
publish_post_now | Publicar una publicación existente inmediatamente; también reintenta una publicación fallida, omitiendo perfiles entregados. | id | — |
update_post | Actualizar contenido, perfiles objetivo, programación, medios o estado. | id | content, targetAccounts, platforms, scheduleDate, scheduleTime, timezone, mediaUrl, status |
reschedule_post | Mover una publicación a un nuevo espacio, conservando el texto y los objetivos. Reactiva publicaciones fallidas y borradores. | id, scheduleDate, scheduleTime | timezone |
reset_stuck_post | Liberar una publicación atascada a mitad de publicación para que pueda reintentarse. Los perfiles entregados conservan su estado. | id | force |
delete_post | Cancelar y eliminar una publicación programada o fallida. | id | — |
generate_image | Generar una imagen de publicación y devolver su URL alojada para mediaUrl. Gasta tokens de IA. | prompt | brandingId, styleImageUrl |
Procesamiento por lotes
| Nombre de la herramienta | Descripción | Requerido | Opcional |
|---|---|---|---|
multicall | Ejecutar 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. | calls | stopOnError, 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.
targetAccountsenvía solo a los perfiles nombrados;platformsdistribuye a todos los perfiles conectados en cada plataforma. - Una publicación por perfil.
create_postalmacena 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 detargetAccounts[].contento el mapavariants. - Siempre pasa
timezonecuando 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_postinforma 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
- Abre Cursor Settings -> Features -> MCP.
- Haz clic en + Add New MCP Server.
- Completa los detalles:
- Name:
postmcpai - Type:
command - Command:
npx -y @postmcpai/server
- Name:
- En Environment Variables, agrega:
POSTMCPAI_API_KEY=pmcp_sec_your_secret_api_key_here
- 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:
- 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 - Claude.ai descubrirá las capacidades de las herramientas a través de
/mcpy se autenticará sin problemas. - 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 encabezadox-project-id); las llamadas de herramientas individuales aún pueden anular cualquiera de los dos conworkspaceId.
4. ChatGPT Custom GPTs (Acciones REST)
- Al configurar una Custom GPT Action, especifica la URL de tu servidor (por ejemplo,
https://your-hosted-domain.com). - Importa el esquema OpenAPI directamente desde:
https://your-hosted-domain.com/openapi.json - Configura la autenticación como API Key (Header Name:
Authorizationox-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.