glam/mcp_servers/social_media
2025-12-28 14:56:35 +01:00
..
pyproject.toml Make AGENTS more succint by referring to opencode rules & enrich custodians 2025-12-28 14:56:35 +01:00
README.md feat: Add script to generate Mermaid ER diagrams with instance data from LinkML schemas 2025-12-01 16:58:03 +01:00
server.py feat: Add script to generate Mermaid ER diagrams with instance data from LinkML schemas 2025-12-01 16:58:03 +01:00
setup.sh Make AGENTS more succint by referring to opencode rules & enrich custodians 2025-12-28 14:56:35 +01:00

Social Media MCP Server

A Model Context Protocol (MCP) server for obtaining media content from YouTube, LinkedIn, Facebook, and Instagram.

Features

YouTube (5 tools)

  • youtube_get_video_info - Get video metadata (title, description, views, likes)
  • youtube_get_transcript - Extract subtitles/transcripts using yt-dlp
  • youtube_search_videos - Search for videos
  • youtube_get_channel_info - Get channel information
  • youtube_get_channel_videos - Get recent videos from a channel

LinkedIn (4 tools)

  • linkedin_get_profile - Scrape LinkedIn profile (unofficial API)
  • linkedin_get_company - Get company page info
  • linkedin_search_jobs - Search job listings
  • linkedin_get_feed_posts - Get posts from your feed

Warning

: LinkedIn tools use unofficial methods and may violate LinkedIn's Terms of Service.

Facebook (4 tools)

  • facebook_get_page_posts - Get posts from a Facebook Page
  • facebook_get_post_comments - Get comments on a post
  • facebook_post_to_page - Publish a post to a Page
  • facebook_reply_to_comment - Reply to comments

Instagram (5 tools)

  • instagram_get_profile_info - Get Business profile info
  • instagram_get_media_posts - Get recent media posts
  • instagram_get_media_insights - Get post analytics
  • instagram_publish_media - Publish images
  • instagram_get_comments - Get comments on posts

Note

: Instagram tools require a Business Account connected to Facebook.

Installation

Quick Setup

# Navigate to the server directory
cd mcp_servers/social_media

# Run the setup script
./setup.sh

Manual Installation

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -e .

# Install yt-dlp (for YouTube transcripts)
brew install yt-dlp  # macOS
# or
pip install yt-dlp

Configuration

Create a .env file or set environment variables:

# YouTube (optional - falls back to yt-dlp)
YOUTUBE_API_KEY=your_youtube_api_key

# LinkedIn (choose one method)
LINKEDIN_COOKIE=your_li_at_cookie_value
# or
LINKEDIN_EMAIL=your_email
LINKEDIN_PASSWORD=your_password

# Facebook
FACEBOOK_ACCESS_TOKEN=your_page_access_token
FACEBOOK_PAGE_ID=your_page_id

# Instagram
INSTAGRAM_ACCESS_TOKEN=your_instagram_access_token
INSTAGRAM_BUSINESS_ACCOUNT_ID=your_business_account_id

Getting API Credentials

YouTube API Key

  1. Go to Google Cloud Console
  2. Create a new project (or select existing)
  3. Enable "YouTube Data API v3"
  4. Create credentials → API Key
  5. Copy the API key
  1. Log into LinkedIn in your browser
  2. Open Developer Tools (F12)
  3. Go to Application → Cookies → linkedin.com
  4. Find the li_at cookie and copy its value

Facebook Page Access Token

  1. Go to Facebook Developer Console
  2. Create an App (Business type)
  3. Add "Facebook Login" and "Pages API" products
  4. Generate a Page Access Token with permissions:
    • pages_show_list
    • pages_read_engagement
    • pages_manage_posts (for posting)
    • pages_manage_comments (for replying)

Instagram Business Account

  1. Convert your Instagram account to a Business Account
  2. Connect it to a Facebook Page
  3. Use the Facebook Graph API to get your Instagram Business Account ID
  4. Generate an access token with permissions:
    • instagram_basic
    • instagram_content_publish (for posting)
    • instagram_manage_comments
    • instagram_manage_insights

Usage with OpenCode

Add to your OpenCode configuration (.opencode/config.json):

{
  "mcpServers": {
    "social-media": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/glam/mcp_servers/social_media",
        "run",
        "python",
        "server.py"
      ],
      "env": {
        "YOUTUBE_API_KEY": "your_key",
        "LINKEDIN_COOKIE": "your_cookie",
        "FACEBOOK_ACCESS_TOKEN": "your_token",
        "FACEBOOK_PAGE_ID": "your_page_id",
        "INSTAGRAM_ACCESS_TOKEN": "your_token",
        "INSTAGRAM_BUSINESS_ACCOUNT_ID": "your_account_id"
      }
    }
  }
}

Usage with Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "social-media": {
      "command": "/path/to/glam/mcp_servers/social_media/.venv/bin/python",
      "args": ["/path/to/glam/mcp_servers/social_media/server.py"],
      "env": {
        "YOUTUBE_API_KEY": "your_key"
      }
    }
  }
}

Examples

Get YouTube Video Info

Get info about this YouTube video: https://www.youtube.com/watch?v=dQw4w9WgXcQ

Get Video Transcript

Get the transcript of this video: dQw4w9WgXcQ

Search LinkedIn Jobs

Search for software engineer jobs in San Francisco

Get Instagram Posts

Get my recent Instagram posts

API Methods Used

Platform Method Authentication
YouTube YouTube Data API v3 API Key
YouTube yt-dlp (fallback) None
LinkedIn Voyager API (unofficial) Session Cookie
Facebook Graph API Page Access Token
Instagram Graph API (via Facebook) Access Token

Rate Limits

  • YouTube: 10,000 quota units/day (search costs 100, video info costs 1)
  • LinkedIn: Unofficial API - use sparingly to avoid account restrictions
  • Facebook/Instagram: 200 calls/user/hour for most endpoints

Troubleshooting

YouTube: "API key not configured"

  • Set YOUTUBE_API_KEY or install yt-dlp for fallback

LinkedIn: "Session expired"

  • Get a fresh li_at cookie from your browser

Facebook/Instagram: "Invalid access token"

  • Tokens expire after ~60 days; generate a new one

yt-dlp: "Command not found"

brew install yt-dlp  # macOS
pip install yt-dlp   # All platforms

License

MIT License - See project root for details.

References

This server was built by studying these open-source MCP implementations: