Skip to main content
Glama
diegolm2012-creator

Social Broadcast MCP

Social Broadcast MCP

MCP‑сервер с открытым исходным кодом (MIT) для публикации в социальных сетях (Facebook, Instagram, YouTube) через официальные API каждой платформы и с собственными учётными данными OAuth.

Без центрального сервиса. Без тарифов. Без искусственных ограничений. Без платёжных посредников.

Зачем он существует?

SaaS‑инструменты (SocialCannon, PostFast, Buffer...) берут ежемесячную плату и вводят ограничения (аккаунты, посты, загрузка медиа). Этот проект делает то же самое — публикует через ИИ‑агента (Hermes, Claude и т. д.), — но каждый пользователь подключает свои собственные аккаунты через свои приложения разработчика. Бесплатно навсегда.

⚠️ Ключевое отличие от SaaS: у них уже есть приложения, одобренные Meta/Google после полной проверки. Здесь вы создаёте своё приложение (бесплатно) и используете его для своих аккаунтов. Это допустимо для личного использования и собственного бизнеса и позволяет избежать проверки Meta (App Review), которая требуется только для публичного доступа к аккаунтам третьих лиц.

Related MCP server: Meta Social MCP

Платформы

Платформа

Статус

API

Медиа

Примечания

Facebook

✅

Meta Graph API

изображение, видео

Страница или профиль с pages_manage_posts

Instagram

✅

Meta Graph API

изображение, видео, Reels, Stories

Требуется аккаунт Business/Creator, привязанный к странице Facebook

YouTube

✅

YouTube Data API v3

видео

Загрузка при видимости private/unlisted/public

TikTok

🔜

Content Posting API

видео

Требуется проверка TikTok (2–6 недель); паттерн описан в docs/

X/Twitter

🔜

API v2

Изображение, видео

Бесплатный тарифчный план X очень ограничен; описан в docs/

Установка

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

Настройка в Hermes (или любом клиенте MCP)

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

Или в любом совместимом клиенте MCP:

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

Использование

1. Подключение Facebook + Instagram

Нужно создать аккаунт на developers.facebook.com (см. docs/SETUP_META.md) и получить:

  • App ID (clientId)

  • App Secret (clientSecret, нужен только в режиме разработки)

Затем через агента:

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

Откроется браузер → вы авторизуетесь в своей учётной записи → аккаунты сохраняются локально в ~/.social-broadcast-mcp/.

2. Подключение YouTube

Создайте проект на Google Cloud Console с YouTube Data API v3 (см. docs/SETUP_YOUTUBE.md):

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

3. Просмотр подключённых аккаунтов

list_accounts()

4. Публикация

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
)

Чтобы запланировать публикацию вместо мгновенной загрузки, добавьте scheduledAt: "2026-09-01T18:00:00+01:00".

Примечание о медиа: API принимает публичные URL. Для загрузки локальных файлов разместите их в любом доступном месте (bucket S3/GCS, ваш сайт или локальный сервер с открытым доступом) и передайте их URL. Хелпер для прямой загрузки — в дорожной карте.

Документация

  • docs/SETUP_META.md — создание приложений Meta шаг за шагом

  • docs/SETUP_YOUTUBE.md — проект Google Cloud + OAuth

  • docs/TIKTOK.md — как бы выглядела интеграция TikTok (требуется проверка)

  • docs/SECURITY.md — локальное хранение токенов и лучшие практики

Безопасность

  • Токены хранятся локально в ~/.social-broadcast-mcp/ с правами доступа 0600.

  • Они никогда не отправляются на внешний сервер.

  • Никакой телеметрии. Никакой аналитики. Ничего, что «зовёт домой».

  • Посмотрите src/auth/store.ts, чтобы точно увидеть, какие данные сохраняются.

Лицензия

MIT — свободно используйте, копируйте, изменяйте и распространяйте. Сделано для сообщество на основе реального опыта публикации календаря Templo del Lagar (Vilagarcía de Arosa).

Дискренция

Проект не аффилирован с Meta, Google, TikTok или X Corp. Товарные знаки принадлежат их владельцам. Использование APIs регулируется условиями обслуживания (terms of service) каждой платформы.

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
    -