Skip to main content
Glama

media-mcp

CI npm License: MIT

Soziale Medien direkt zur Hand. 31 Tools für Twitter/X, YouTube, Instagram und Videoverarbeitung – von Claude Desktop, Claude Code oder jedem MCP-Client. 100 % Open Source.

Zeig auf einen Tweet und du bekommst den vollständigen Text, Metriken und die Videotranskription. Gib eine YouTube-URL an und erhalte das Transkript. Wirf einen Instagram-Reel hinein und lade die Medien herunter plus Audio-Transkription. Die gesamte Transkription läuft lokal über Whisper – kein Audio verlässt deinen Rechner.

Die These: Ohren immer, Augen nur wenn die Ohren versagen

Kleine Whisper-Modelle sind großartig im Hören, aber schlecht im Lesen. Sie hören ungewöhnliche Namen falsch. Sie können Text auf dem Bildschirm nicht transkribieren. Sie überspringen eingebrannte Untertitel. Für 90 % der Fragen zu einem Video spielt das keine Rolle – der Kern reicht aus.

Aber wenn ein Nutzer fragt „Wie lautet der Installationsbefehl in diesem Reel?" oder „Wie heißt der Handle, den er gezeigt hat?", liefert die Transkription allein selbstbewusst die falsche Antwort. Die URL war auf dem Bildschirm. Das Eigennamen wurde in der Untertitelung ausgeschrieben. Whisper hat nichts davon gesehen.

