Skip to main content
Glama

Socials MCP

Give Claude superpowers on X, LinkedIn, and Reddit.


Install

  1. Install the Socials Chrome extension

  2. In Claude Code:

/plugin marketplace add Brainrot-Creations/plugins
/plugin install socials@brainrot-creations
/reload-plugins

Done. Talk to Claude naturally:

  • "Connect with 100 LinkedIn recruiters hiring for React roles"

  • "Find Reddit threads about note-taking and mention my app naturally"

  • "Reply to 50 X posts about indie hacking and promote my SaaS"


Related MCP server: JobSpy MCP Server

How it works

The MCP server runs locally and bridges Claude to your browser via a WebSocket connection to the Socials extension. All actions happen through your real browser session — no API keys, no rate limits.


Troubleshooting

  • Port 9847 in use — Kill stale node processes or set SOCIALS_MCP_RECLAIM_PORT=1

  • Extension not connecting — Open the Socials side panel, then reload

  • Tools not working — Make sure you're signed into Socials


Development

npm install
npm run build       # build dist/
npm run typecheck   # type check
npm run release:dry # preview a release without publishing

Use local MCP in plugin dev mode

  1. Build local MCP:

cd socials/mcp
npm run build
  1. Set dev mode in claude-plugins/plugins/socials/.mcp.json:

{
  "mcpServers": {
    "socials": {
      "env": {
        "SOCIALS_MCP_DEV_MODE": "1",
        "SOCIALS_MCP_DEV_MCP_PATH": "/absolute/path/to/socials/mcp/dist/index.cjs"
      }
    }
  }
}
  1. Restart Claude Code.

To switch back to published npm package, set "SOCIALS_MCP_DEV_MODE": "0" and restart.

Releases are automated via CI — push to main with [release:patch], [release:minor], or [release:major] in the commit message to fast-track publishing.


MIT License · Security · contact@brainrotcreations.com

Available Tools

36 tools
socials_apply_search_filtersA

Apply filters on a search results page using a standard interface. Current implementation: YouTube search results (opens 'Filters' popup, clicks labels, waits for reload between applied filters).

Inputs: filters (required), platform (required), strict.

socials_check_accessA

Check connection status. After confirming access, use socials_open_tab to open X, LinkedIn, Reddit, or YouTube (home, watch, or /results?search_query=... for search). RECOVERY FLOW if this fails: 1) socials_refresh_auth 2) if still fails, socials_restart_bridge 3) user refreshes browser extension 4) retry check_access.

Inputs: no named parameters.

socials_create_postA

