MCP YouTube Transcript
An MCP server retrieving transcripts of YouTube videos
Descripción del creador (original en inglés)
Safe Facebook Pages publishing with brand-voice, image-required & anti-duplication checks.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
META_USER_TOKEN, MCP_FB_PUBLISHER_CONFIG, MCP_FB_PUBLISHER_CONFIG_JSON, OPENAI_API_KEY, FAL_KEYLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"fb-publisher": {
"command": "uvx",
"args": [
"mcp-fb-publisher"
],
"env": {
"META_USER_TOKEN": "your-value",
"MCP_FB_PUBLISHER_CONFIG": "your-value",
"MCP_FB_PUBLISHER_CONFIG_JSON": "your-value",
"OPENAI_API_KEY": "your-value",
"FAL_KEY": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add fb-publisher --env META_USER_TOKEN=your-value --env MCP_FB_PUBLISHER_CONFIG=your-value --env MCP_FB_PUBLISHER_CONFIG_JSON=your-value --env OPENAI_API_KEY=your-value --env FAL_KEY=your-value -- uvx mcp-fb-publisherCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"fb-publisher": {
"command": "uvx",
"args": [
"mcp-fb-publisher"
],
"env": {
"META_USER_TOKEN": "your-value",
"MCP_FB_PUBLISHER_CONFIG": "your-value",
"MCP_FB_PUBLISHER_CONFIG_JSON": "your-value",
"OPENAI_API_KEY": "your-value",
"FAL_KEY": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"fb-publisher": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-fb-publisher"
],
"env": {
"META_USER_TOKEN": "your-value",
"MCP_FB_PUBLISHER_CONFIG": "your-value",
"MCP_FB_PUBLISHER_CONFIG_JSON": "your-value",
"OPENAI_API_KEY": "your-value",
"FAL_KEY": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
MCP_FB_PUBLISHER_CONFIG envMCP_FB_PUBLISHER_CONFIG_JSON envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 9 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub anthonyjbolo, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: META_USER_TOKEN, OPENAI_API_KEY, FAL_KEY
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.1.1) llegó al registro hace 6 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.
En la misma categoría: MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:↓ Descargas por semanai★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
An MCP server retrieving transcripts of YouTube videos
GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.
AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
An MCP server that lets Claude (or any MCP-compatible LLM) safely publish posts to multiple Facebook Pages through the Meta Graph API, with built-in guardrails: brand-voice config, banned-topic blocklists, image-required enforcement, and anti-duplication checks across recent feed posts.
Letting an LLM agent post directly to your Facebook Pages is a footgun unless you put guardrails in front. Common failure modes I have hit running 5+ pages:
mcp-fb-publisher ships an MCP server that wraps the Meta Graph API behind 4 deterministic tools, all driven by a single config.yaml. Every publish call goes through validation by default. Validation is pure-Python (no LLM), reproducible in CI, and runs offline.
4 MCP tools:
| Tool | What it does | |
|---|---|---|
fb_publish_post | Publishes (or schedules) a post on a configured page. Runs full validation by default; pass skip_validation=True to bypass. | |
fb_validate_pre_publish | Dry-run all guardrails. Returns `verdict: go | block` plus per-check details. Network-optional. |
fb_anti_duplicate_check | Compares a candidate message against the page's recent posts using Jaccard similarity over word 4-grams. | |
fb_generate_post_with_image | Generates an image via OpenAI (gpt-image-1) or fal.ai (flux-pro) and returns a URL ready for fb_publish_post. |
# 1. Install
pip install mcp-fb-publisher
cp config.example.yaml config.yaml
export META_USER_TOKEN=" " export MCP_FB_PUBLISHER_CONFIG="$PWD/config.yaml"
export OPENAI_API_KEY="sk-..." # or export FAL_KEY="..."
mcp-fb-publisher
Add to your claude_desktop_config.json:
{
"mcpServers": { "fb-publisher": { "command": "mcp-fb-publisher", "env": { "META_USER_TOKEN": "your_token_here", "MCP_FB_PUBLISHER_CONFIG": "/absolute/path/to/config.yaml", "OPENAI_API_KEY": "sk-..." } } } }
Then ask Claude things like:
*"Post on the marketing page: 'New collection drops Friday'. Generate an image first, validate, then publish."*
Claude will call fb_generate_post_with_image → fb_validate_pre_publish → fb_publish_post.
flowchart LR
A[Claude / MCP client] -->|tool call| B[FastMCP server] B --> C{tool} C -->|generate| D[OpenAI / fal.ai] C -->|validate| E[Validator pure Python] C -->|anti-dup| F[Meta Graph API fetch_recent_posts] C -->|publish| G[Meta Graph API POST /feed or /photos] E -.reads.-> H[(config.yaml per-page rules)] G -.reads.-> H F -.reads.-> H
The split between generation, validation and publish is intentional: it lets the LLM iterate on the visual without burning Meta API quota, and it makes the guardrails inspectable in CI without a Meta account.
We compare the candidate message against every post within anti_duplicate_lookback_days (per-page, default 14) using Jaccard similarity over word 4-grams:
similarity = |A ∩ B| / |A ∪ B|similarity >= similarity_threshold (default 0.5), block.Why this and not embeddings: deterministic, free, no extra API key, fast enough for 50 candidates per call. If you want LLM-grade semantic comparison, add another layer on top — the fb_validate_pre_publish tool returns the score so your agent can decide.
defaults:
language: en brand_voice: | Direct, professional, no fluff. banned_topics: [] image_required: true anti_duplicate_lookback_days: 14
pages: marketing_main: page_id: "0000000000000000" name: "My Brand — Main" brand_voice: | Confident, concise, customer-first. banned_topics:
community: page_id: "0000000000000002" name: "Community" image_required: false
Note: the brand_voice field is informational — it's surfaced to the calling LLM via the tool description but the server itself does not LLM-validate against it. This is by design (tests must run offline). Layer your own LLM check on top if you want enforcement.
You manage 5 Facebook pages for clients. Each has its own brand voice, banned topics (competitor names), and image policy. Configure them all in one config.yaml, give Claude the tool, and let the agent draft + validate + publish across all of them with safety rails.
You run a single product page and want Claude to schedule the next 30 days of posts. Set image_required: true, give the agent your product brief, and use fb_anti_duplicate_check to make sure no two posts land on the same angle within a fortnight.
You rotate flash promos. Set anti_duplicate_lookback_days: 7 for the promo page and 14 for the evergreen content page. Combine with scheduled_at to queue a week's worth of posts in one shot.
git clone https://github.com/anthonyjbolo/mcp-fb-publisher.git
cd mcp-fb-publisher
python3.12 -m venv .venv source .venv/bin/activate pip install -e ".[dev,openai,fal]"
pytest
ruff check .
All tests use httpx.MockTransport and pytest-mock. No real Meta API calls in tests.
META_USER_TOKEN only. Never hard-code it.***REDACTED***) before they leave the process.config.yaml is in .gitignore. Only config.example.yaml is committed.fb_check_token_expiry).Construit en Nouvelle-Calédonie pour gérer 5 pages FB en parallèle (auto-école, marketplace de bingo, atelier d'apps, marque de tee-shirts, page média). Tous les écueils ci-dessus sont des bugs que j'ai vraiment vécus. Le serveur MCP est la couche que j'aurais aimé avoir le premier jour — maintenant elle est libre.
MIT — see LICENSE.
Issues + PRs welcome. Please run pytest and ruff check . before opening a PR. For substantial features, open an issue first to discuss.
#BuiltOnClaudeCode