media-mcp transkribiert mit Token-genauer Konfidenz über whisper-cli -ojf und markiert Unsicherheitszonen (wo Whisper zugibt, geraten zu haben) und demonstrative Phrasen („besuchen Sie unsere", „dieser Befehl", „in der Bio" – starke Signale, dass auf Bildschirminhalte verwiesen wird). Die LLM liest diese Marker und entscheidet, ob sie get_video_frames_at für die spezifischen Zeitstempel aufrufen soll, die eine visuelle Überprüfung benötigen. Frames werden nur dann erzeugt, wenn sie nötig sind. Das eigene Sehvermögen der LLM übernimmt das Lesen – kein OCR, kein zweites Modell.

Ergebnis: Der Agent hat Ohren bei jedem Video, Augen nur dort, wo die Ohren versagen. Minimale Frames, maximale Genauigkeit.

Related MCP server: youtube-mcp

Was es tut

  • Ruft Tweets, Threads, Profile, Follower, Trends und Suchergebnisse von Twitter/X ab (26 Tools über die TwitterAPI.io-REST-API, mit optionaler Xquik-Unterstützung für überlappende Lese-Tools)

  • Transkribiert Video-Audio lokal mit whisper-cli – lädt Medien herunter, extrahiert Audio mit ffmpeg, führt Whisper auf deiner Hardware aus und liefert Token-genaue Konfidenz und Treffer für demonstrative Phrasen, damit die LLM weiß, wo der Audio-Kanal unzuverlässig ist

  • Lädt Instagram-Beiträge, Reels und Karussells in lokale Ordner über eine selbst gehostete Cobalt-Instanz herunter

  • Extrahiert Frames aus jeder Video-URL mit konfigurierbarer FPS – oder präzise an einem Array von Zeitstempeln über get_video_frames_at (cache-bewusst, kein erneuter Download bei Folgeabfragen)

  • Überwacht Twitter-Nutzer in Echtzeit und filtert Tweets nach Schlüsselwortregeln

  • Cacht heruntergeladene Videos in ~/.media-mcp/cache/videos/ (sha256-der-URL-Schlüssel, 24h TTL), sodass Transkription + Frame-Suche für dasselbe Video in einem Download erfolgen

So funktioniert es

Die LLM scrapt nie HTML oder parst DOM. Jedes Tool ruft eine zweckgebaute API auf und liefert strukturierten, LLM-bereiten Text zurück.

Für Textdaten (Tweets, Profile, Trends): ein REST-Aufruf an TwitterAPI.io standardmäßig, geparst in formatierte Ausgabe. Setze TWITTER_BACKEND=xquik mit XQUIK_API_KEY, um Xquik für überlappende Lese-Tools zu verwenden.

Für Transkription (Tweet-Videos, YouTube, Instagram-Reels): Die Pipeline lädt Medien in den gemeinsamen Cache herunter, extrahiert Audio mit ffmpeg (16-kHz-Mono-WAV), transkribiert mit whisper-cli unter Verwendung von -ojf (output-json-full), um Token-genaue Wahrscheinlichkeiten zu erhalten, und liefert dann ein LLM-lesbares Transkript mit Inline-⟨token p=0.XX⟩-Markern plus Zusammenfassungsblöcken für Unsicherheitszonen und demonstrative Phrasen. Bei YouTube werden zuerst Untertitel versucht (sofort) – Whisper ist nur der Fallback.

Für visuelle Daten (Instagram-Bilder, Video-Frames): Medien werden in einen lokalen Ordner heruntergeladen und absolute Dateipfade werden zurückgegeben, damit die LLM sie direkt mit Vision lesen kann. Die Frame-Extraktion hat zwei Modi: Bulk (extract_video_frames mit konfigurierbarer FPS) und Präzision (get_video_frames_at – ein JPG pro Zeitstempel, für gezielte Überprüfung transkriptionsunsicherer Momente).

Pipeline

URL ──► Detect platform
             │
             ├── Twitter ──► TwitterAPI.io or Xquik REST ──► structured text
             │                     │
             │               has video? ──► cache ──► ffmpeg ──► whisper-cli -ojf
             │                                                         │
             │                                       transcript + confidence markers
             │
             ├── YouTube ──► try captions (instant)
             │                     │
             │               no captions? ──► yt-dlp ──► ffmpeg ──► whisper-cli -ojf
             │
             ├── Instagram ──► Cobalt API ──► download to cache
             │                     │
             │               has video? ──► ffmpeg ──► whisper-cli -ojf
             │
             ├── Video URL ──► cache ──► ffmpeg -vf fps=N ──► frame JPGs
             │
             └── Video URL + timestamps[] ──► cache ──► ffmpeg -ss each ──► one JPG per timestamp
                 (for targeted verification when transcription uncertainty demands it)

Transkription enthält immer Token-genaue Konfidenz und Scans auf demonstrative Phrasen. Die LLM leitet zur Frame-Extraktion weiter, wenn diese Signale es erfordern.

Alle Transkription ist lokal. Alle temporären Dateien werden bereinigt. Heruntergeladene Videos liegen 24 Stunden in einem gemeinsamen Cache (~/.media-mcp/cache/videos/), sodass Folgeaufrufe für dieselbe URL nicht erneut herunterladen. Die LLM erhält strukturierten Text oder Dateipfade – nie rohes API-JSON.

Designprinzipien

  1. Strukturierte Daten, kein Scraping. Jedes Tool ruft eine zweckgebaute API auf. Kein HTML-Parsing, keine fragilen Selektoren, keine Browser-Automatisierung.

  2. Nur lokale Transkription. Audio verlässt nie den Rechner. Whisper läuft auf lokaler Hardware.

  3. Untertitel zuerst, Whisper zweitens. Verbrenne keine Rechenleistung, wenn die Plattform die Arbeit bereits erledigt hat.

  4. Ein Tool, eine Aufgabe. Keine Mehrzweck-Tools mit Modus-Flags. Jedes Tool macht genau eine Sache.

  5. Dateipfade für visuelle Inhalte. Gib absolute Pfade zurück, damit die LLM Bilder direkt sehen kann.

  6. Ohren immer, Augen nur wenn die Ohren versagen. Transkription ist billig; Vision-Tokens sind teuer. Die LLM sieht Frames nur an Zeitstempeln, an denen Whisper zugibt, unsicher zu sein, oder an denen der Sprecher explizit auf etwas auf dem Bildschirm verweist. Nicht mit 1 fps. Nicht als Keyframes. Genau dort, wo Genauigkeit es tatsächlich braucht.

  7. Keine OCR-Ebene. Claudes Vision liest die Frames direkt. Ein Modell, das alle multimodalen Überlegungen übernimmt, schlägt eine Zwei-Modell-Naht, bei der OCR und Vision konkurrieren.

Siehe SKILL.md für die vollständigen Pipeline-Details, die Tool-Referenz und Anti-Patterns.

Erste Schritte

npx (am schnellsten)

TWITTER_API_KEY=your_key npx media-mcp

Oder registriere es mit Claude Code in einem Befehl:

claude mcp add media-mcp -e TWITTER_API_KEY=your_key -- npx media-mcp

Das Whisper-Basismodell wird automatisch bei der ersten Transkription in ~/.media-mcp/models/ heruntergeladen. ffmpeg, whisper-cli und yt-dlp müssen weiterhin installiert sein (siehe Voraussetzungen).

Docker

docker run -i --rm \
  -e TWITTER_API_KEY=your_key \
  -v media-mcp-data:/data \
  ghcr.io/woosal1337/media-mcp

Das Image bündelt ffmpeg, yt-dlp und whisper-cli. Modelle und der Video-Cache bleiben im /data-Volume erhalten.

Aus dem Quellcode

git clone https://github.com/woosal1337/media-mcp.git
cd media-mcp
npm install && npm run build

Lade das Whisper-Modell herunter (optional – übersprungene Modelle werden bei Bedarf abgerufen):

mkdir -p models
curl -L -o models/ggml-base.bin \
  https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.bin

Erstelle .env:

cp .env.example .env
# Edit with your keys:
# TWITTER_API_KEY=your_twitterapi_io_key
# Optional Xquik backend for overlapping read tools:
# TWITTER_BACKEND=xquik
# XQUIK_API_KEY=your_xquik_key
# XQUIK_BASE_URL=https://xquik.com/api/v1
# WHISPER_MODEL_PATH=/absolute/path/to/models/ggml-base.bin
# COBALT_API_URL=http://localhost:9000       (optional, for Instagram)
# COBALT_API_KEY=your_cobalt_key             (optional)
# CLOUDFLARE_ACCOUNT_ID=your_account_id     (optional, for fetch_markdown)
# CLOUDFLARE_API_TOKEN=your_api_token       (optional, for fetch_markdown)

Voraussetzungen

Abhängigkeit

Erforderlich

Was sie tut

Installation

Node.js 20+

Ja

Führt den MCP-Server aus

brew install node

ffmpeg

Ja

Audio-Extraktion + Frame-Extraktion

brew install ffmpeg

whisper-cli

Ja

Lokale Audio-Transkription

brew install whisper-cpp

yt-dlp

Ja

Video-Downloads von YouTube und anderen

brew install yt-dlp

TwitterAPI.io-Schlüssel

Ja, außer bei Verwendung von Xquik für Nur-Lese-Tools

Versorgt alle Twitter/X-Tools

twitterapi.io

Xquik-Schlüssel

Optional

Versorgt überlappende Nur-Lese-Twitter/X-Tools

xquik.com

Cobalt-Instanz

Optional

Instagram-Downloads

Siehe Cobalt-Setup

Konfiguration

Claude Code

Füge zu ~/.claude/settings.json hinzu:

{
  "mcpServers": {
    "media-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/media-mcp/dist/index.js"],
      "env": {
        "TWITTER_API_KEY": "your_key",
        "TWITTER_BACKEND": "twitterapi",
        "WHISPER_MODEL_PATH": "/absolute/path/to/media-mcp/models/ggml-base.bin",
        "COBALT_API_URL": "http://localhost:9000",
        "COBALT_API_KEY": "your_cobalt_key",
        "CLOUDFLARE_ACCOUNT_ID": "your_account_id",
        "CLOUDFLARE_API_TOKEN": "your_api_token"
      }
    }
  }
}

