Overseas Social MCP Server
Allows searching Reddit posts, optionally within a specific subreddit, retrieving hot posts from a subreddit, and fetching top comments from a Reddit post via the official Reddit API.
Allows retrieving recent messages from public Telegram channels, with an optional keyword filter, via the official Telegram MTProto API.
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., "@Overseas Social MCP ServerSearch Reddit for recent posts about the new iPhone"
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.
Overseas Social MCP Server
An MCP (Model Context Protocol) server that unifies collection of public data from overseas social platforms behind one set of agent-callable tools, for Claude Code / Codex / Cursor and any MCP-compatible agent:
Platform | Backend | API type | Default |
X / Twitter | unofficial (multi-account rotation) | on | |
official API ✅ | on (needs keys) | ||
Telegram | official MTProto ✅ | on (needs keys) | |
unofficial (high-risk) | off |
Graceful degradation: configure only the platforms you use. If a backend's
dependency or credentials are missing, its tools return a structured
{ok:false, error:"backend_unavailable", details:[...]} payload with setup
instructions — the server never crashes.
⚠️ Personal, low-frequency, research use only. Prefer the official APIs (Reddit, Telegram). Unofficial scraping (X, LinkedIn) may violate ToS and get accounts restricted — use throwaway accounts and keep volumes tiny.
Tools
Tool | Platform | Purpose |
| X | Search recent tweets by query (supports X operators) |
| X | Recent tweets from a user |
| Search posts (optionally in one subreddit) | |
| Hot posts of a subreddit | |
| Top comments of a post | |
| Telegram | Recent messages of a public channel (optional keyword filter) |
| One profile (high-risk) | |
| One company page (high-risk) | |
| – | Capability matrix |
| – | Which backends are installed & configured |
All content tools return the same normalised schema (identical to the mediacrawler-mcp wrapper), so the upstream skill treats every platform uniformly:
{
"ok": true, "platform": "reddit", "count": 12,
"items": [{
"id": "...", "author": "...", "author_id": null,
"content": "...", "like_count": 42, "comment_count": 7,
"publish_time": 1784473477.0, "url": "https://...",
"extra": { "...": "platform-specific fields" }, "raw": null
}],
"warnings": []
}Related MCP server: linkfetch-mcp
Install
# core (always)
pip install --user "mcp>=1.2.0,<2"
# then only the backends you need:
pip install --user twscrape # X
pip install --user praw # Reddit
pip install --user telethon # Telegram
pip install --user linkedin_scraper selenium # LinkedIn (high-risk)
# or everything: pip install --user -e ".[all]"Per-platform setup
Reddit (official — easiest, lowest risk)
Create a script app at https://www.reddit.com/prefs/apps .
Set
OSMCP_REDDIT_CLIENT_ID,OSMCP_REDDIT_CLIENT_SECRET,OSMCP_REDDIT_USER_AGENT.
Telegram (official)
Get
api_id/api_hashat https://my.telegram.org → API development tools.Log in once, yourself, in a terminal (it prompts for api_id / api_hash, phone number, login code and 2FA password):
cd /path/to/overseas-social-mcp && python3 -m overseas_social_mcp.telegram_loginThis writes
OSMCP_TG_API_ID/OSMCP_TG_API_HASH/OSMCP_TG_SESSIONto~/.config/overseas-social-mcp/.env(chmod 600) and creates~/.config/overseas-social-mcp/telegram.session. Every server process loads that env file at startup, so no secrets go into the MCP client config.python3 -m overseas_social_mcp.telegram_login --checkverifies the session without prompting;--resetstarts over.
The session is shared by every server process (one per agent session); a file lock serialises Telegram calls so they don't collide on the SQLite session.
X / Twitter (twscrape)
pip install --user twscrape.Add a logged-in account from browser cookies. Copy
auth_tokenandct0from x.com -> DevTools -> Application -> Cookies, then paste them at the hidden prompt asauth_token=xxx; ct0=yyy:twscrape --db ~/.config/overseas-social-mcp/x_accounts.db add_cookie my_accountAlways pass
--db: the CLI otherwise usesaccounts.dbin the current directory, which the server does not read.OSMCP_X_ACCOUNTS_DBoverrides the path. Use throwaway accounts.
backend_status reports accounts_active. With no active account x_search and
x_user_posts return backend_unavailable, not an empty result.
LinkedIn (high-risk — off by default)
Only enable with a throwaway account, at your own risk:
OSMCP_LINKEDIN_ENABLED=true, OSMCP_LINKEDIN_EMAIL/PASSWORD, OSMCP_CHROMEDRIVER.
See .env.example for all variables.
Register with an MCP client
Claude Code
claude mcp add overseas-social \
--env PYTHONPATH=/path/to/overseas-social-mcp \
--env OSMCP_REDDIT_CLIENT_ID=... \
--env OSMCP_REDDIT_CLIENT_SECRET=... \
-- python -m overseas_social_mcp.serverClaude Desktop / Cursor
Paste examples/claude_desktop_config.snippet.json
into your MCP config and fill in the paths/keys.
Run backend_status first to confirm what's ready.
Test
pip install --user pytest
PYTHONPATH=. pytest -q # no network, no credentials requiredSafety & compliance
Prefer official APIs (Reddit, Telegram); they are the compliant path.
X and LinkedIn backends are unofficial — throwaway accounts, tiny volumes, low frequency; you accept the ToS / account risk.
Do not collect private personal data. Respect platform ToS and local law.
Built-in guardrails: per-call hard cap, local sliding-window rate limit, configurable delays.
License
MIT — see LICENSE. Backends are optional third-party packages that you install yourself and are not bundled here: twscrape (MIT), PRAW (BSD-2-Clause), Telethon (MIT), linkedin_scraper (GPL-3.0 on GitHub). Each is governed by its own license.
Available Tools
10 toolsbackend_status
Report which backends are configured & importable (without making calls).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
linkedin_company
Fetch a single LinkedIn company page (industry, size, HQ, about).
HIGH RISK: see linkedin_profile. Disabled by default.
Args: company_url: full https://www.linkedin.com/company/... URL.
| Name | Required | Description | Default |
|---|---|---|---|
| company_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
linkedin_profile
Fetch a single LinkedIn profile (name, headline, experience, education).
HIGH RISK: violates LinkedIn ToS and may restrict your account. Disabled by default; enable via OSMCP_LINKEDIN_ENABLED=true with a throwaway account.
Args: profile_url: full https://www.linkedin.com/in/... URL.
| Name | Required | Description | Default |
|---|---|---|---|
| profile_url | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
list_platforms
List supported platforms and their tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
reddit_post_comments
Fetch top-level comments of a Reddit post by its id.
Args: post_id: Reddit submission id (the base36 id, not the full URL). max_count: max comments (default from config, hard-capped).
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | ||
| max_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
reddit_search
Search Reddit posts (optionally within one subreddit) via the official API.
Args: query: search query. subreddit: optional subreddit name (without r/); searches r/all if omitted. max_count: max posts (default from config, hard-capped).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_count | No | ||
| subreddit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
reddit_subreddit_hot
Fetch hot posts from a subreddit via the official API.
Args: subreddit: subreddit name (without r/). max_count: max posts (default from config, hard-capped).
| Name | Required | Description | Default |
|---|---|---|---|
| max_count | No | ||
| subreddit | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
telegram_channel_messages
Fetch recent messages from a public Telegram channel or group (optionally filtered).
Args: channel: channel/group username (with or without @), a t.me link (t.me/name, t.me/s/name, t.me/name/123), or a numeric -100… id. query: optional keyword to filter messages server-side. max_count: max messages (default from config, hard-capped).
Items are newest first; publish_time is UTC. Requires telethon +
api_id/api_hash + an authorized session (one-time interactive login:
python3 -m overseas_social_mcp.telegram_login, run by the user).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| channel | Yes | ||
| max_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
x_search
Search recent public tweets on X/Twitter matching a query.
Args:
query: X search query (supports X search operators, e.g. from:user,
lang:en, since:2026-01-01).
max_count: max tweets to return (default from config, hard-capped).
Returns normalised items: {id, author, content, like_count, comment_count, publish_time, url, extra:{retweet_count, view_count, lang}}. Requires twscrape installed + X accounts added & logged in.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
x_user_posts
Fetch recent public tweets from a specific X/Twitter user.
Args: username: handle with or without leading @. max_count: max tweets (default from config, hard-capped).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | ||
| max_count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.0- First observed
backend_status - First observed
linkedin_company - First observed
linkedin_profile - First observed
list_platforms - First observed
reddit_post_comments - First observed
reddit_search - First observed
reddit_subreddit_hot - First observed
telegram_channel_messages - First observed
x_search - First observed
x_user_posts
Related MCP Connectors
Scrape X, Reddit, LinkedIn, GitHub, Instagram and TikTok data as tools for AI agents.
Search and read public data from X/Twitter, Reddit, YouTube, Instagram, TikTok, Facebook, Threads, Bluesky, Trustpilot, Amazon, Google Maps, news, forums and the web. 90+ read-only tools plus ready-made research playbooks (lead finding, brand monitoring, review mining). Hosted: connect with an API key; 50 free requests per endpoint each month.
X (Twitter) search, profiles and trends, YouTube search, video stats and comments, TikTok comments.
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides AI agents with unified access to 21 social media platforms and 105 endpoints for retrieving profiles, posts, comments, search results, trending content, and analytics without per-platform authentication.4147 npmMIT
- AlicenseBqualityCmaintenanceEnables AI agents to search and retrieve LinkedIn jobs, profiles, companies, people, posts, reactions, groups, and inbox conversations through typed MCP tools, with safety limits and no browser automation.2457 npmMIT
- AlicenseAqualityCmaintenanceEnables agents to retrieve the contents of public social media posts — text, author, date, engagement counts, links, photos, and video frames — from X, Instagram, Threads, Facebook, LinkedIn, Bluesky, Mastodon, YouTube, Vimeo, Tumblr, Pinterest, and Reddit by simply passing a post URL. It works entirely without logins, cookies, or API keys, reading only what each site already exposes publicly.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables unified access to X/Twitter and Reddit for searching and reading posts, profiles, feeds, and comments, plus authenticated actions such as posting, replying, liking, following, bookmarking, subscribing, and saving.MIT