Skip to main content
Glama
diegolm2012-creator

Social Broadcast MCP

Social Broadcast MCP

Servidor MCP open source (MIT) para publicar en redes sociales (Facebook, Instagram, YouTube) usando las APIs oficiales de cada plataforma, con tus propias credenciales OAuth.

Sin servicio central. Sin planes. Sin límites artificiales. Sin intermediarios de pago.

¿Por qué existe?

Las herramientas SaaS (SocialCannon, PostFast, Buffer...) cobran una suscripción mensual y ponen límites (cuentas, posts, subidas de media). Este proyecto hace lo mismo —publicar desde un agente de IA (Hermes, Claude, etc.)— pero cada usuario conecta sus propias cuentas con sus propias apps de desarrollador. Gratis para siempre.

⚠️ Diferencia clave con los SaaS: ellos ya tienen apps aprobadas por Meta/Google con revisión completa. Aquí tú creas tu app (gratis) y la usas para tus propias cuentas. Eso es válido para uso personal/negocio propio, y evita la revisión de Meta (App Review) que solo se exige para acceso público a cuentas de terceros.

Related MCP server: Meta Social MCP

Plataformas

Plataforma

Estado

API

Media

Notas

Facebook

✅

Meta Graph API

imagen, video

Página o perfil con pages_manage_posts

Instagram

✅

Meta Graph API

imagen, video, Reels, Stories

Requiere cuenta Business/Creator vinculada a una página FB

YouTube

✅

YouTube Data API v3

video

Sube con visibilidad private/unlisted/public

TikTok

🔜

Content Posting API

video

Requiere auditoría de TikTok (2-6 semanas); patrón documentado en docs/

X/Twitter

🔜

API v2

imagen, video

El free tier de X es muy limitado; documentado en docs/

Instalación

git clone https://github.com/tu-usuario/social-broadcast-mcp.git
cd social-broadcast-mcp
npm install
npm run build

Configuración en Hermes (o cualquier cliente MCP)

# ~/.hermes/config.yaml (o config del perfil)
mcp_servers:
  social-broadcast:
    command: "node"
    args: ["/ruta/a/social-broadcast-mcp/dist/index.js"]

O en cualquier cliente MCP compatible:

{
  "mcpServers": {
    "social-broadcast": {
      "command": "node",
      "args": ["/ruta/a/social-broadcast-mcp/dist/index.js"]
    }
  }
}

Uso

1. Conectar Facebook + Instagram

Necesitas crear una app en developers.facebook.com (ver docs/SETUP_META.md) y obtener:

  • App ID (clientId)

  • App Secret (clientSecret, solo necesario en modo desarrollo)

Luego, desde el agente:

connect_meta(clientId: "TU_APP_ID", clientSecret: "TU_APP_SECRET")

Se abre el navegador → autorizas con tu cuenta → las cuentas quedan guardadas localmente en ~/.social-broadcast-mcp/.

2. Conectar YouTube

Crea un proyecto en Google Cloud Console con la YouTube Data API v3 (ver docs/SETUP_YOUTUBE.md):

connect_youtube(clientId: "TU_CLIENT_ID", clientSecret: "TU_CLIENT_SECRET")

3. Ver cuentas conectadas

list_accounts()

4. Publicar

publish_post(
  accountId: "fb:533433607139839",
  content: "🌀 CREA TU PROPIO GONG 🌀\nUn gong hecho por ti, para ti, como tú.",
  mediaUrls: ["https://tudominio.com/imagen.jpg"],
  platformOptions: { "mediaType": "REELS" }  // para Reels de IG
)

Para programar en vez de publicar ya, añade scheduledAt: "2026-09-01T18:00:00+01:00".

Nota sobre media: la API acepta URLs públicas. Para subir archivos locales, alójalo en cualquier sitio accesible (un bucket S3/GCS, tu web, o un servidor local expuesto) y pasa su URL. Un helper de subida directa está en el roadmap.

Documentación

Seguridad

  • Los tokens se guardan localmente en ~/.social-broadcast-mcp/ con permisos 0600.

  • Nunca se envían a ningún servidor externo.

  • No hay telemetría. No hay analytics. No hay nada que llame a casa.

  • Revisa src/auth/store.ts para ver exactamente qué se guarda.

Licencia

MIT — libre para usar, copiar, modificar y redistribuir. Hecho para la comunidad, a partir de la experiencia real publicando el calendario del Templo del Gong (Vilagarcía de Arosa).

Disclaimer

Este proyecto no está afiliado con Meta, Google, TikTok ni X Corp. Las marcas son de sus respectivos dueños. El uso de las APIs está sujeto a los términos de servicio de cada plataforma.

Available Tools

6 tools
connect_metaA