Claude Desktop

Füge zu ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) oder %APPDATA%\Claude\claude_desktop_config.json (Windows) hinzu – gleiche Struktur wie oben.

Umgebungsvariablen

Variable

Erforderlich

Beschreibung

TWITTER_API_KEY

Ja, außer TWITTER_BACKEND=xquik

API-Schlüssel von twitterapi.io

TWITTER_BACKEND

Nein

twitterapi standardmäßig. Verwende xquik für überlappende Lese-Tools. Wenn nur XQUIK_API_KEY gesetzt ist, wählt der Server selbstständig xquik.

XQUIK_API_KEY

Erforderlich bei TWITTER_BACKEND=xquik

API-Schlüssel von Xquik

XQUIK_BASE_URL

Nein

Xquik-API-Basis-URL, standardmäßig https://xquik.com/api/v1

WHISPER_MODEL_PATH

Nein

Pfad zu einem Whisper-Modell. Wenn nicht gesetzt und kein lokales Modell existiert, wird das Basismodell automatisch bei der ersten Verwendung heruntergeladen

MEDIA_MCP_MODEL_DIR

Nein

Wo automatisch heruntergeladene Whisper-Modelle liegen (standardmäßig ~/.media-mcp/models)

MEDIA_MCP_CACHE_DIR

