Socials MCP
Socials MCP lets Claude automate social media actions on X, LinkedIn, Reddit, YouTube, and Instagram through your real browser session via a Chrome extension, without API keys.
Check connection status and recover auth/bridge issues.
Open, pin, navigate, focus, reload, and read the agent browser tab.
Fetch feeds and detailed post context with replies from X, LinkedIn, and Reddit (Pro).
Create original X posts and Instagram photo/carousel posts.
Reply quickly to X, LinkedIn, and YouTube posts.
Engage with X posts (like, repost, bookmark, share) and LinkedIn posts (like, repost, quote repost).
Search X with advanced operators; search LinkedIn people and posts; search YouTube and apply filters.
Get X profiles/notifications, LinkedIn profiles/connection status, and send LinkedIn connection requests.
Read YouTube search/watch pages, including video metadata and comments, and scroll pages to load more.
Attach media, fetch images for visual inspection, list content personas, and run diagnostics/health checks.
Enables searching, posting, and replying to Reddit threads through browser automation via the Socials extension.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Socials MCP Find Reddit threads about productivity and upvote them"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Socials MCP
Give Claude superpowers on X, LinkedIn, and Reddit.
Install
Install the Socials Chrome extension
In Claude Code:
/plugin marketplace add Brainrot-Creations/plugins/plugin install socials@brainrot-creations/reload-pluginsDone. 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=1Extension 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 publishingUse local MCP in plugin dev mode
Build local MCP:
cd socials/mcp
npm run buildSet 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"
}
}
}
}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.
Available Tools
36 toolssocials_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_people_searchA
Search for people on LinkedIn with filters. Filters: network (1st/2nd/3rd connections), actively_hiring. Use socials_linkedin_get_people to get results after search.
Inputs: query, network, actively_hiring.
socials_linkedin_posts_searchA
Search for posts on LinkedIn. Navigates to search results filtered to Posts. After success, use socials_get_feed to read visible posts, then socials_linkedin_engage or socials_quick_reply to interact.
Inputs: query (required).
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_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.
socials_x_searchA
Advanced X search with full operator support. User: from/to/retweets_of. Time: since/until (YYYY-MM-DD) or since_time/until_time (Unix). Engagement: min_faves/min_retweets/min_replies. Content: filter (media/images/video/links), has (links/hashtags/media), is_reply, is_retweet. Location: lang, near, place_country. Modes: top (default), latest, people, photos, videos. Query supports: #hashtags, @mentions, $cashtags, "exact phrases", -exclusions.
Inputs: query (required), to, has, from, +18 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 36 tools
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.
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.
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.
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
Related MCP Connectors
LinkedIn MCP for Claude, ChatGPT, Grok, Hermes: triage inbox, comment, find people, live profiles
LinkedIn outreach from Claude with a human veto. Gigi researches each prospect and drafts the connection request and follow-ups; from Claude you review, edit and approve drafts, triage replies, create and manage campaigns, and read outreach reports. Nothing is sent without an approval, every write tool asks first, and the connector cannot bypass LinkedIn caps or sending windows. Sign-in: OAuth with your Gigi account. Setup: https://usegigi.ai/connect-claude?ref=glama
LinkedIn outreach from Claude: invites under safe caps, follow-ups, replies and inbox triage.
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
1
Related MCP Servers
- AlicenseBqualityDmaintenanceConnects 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.8546MIT
- AlicenseNot gradedqualityCmaintenanceEnables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.6MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude AI to interact with LinkedIn through browser automation, including profile reading, people and job search, company research, post publishing, and profile editing.MIT
- AlicenseNot gradedqualityCmaintenanceEnables Claude to perform actions on X, LinkedIn, and Reddit through a browser extension, allowing natural language commands for networking, posting, and engagement.MIT
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.