Inicia el flujo OAuth para conectar Facebook e Instagram. Requiere clientId (y clientSecret opcional) de tu app en developers.facebook.com. Abre el navegador para autorizar.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopesNoPermisos solicitados (default: pages_show_list, pages_manage_posts, instagram_content_publish)
clientIdYesApp ID de tu app en developers.facebook.com
clientSecretNoApp Secret (solo si la app está en modo desarrollo)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose an important, non-obvious action: 'Abre el navegador para autorizar', indicating an interactive flow. However, it does not explain what happens after authorization (success/failure, token storage, output, or side effects), so transparency is partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no redundant details: purpose, prerequisites, and behavior. The most important information is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for selecting the tool, but because there is neither an output schema nor annotations, it leaves unclear what the tool returns and how the agent can tell the OAuth flow succeeded after opening the browser. This is a noticeable gap for an OAuth operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents 100% of the parameters, including default scopes and the exact meaning of clientId/clientSecret. The description adds no significant semantic value beyond repeating that clientId is required and clientSecret is optional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Starts with a specific verb and resource: 'Inicia el flujo OAuth para conectar Facebook e Instagram'. This clearly separates the tool from siblings such as connect_youtube, and the platform scope is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the purpose of the tool and the main prerequisite: need a Facebook app with clientId and optional clientSecret. It does not explicitly exclude alternatives like connect_youtube or mention when not to use the tool, but the platform distinction is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

connect_youtubeB

Inicia el flujo OAuth para conectar YouTube. Requiere clientId y clientSecret de tu proyecto en Google Cloud Console.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopesNo
clientIdYesOAuth Client ID de Google Cloud
clientSecretYesOAuth Client Secret de Google Cloud

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

La descripción comunica que se trata de un flujo OAuth y que requiere credenciales de Google Cloud, lo cual es contexto de comportamiento relevante. Sin embargo, no se dice qué devuelve la herramienta ni se describe el flujo posterior (URL de autorización, interacción del usuario, finalización), y no hay annotations que compensen.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Es concisa: dos oraciones, con la acción al frente y el requisito principal inmediatamente después. No incluye relleno ni información redundante.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Una herramienta con un flujo OAuth debería indicar qué ocurre después de invocarla, pero la descripción solo menciona 'inicia el flujo' y sus credenciales. No hay output schema, así que la descripción debería compensar esa falta, explicando por ejemplo si devuelve una URL de autorización o un estado.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

El schema ya documenta clientId y clientSecret; la descripción agrega la procedencia ('tu proyecto en Google Cloud Console'). El parámetro 'scopes' no tiene descripción en el schema y la descripción no aporta ninguna orientación sobre él, dejando un vacío en la cobertura semántica.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

La descripción usa un verbo claro ('Inicia el flujo OAuth') y un recurso específico ('conectar YouTube'), por lo que se entiende bien qué hace la herramienta. No diferencia explícitamente de conect_meta o refresh_accounts, pero el nombre de la plataforma YouTube lo distingue parcialmente de los hermanos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No se indica cuándo usar esta herramienta frente a alternativas como refresh_accounts o connect_meta. Se menciona únicamente el requisito de credenciales, pero no hay criterios para elegir entre herramientas ni advertencias de uso.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_accountsB

Lista las cuentas de redes sociales conectadas

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNo

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden of behavioral disclosure. 'Lista' implies a read-only operation, but the description does not mention that the `platform` parameter filters results, nor any authentication/refresh behavior. It adds minimal behavioral context beyond the literal meaning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler or redundancy. It is appropriately concise for its simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, but the description is complete only at a high level. It lacks parameter filtering details, return expectations (no output schema), and explicit alternative routing, leaving a partially adequate but not fully self-sufficient description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not mention the optional `platform` parameter at all, and the schema provides no parameter descriptions (0% coverage). The enum values improve clarity, but the tool description itself fails to explain that the list can be filtered by platform.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Lista') and resource ('cuentas de redes sociales conectadas'), clearly indicating it returns connected social media accounts. It also places a scope—'conectadas'—which helps distinguish it from list_platforms and connect_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance about when to use this tool versus the sibling tools such as list_platforms, connect_meta, or refresh_accounts. An agent must infer the intended use from the tool name and the minimal description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_platformsA

Lista las plataformas soportadas y sus capacidades

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No hay anotaciones, por lo que la descripción asume toda la carga. 'Lista' implica una operación de solo lectura sin efectos secundarios, pero no se declara explícitamente ni se detalla el formato o alcance de la respuesta. Es suficiente para una herramienta lista muy simple, pero no aporta transparencia rica.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

La descripción es una sola oración completa y sin relleno. Cada palabra aporta información sobre el resultado que el agente obtendrá al llamar a la herramienta.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Para una herramienta de listado sin parámetros y sin esquema de salida, la descripción es suficientemente completa: indica qué recursos devuelve (plataformas soportadas y sus capacidades). No hay prerrequisitos ni configuraciones adicionales que deban documentarse.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

La herramienta no tiene parámetros, por lo que aplica el punto de referencia 4. La descripción no necesita explicar semántica de parámetros y el esquema vacío ya comunica que la invocación requiere argumentos.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