Nein

Wo der 24h-Video-Cache liegt (standardmäßig ~/.media-mcp/cache)

COBALT_API_URL

Nein

URL deiner Cobalt-Instanz (erforderlich für Instagram)

COBALT_API_KEY

Nein

Cobalt-API-Schlüssel, falls Authentifizierung aktiviert ist

CLOUDFLARE_ACCOUNT_ID

Nein

Cloudflare-Konto-ID (erforderlich für fetch_markdown)

CLOUDFLARE_API_TOKEN

Nein

Cloudflare-API-Token mit Browser-Rendering-Berechtigung (erforderlich für fetch_markdown)

Tools

Twitter/X – 26 Tools

TwitterAPI.io ist das Standard-Backend für alle Twitter/X-Tools. Setze TWITTER_BACKEND=xquik mit XQUIK_API_KEY, um die überlappenden Lese-Tools stattdessen an Xquik zu senden. Beide Backends liefern dieselbe Tool-Ausgabe, sodass sich sonst nichts ändert.

Backend-Abdeckung

Tools

Beide Backends

get_tweet, get_user_profile, get_user_about, get_user_tweets, get_user_followers, get_user_following, get_verified_followers, get_user_mentions, get_tweet_replies, get_tweet_quotes, get_tweet_retweeters, search_tweets, search_users, check_follow_relationship, get_trends

Nur TwitterAPI.io

get_tweet_replies_v2, get_list_timeline, get_community_tweets, get_space_detail, get_bookmarks, die 3 Monitor-Tools, die 3 Filterregel-Tools

Ein Nur-TwitterAPI.io-Tool wirft einen klaren Fehler, wenn du TWITTER_BACKEND=xquik ohne TWITTER_API_KEY ausführst. Setze beide Schlüssel, um jedes Tool zu nutzen und trotzdem über Xquik zu lesen.

Tweets abrufen

Tool

Aktion

Was es tut

get_tweet

Abrufen + Transkribieren

Ruft Tweet per URL ab mit Text, Autor, Metriken, Medien, Threads, Artikeln. Transkribiert Video-Audio über Whisper (optionale language- und model-Parameter).

get_user_tweets

Abrufen

Aktuelle Tweets eines Nutzers (paginiert, 20/Seite)

search_tweets

Suchen