Publish a new original post on X (not a reply) in the pinned agent tab (need not be focused). Opens the compose dialog from the sidebar, fills the text, optionally attaches media, and clicks Post. Agent tab should be on X (e.g. https://x.com/home) with the left nav visible. IMPORTANT: Always confirm the exact text with the user before calling this tool.

Inputs: content (required), platform (required), media.

socials_diagnosticsB

Get diagnostics info: health metrics, engagement score, feature flags. Use refresh=true to force-refresh feature flags from PostHog.

Inputs: refresh.

socials_engage_postA

Engage with a tweet (like, repost, bookmark, share). Pass post_id from socials_get_feed. Actions are toggles — calling again may undo. IMPORTANT: Only use when the user explicitly wants these actions.

Inputs: actions (required), post_id (required), platform (required).

socials_fetch_imageA

Download an image by URL and return it for visual inspection (MCP image content + JSON metadata). Token/cost guidance: image payloads are expensive, so use this only when visual inspection materially improves the answer (e.g. comparing thumbnails, checking visual details). Prefer URLs/text metadata when sufficient. Requires Socials Pro + extension connected like other MCP tools. Fetches from the MCP process (public URLs); cookie-gated images may need another approach.

Inputs: url (required).

socials_focus_agent_tabA

Bring the pinned agent tab to the foreground (same as clicking it). Use when you want to watch what Claude is doing.

Inputs: no named parameters.

socials_get_active_tabA

Get the currently focused browser tab (what you are looking at). For the tab Claude automates, use socials_get_agent_tab.

Inputs: no named parameters.

socials_get_agent_tabA

Get the pinned Socials agent tab (URL, title, platform: x, linkedin, reddit, youtube, or null). Null if none set yet—then call socials_open_tab.

Inputs: no named parameters.

socials_get_feedA

Get recent posts from a social media feed. Requires Pro access. Reads the pinned agent tab (set by socials_open_tab), not the tab or window you are looking at—works across Chrome windows.

Inputs: platform (required), count.

socials_get_page_contentA

Get structured content from the pinned agent tab. YouTube search results (/results?search_query=…) return video cards with auto-scroll. YouTube watch pages (/watch?v=…) return structured video metadata (title/channel/views/likes/description) plus comments, and can optionally switch comment sort (top/newest) before scraping.

Inputs: limit, tab_id, comment_sort, comments_limit, +1 more.

socials_get_post_contextA

Get detailed context for a specific post including replies. Requires Pro access.

Inputs: platform (required), post_url (required).

socials_health_checkA

Check the health of the connection to the Socials extension. Returns ping latency, consecutive failures, and time since last successful ping. Use this to detect if the extension has disconnected mid-session.

Inputs: no named parameters.

socials_instagram_create_postA

Post a photo or carousel (up to 10 images) to Instagram. The agent tab must be on instagram.com. Use image_path for a single image or image_paths array for a carousel. Opens Create New Post dialog, uploads the image(s), fills caption and hashtags, then posts. Always confirm with user before calling.

Inputs: caption (required), hashtags, image_path, image_paths.

socials_linkedin_connectA

Send a LinkedIn connection request. Pass profile_url (e.g. 'https://linkedin.com/in/username'). Auto-navigates to the profile. Returns status: already_connected, pending_sent, success, etc. IMPORTANT: Always confirm with the user before sending.

Inputs: profile_url (required), note.

socials_linkedin_connection_statusA

Check connection status with a LinkedIn user (read-only, no request sent). Returns: connected, pending_sent, not_connected, etc.

Inputs: profile_url (required).

socials_linkedin_engageA

Engage with a LinkedIn post. Pass post_id from socials_get_feed. Actions: like (toggle), repost, quote_repost. IMPORTANT: Only use when the user explicitly wants these actions.

Inputs: actions (required), post_id (required).

socials_linkedin_get_peopleA

Get people results from the current LinkedIn people search page. Returns array of people with name, headline, location, profile URL, and connection status. Also returns pagination info (current page, total pages, has next/prev).

Inputs: count.

socials_linkedin_go_to_pageA

Go to a specific page number of LinkedIn search results.

Inputs: page (required).

socials_linkedin_next_pageA

Go to the next page of LinkedIn search results. Returns false if already on the last page.

Inputs: no named parameters.

socials_linkedin_profileA

Get a LinkedIn profile. Pass profile_url — auto-navigates and extracts name, headline, about, experience, education, skills, contact info.

Inputs: profile_url (required).

socials_list_personasA

List available personas for content generation. Includes both system personas and user-created custom personas.

Inputs: no named parameters.

socials_navigateA

Navigate the pinned agent tab (or tab_id if provided) to a URL. Does not require that tab to be active.

Inputs: url (required), tab_id.

socials_open_tabA

Open a URL in a new tab and pin it as the Socials agent tab. Automation targets this tab by ID across tabs and Chrome windows (not only the focused window). By default opens in the background (focus: true to switch to it). If a pin already exists, the new tab opens in the same window as that pin so a separate empty window does not steal the agent workspace.

Inputs: url (required), focus.

socials_quick_replyA

Post a reply in the pinned agent tab: X — tweet id from socials_get_feed; LinkedIn — post URN from feed; YouTube watch — commentId from socials_get_page_content page_data.comments (YouTube ?lc=… token), or a watch URL containing lc=. Opens reply UI, fills text, submits. YouTube: no media attachments. IMPORTANT: Always confirm exact text with the user before posting.

Inputs: content (required), post_id (required), media.

socials_refresh_authA

RECOVERY STEP 1: Restore authentication when connected but auth fails. Uses device-based auth if device was previously registered (works even when logged out). Auto-registers device for future sessions if user is logged in. If this fails, proceed to socials_restart_bridge (step 2).

Inputs: no named parameters.

socials_reload_tabB

Reload the pinned agent tab, or tab_id if provided.

Inputs: tab_id.

socials_restart_bridgeA

RECOVERY STEP 2: Restart the WebSocket bridge when refresh_auth fails or connection is stuck. Use when socials_check_access shows ws_server_listening=false or connected=false. Kills stale processes on port 9847 and restarts WS server. AFTER THIS: User must refresh Socials extension in browser, then retry socials_check_access.

Inputs: no named parameters.

socials_scrollA

Scroll the pinned agent tab to load more posts (does not require that tab to be focused).

Inputs: amount, direction.

socials_set_agent_tabA

Pin an existing tab as the agent tab (e.g. X, LinkedIn, Reddit, or YouTube already open). Pass tab_id from socials_get_active_tab.

Inputs: tab_id (required).

socials_x_notificationsA

Get notifications from X (Twitter). Must navigate to https://x.com/notifications first. Returns likes, follows, reposts, mentions with user info and timestamps.

Inputs: count.

socials_x_profileA

Extract profile information from an X (Twitter) profile page. Must navigate to a profile URL first (e.g., https://x.com/username). Returns name, handle, bio, location, website, join date, following/followers counts, verification status, and follow relationship.

Inputs: no named parameters.

socials_x_quote_tweetA

Quote tweet a post on X. Pass post_id (from socials_get_feed) and content (your quote text). IMPORTANT: Always confirm with the user before posting.

Inputs: content (required), post_id (required), media.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 36 tools

    Disambiguation4/5

    Most tools have clear, specific purposes, with platform prefixes (x_, linkedin_, instagram_) helping distinguish actions. A few overlapping tools like socials_get_feed vs socials_get_page_content and socials_engage_post vs socials_linkedin_engage could cause confusion, but descriptions clarify the intended use.

    Naming Consistency3/5

    The consistent 'socials_' prefix helps, but naming conventions are mixed: some tools use verb_noun (get_feed, create_post, open_tab), while others use platform_noun (linkedin_profile, x_search) or platform_verb (linkedin_engage). This inconsistency makes the set less predictable, though still readable.

    Tool Count2/5

    With 36 tools, the server feels over-scoped. While it covers multiple platforms (X, LinkedIn, Instagram, YouTube) plus tab management and diagnostics, the count exceeds the typical comfortable range and many tools are platform-specific, making the set heavy to navigate.

    Completeness3/5

    The tool set covers a wide range of social media actions, including search, posting, engagement, and profile retrieval. However, notable gaps exist: no post deletion/editing, no LinkedIn original post creation, and limited Instagram functionality (only create post). These missing operations may hinder full workflow completion.

    Maintenance

    ActivityMaintained
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Connects Claude Desktop to LinkedIn's data layer for AI-powered networking, enabling profile research, content creation and scheduling, engagement automation, analytics tracking, and messaging through natural language.
      85
      46
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.
      6
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables Claude to perform actions on X, LinkedIn, and Reddit through a browser extension, allowing natural language commands for networking, posting, and engagement.
      MIT