La descripción identifica un verbo específico ('Lista') y el recurso ('las plataformas soportadas'), además del alcance ('sus capacidades'). Distingue claramente esta herramienta de la hermana list_accounts, que opera sobre cuentas y no sobre plataformas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

El contexto de uso está implícito: llamar a esta herramienta para obtener plataformas y capacidades. Sin embargo, no se mencionan alternativas ni condiciones de exclusión, como en qué casos convendría usar list_accounts o refresh_accounts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_postB

Publica o programa un post en una cuenta conectada

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesTexto del post
accountIdYesID de la cuenta (de list_accounts)
mediaUrlsNoURLs públicas de medios (imagen/video)
scheduledAtNoFecha ISO para programar (omitir para publicar ya)
platformOptionsNoOpciones específicas de plataforma (mediaType, title, privacyStatus...)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It does disclose the essential behavior: publishing or scheduling a post on a connected account, and it implies side effects such as content becoming visible. It does not mention irreversibility, rate limits, or what happens for invalid/expired accounts, but the core behavior is not hidden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and has no filler sentences, which is good for efficiency. However, the phrasing 'Publica el programa un post' appears malformed and may confuse an agent despite the short length, so it cannot be considered a polished, high-quality description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema gives strong parameter coverage and references list_accounts for accountId, which helps. But there is no output schema, no annotations, and the description does not address the workflow around connected accounts, scheduling, or platform-specific options. It is adequate for a straightforward call but leaves gaps for more complex use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters, so the baseline is 3. The description does not add parameter-level meaning beyond what the schema provides, but that is acceptable because the schema already documents content, accountId, mediaUrls, scheduledAt, and platformOptions adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the core action: publishing/scheduling a post on a connected account, using a specific verb and resource. It is distinguishable from the sibling tools, which handle listing, connecting, and refreshing accounts, although the wording 'Publica el programa un post' has a grammatical issue that slightly muddies the intent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'en una cuenta conectada' implies the tool should only be used after an account is connected, which gives some contextual guidance. However, it does not explicitly mention when to use this over alternatives, nor does it point to prerequisites like list_accounts for obtaining the correct accountId.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_accountsB

Refresca la lista de cuentas de una plataforma ya conectada

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosing behavioral traits. It only states that it refreshes an account list, without saying whether it overwrites local data, requires a valid token, performs a network call, or is safe to invoke repeatedly. This is a noticeable gap for a tool that likely synchronizes external account state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short, front-loaded sentence with no filler or redundant information. Every word earns its place, and the important verb and resource appear at the start.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity—one parameter, no output schema, no annotations—the description covers the core purpose and precondition. However, it leaves unspecified the actual effect on existing account data and does not clarify how this differs from 'list_accounts' in practice, so completeness is adequate but not rich.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter, 'platform', and it has an enum that constrains valid values. Schema description coverage is 0%, but the description adds the key semantic that the platform must already be connected. This is minimally sufficient, though it does not explain each enum value semantically beyond their literal names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('refresca') and a clear resource ('la lista de cuentas'), and it adds a platform-scoping condition ('ya conectada'). It does not explicitly contrast itself with the sibling 'list_accounts', which could be confused with listing versus refreshing, so it falls just short of a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'ya conectada' implies the tool should be used only after a connection has already been established, which gives some usage context. However, it does not mention alternatives, such as when to use 'list_accounts' instead, nor does it state any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedconnect_meta
    • First observedconnect_youtube
    • First observedlist_accounts
    • First observedlist_platforms
    • First observedpublish_post
    • First observedrefresh_accounts

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation4/5

The tool purposes are mostly distinct: platform listing, account listing, platform connection, refresh, and publishing are separate workflows. The only mild overlap is between list_accounts and refresh_accounts, but their descriptions make the difference understandable.

Naming Consistency4/5

All tool names are in snake_case and follow a verb_noun pattern, which is consistent. Minor deviation is that connect_meta and connect_youtube use platform/brand fragments rather than the generic verb_noun style, but the overall pattern remains clear.

Tool Count5/5

Six tools is well-scoped for a social broadcast server focused on connecting platforms and publishing posts. Every tool covers a meaningful action without unnecessary redundancy.

Completeness4/5

The core lifecycle is mostly covered: list platforms, connect accounts, list/refresh accounts, and publish or schedule posts. Missing disconnect functionality and scheduled-post management are noticeable gaps, but they do not block the primary broadcasting workflow.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables posting and managing Instagram content (photos, reels, stories, carousels) and interacting with media and comments via Instagram Graph API.
    10
    9 npm
    -
  • A
    license
    B
    quality
    B
    maintenance
    Enables reading, publishing, commenting on, and analyzing Instagram Business/Creator accounts through the official Graph API, with multi-account support and an optional self-hosted publishing panel.
    29
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables direct management of Facebook Pages and linked Instagram Business/Creator accounts through the official Meta Graph API, including posting, scheduling, reading and responding to comments, and viewing insights.
    20
    -