Erweiterte Suche mit Operatoren (from:, to:, #hashtag, min_faves:, Datumsbereiche)

get_tweet_replies

Abrufen

Antworten auf einen Tweet (paginiert, 20/Seite)

get_tweet_replies_v2

Abrufen + Sortieren

Antworten mit Sortierung: Relevanz, Neueste oder Likes

get_tweet_quotes

Abrufen

Zitat-Tweets eines Tweets (paginiert, 20/Seite)

get_tweet_retweeters

Abrufen

Nutzer, die einen Tweet retweetet haben (paginiert, 100/Seite)

get_list_timeline

Abrufen

Tweets aus einer Twitter-Liste

get_community_tweets

Abrufen

Tweets aus einer Twitter-Community

get_trends

Abrufen

Trendthemen (weltweit oder nach WOEID-Standort)

Profile abrufen

Tool

Aktion

Was es tut

get_user_profile

Abrufen

Nutzer-Bio, Follower-Zahlen, Verifizierung, Standort, Website

get_user_about

Abrufen

Erweiterte Profilinformationen über das Basisprofil hinaus

get_user_followers

Abrufen

Follower eines Nutzers (paginiert, 200/Seite)

get_user_following

Abrufen

Konten, denen ein Nutzer folgt (paginiert, 200/Seite)

get_user_mentions

Abrufen

Tweets, die einen Nutzer erwähnen (paginiert, 20/Seite)

get_verified_followers

Abrufen

Verifizierte (blaue Häkchen) Follower (paginiert, 20/Seite)

search_users

Suchen

Nutzer nach Stichwort suchen

check_follow_relationship

Prüfen

Ob Nutzer A Nutzer B folgt und umgekehrt

get_space_detail

Abrufen

Twitter-Space-Metadaten (Titel, Gastgeber, Sprecher, Status)

Echtzeit-Überwachung

Tool

Aktion

Was es tut

monitor_user_add

Starten

Echtzeit-Überwachung der Tweets eines Nutzers beginnen

monitor_user_list

Auflisten

Alle aktuell überwachten Nutzer

monitor_user_remove

Stoppen

Überwachung eines Nutzers beenden

filter_rule_add

Erstellen

Stichwort-Filterregel für die Überwachung hinzufügen

filter_rule_list

Auflisten

Alle aktiven Filterregeln

filter_rule_delete

Löschen

Eine Filterregel entfernen

YouTube — 1 Tool

Tool

Aktion

Was es tut

get_youtube_transcript

Abrufen + Transkribieren

Holt das Video-Transkript. Versucht zuerst Untertitel (sofort, in der angeforderten language, sofern gesetzt). Fällt auf yt-dlp + ffmpeg + Whisper zurück, wenn keine Untertitel vorhanden sind. Optionale language- und model-Parameter.

Instagram — 1 Tool

Tool

Aktion

Was es tut

get_instagram_post

Herunterladen + Transkribieren

Lädt alle Medien (Bilder, Videos, Karussells) über Cobalt in einen lokalen Ordner herunter. Transkribiert Video-Audio mit Whisper (optionale language- und model-Parameter). Gibt lokale Dateipfade zurück.

Cloudflare — 1 Tool

Tool

Aktion

Was es tut

fetch_markdown

Extrahieren

Extrahiert sauberes Markdown von jeder Webseite über Cloudflare Browser Run. Funktioniert bei JS-lastigen Seiten, SPAs und Websites, bei denen einfaches fetch fehlschlägt.

Video — 2 Tools

Tool

Aktion

Was es tut

extract_video_frames

Herunterladen + Extrahieren

Lädt Video von jeder URL herunter, extrahiert Frames mit konfigurierbarer FPS über ffmpeg. Unterstützt Zeitbereiche. Gibt lokale Frame-Pfade zurück. Cache-bewusst.

get_video_frames_at

Präzisions-Extraktion

Holt ein JPG pro angegebenem Zeitstempel. Passt zu den Transkriptions-Tools — wenn das Transkript Unsicherheitszonen oder demonstrative Phrasen markiert, übergib deren midpoint_s-Werte hier und das LLM liest die JPGs mit seiner eigenen Vision. Cache-bewusst (kein erneuter Download bei Folgeabfragen).

So funktioniert die Transkription

video → cache → ffmpeg -ar 16000 -ac 1 → audio.wav → whisper-cli -ojf → audio.wav.json
                                                                            │
                                                                            ▼
                                                         parse per-token probabilities
                                                                            │
                                                                            ▼
                                        transcript with ⟨token p=0.XX⟩ markers
                                        + Uncertainty zones summary (midpoint_s each)
                                        + Demonstrative phrases block (midpoint_s each)
  1. Video wird nach ~/.media-mcp/cache/videos/<sha256>.mp4 heruntergeladen (wiederverwendet, falls vorhanden, <24h alt)

  2. ffmpeg extrahiert Audio als 16-kHz-Mono-WAV

  3. whisper-cli transkribiert lokal mit -ojf (output-json-full) — JSON enthält p-Werte pro Token

  4. Token unter p=0,5 werden zu zusammenhängenden Bereichen (≤150ms Lücke) zusammengeführt und als Unsicherheitszonen gemeldet

  5. Der Segmenttext wird auf demonstrative Phrasen durchsucht, die typischerweise auf Bildschirminhalte verweisen

  6. Das LLM erhält segmentweises Transkript + Unsicherheitszonen + demonstrative Treffer und entscheidet, ob get_video_frames_at mit den relevanten Zeitstempeln aufgerufen werden soll

Bei YouTube werden zuerst Untertitel versucht (sofort, bereits mit Zeitstempeln). Whisper ist der Fallback. Die gesamte Transkription erfolgt lokal — kein Audio wird an externe Dienste gesendet.

Cobalt-Einrichtung

Cobalt ist ein Open-Source-Medien-Downloader, der 21 Plattformen unterstützt. media-mcp verwendet es für Instagram. Du brauchst deine eigene Instanz — die öffentliche API erfordert JWT-Auth, die nicht Server-zu-Server funktioniert.

Docker (empfohlen)

# docker-compose.yml
services:
  cobalt:
    image: ghcr.io/imputnet/cobalt:11
    init: true
    read_only: true
    restart: unless-stopped
    ports:
      - 9000:9000/tcp
    environment:
      API_URL: "http://localhost:9000/"
    labels:
      - com.centurylinklabs.watchtower.scope=cobalt

  watchtower:
    image: ghcr.io/containrrr/watchtower
    restart: unless-stopped
    command: --cleanup --scope cobalt --interval 900 --include-restarting
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
docker compose up -d
curl http://localhost:9000/   # verify

API-Key-Auth hinzufügen

node -e "console.log(crypto.randomUUID())"   # generate key

Erstelle keys.json:

{
  "your-uuid": {
    "name": "media-mcp",
    "limit": "unlimited",
    "allowedServices": "all"
  }
}

Zur Cobalt-Umgebung hinzufügen:

environment:
  API_KEY_URL: "file:///keys.json"
  API_AUTH_REQUIRED: 1
volumes:
  - ./keys.json:/keys.json:ro

Cookies hinzufügen (für private Inhalte)

Erstelle cookies.json mit deiner Instagram-sessionid, mounte es als /cookies.json und setze COOKIE_PATH: "/cookies.json" in der Umgebung.

Produktions-Härtung

environment:
  CORS_WILDCARD: 0
  CORS_URL: "http://localhost"
  RATELIMIT_WINDOW: 60
  RATELIMIT_MAX: 100
  DURATION_LIMIT: 10800

Unterstützte Plattformen

Cobalt unterstützt 21 Plattformen. Aktuell verwendet media-mcp es für Instagram. Zukünftige Versionen werden weitere hinzufügen: YouTube, TikTok, Twitter/X, Reddit, Facebook, Pinterest, Snapchat, Bluesky, Twitch, Vimeo, SoundCloud, Dailymotion, Tumblr, Bilibili, Loom, Streamable, Rutube, Newgrounds, OK.ru, VK.

Ein-Befehl-Einrichtung

Kopiere den Inhalt von PROMPT.md und füge ihn in Claude Code ein. Er installiert alle Voraussetzungen, klont das Repository, konfiguriert alles und verbindet media-mcp automatisch.

Transkriptionssprache und -modell

Alle drei Transkriptions-Tools akzeptieren zwei optionale Parameter:

  • language — ISO-639-1-Code (en, es, tr, de, ...) oder auto für automatische Erkennung. Standard ist Englisch. Bei YouTube werden Untertitel in dieser Sprache angefordert, bevor Whisper läuft.

  • modeltiny, tiny.en, base, base.en, small, small.en, medium, medium.en, large-v3 oder large-v3-turbo. Bekannte Namen werden einmalig von HuggingFace nach ~/.media-mcp/models/ heruntergeladen und wiederverwendet. Ein absoluter Pfad zu einer beliebigen ggml-.bin-Datei funktioniert ebenfalls. Größere Modelle sind langsamer und genauer — large-v3-turbo ist der Sweet Spot, wenn base zu viel falsch versteht.

Entwicklung

npm run dev        # watch mode (recompiles on change)
npm run build      # one-time build
npm test           # run the unit test suite
npm run test:watch # tests in watch mode
npm start          # run the server

CI führt Build + Tests auf Node 20 und 22 für jeden Push und PR aus. Releases sind tag-ausgelöst: Das Pushen von v* veröffentlicht auf npm mit Provenienz, erstellt ein GitHub Release und pusht das Docker-Image zu GHCR.

Lizenz

MIT

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    A comprehensive MCP server for X/Twitter featuring over 70 tools for research, engagement, and publishing with granular permission-based access control. It includes specialized Playwright-powered tools for fetching X articles and supports extensive account management and thread operations.
    63
    18
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A local MCP server for extracting YouTube video transcripts, metadata, and performing visual analysis using Gemini Vision or local Whisper models. It enables users to process video content through various tools for subtitle retrieval and frame analysis.
    27
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.

  • Any social-video URL → transcript, metadata, frames, OCR, summary, search, Q&A. MCP server + x402.

  • MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/woosal1337/media-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server