Sponsor MCPSafe10 founding slots
Registry/X Reader MCP Server

X Reader MCP Server

Verified

Universal content reader MCP Server for 10+ platforms

MIT
other
other
963stars
94forks
Scanned Oct 2, 2026
WebsiteRepositoryGITHUB
Automated scan (limited checks) · 2026-10-02

This grade comes from an automated MCPSafe scan of the server's JavaScript, TypeScript and Python source on 2026-10-02. It read the whole repository (22 files). It checks for leaked credentials, shell or code injection from function inputs, unsafe deserialization, malware signatures, install-time scripts, and weak password handling. It does not check for path traversal, server-side request forgery, prompt injection in tool descriptions, network exposure, SQL injection, cross-site scripting, or vulnerable dependencies. It has not been manually reviewed, and the code may have changed since the scan.

A+100%
Scanned 1w ago

Excellent Security

Vulnerabilities Found
0Crit
0High
0Med
0Low
0Info

Trust Score 79

Review required
Trust grade B

Trust is stricter than security: it combines reviewed security, MCP capability risk, supply-chain metadata, quality, popularity, freshness, and penalties for unknowns.

Security
100
MCP risk
52
Supply chain
92
Maintenance
55
Docs
100
Freshness
80
Risk traits
Runs shell commands
Filesystem access
Network/API access
Requires secrets
Why it scores well
  • • No reviewed severe vulnerabilities published
  • • Good documentation surface
  • • Solid supply-chain metadata
  • • Recently scanned
What reduces confidence
  • • MCP risk traits: Runs shell commands, Filesystem access, Network/API access

Security ScoreA+

100
out of 100

Vulnerabilities Found

0
Crit
0
High
0
Medi
0
Low
0
Info
Last scanned: 10/2/2026

Quality ScoreC

68
out of 100
55
Maint.
43
Popular
100
Docs
72
Compat
Maintenance55%
Popularity43%
Documentation100%
Compatibility72%

Maintenance55

Unknown
Commit Frequency65%
Release Frequency35%
Issue Response65%

Popularity43

963
Stars
0
Downloads
94
Forks
Stars Score84%
Downloads Score0%
Forks Score69%

Documentation100

README Quality100%

Available Documentation

API DocsExamplesChangelog

Compatibility72

MCP Spec Compliance80%
Transport Support75%

Features

TypeScript

Supported Transports

STDIO

Vulnerabilities(0)

This grade comes from an automated scan. Individual findings from automated scans are not published.

READMEX Reader MCP Server

View source

x-reader

![Python 3.10+](https://www.python.org/downloads/)

![License: MIT](LICENSE)

Universal content reader — fetch, transcribe, and digest content from any platform.

Give it a URL (article, video, podcast, tweet), get back structured content. Works as CLI, Python library, MCP server, or Claude Code skills.

简体中文: README.zh.md / README.zh-CN.md

What It Does

plaintext
Any URL → Platform Detection → Fetch Content → Unified Output
              ↓                      ↓
         auto-detect           text: Jina Reader
         7+ platforms          video: yt-dlp subtitles
                               audio: Whisper transcription
                               API: Bilibili / RSS / Telegram

The Python layer handles text fetching and YouTube subtitle extraction. The Claude Code skills (optional) add full Whisper transcription for video/podcast and AI-powered content analysis.

Three Layers

x-reader is composable. Use the layers you need:

| Layer | What | Format | Install |

|-------|------|--------|---------|

| Python CLI/Library | Basic content fetching + unified schema | See Install | Required |

| Claude Code Skills | Video transcription + AI analysis | Copy skills/ to your Claude Code skills directory | Optional |

| MCP Server | Expose reading as MCP tools | python mcp_server.py | Optional |

Layer 1: Python CLI

bash
# Fetch any URL
x-reader https://mp.weixin.qq.com/s/abc123

# Fetch a tweet
x-reader https://x.com/elonmusk/status/123456

# Fetch multiple URLs
x-reader https://url1.com https://url2.com

# Login to a platform (one-time, for browser fallback)
x-reader login xhs

# View inbox
x-reader list

Layer 2: Claude Code Skills

Requires cloning the repo (not included in pip install).

For video/podcast transcription and content analysis:

plaintext
skills/
├── video/       # YouTube/Bilibili/podcast → full transcript via Whisper
└── analyzer/    # Any content → structured analysis report

Install:

bash
export CLAUDE_SKILLS_DIR="/path/to/claude-code-skills"
mkdir -p "$CLAUDE_SKILLS_DIR"
cp -r skills/video "$CLAUDE_SKILLS_DIR/video"
cp -r skills/analyzer "$CLAUDE_SKILLS_DIR/analyzer"

Then in Claude Code, just send a YouTube/Bilibili/podcast link — the video skill auto-triggers and produces a full transcript + summary.

Layer 3: MCP Server

Requires cloning the repo (mcp_server.py is not included in pip install).
bash
git clone https://github.com/runesleo/x-reader.git
cd x-reader
pip install -e ".[mcp]"
python mcp_server.py

The MCP server currently targets FastMCP 1.x. The mcp and all extras pin

mcp<2; moving to MCP 2.x requires a server migration rather than removing the

version cap.

Tools exposed:

  • read_url(url) — fetch any URL
  • read_batch(urls) — fetch multiple URLs concurrently
  • list_inbox() — view previously fetched content
  • detect_platform(url) — identify platform from URL

Claude Code config (~/.claude/claude_desktop_config.json):

json
{
    "mcpServers": {
        "x-reader": {
            "command": "python",
            "args": ["/path/to/x-reader/mcp_server.py"]
        }
    }
}

Supported Platforms

| Platform | Text Fetch | Video/Audio Transcript |

|----------|-----------|----------------------|

| YouTube | ✅ Jina | ✅ yt-dlp subtitles → Groq Whisper fallback |

| Bilibili (B站) | ✅ API | ✅ via Claude Code skill |

| X / Twitter | ✅ oEmbed → FxTwitter → Article/Jina → Playwright | — |

| WeChat (微信公众号) | ✅ Jina → Playwright | — |

| Xiaohongshu (小红书) | ✅ Jina → Playwright* | — |

| Telegram | ✅ Telethon | — |

| RSS | ✅ feedparser | — |

| 小宇宙 (Xiaoyuzhou) | — | ✅ via Claude Code skill |

| Apple Podcasts | — | ✅ via Claude Code skill |

| Any web page | ✅ Jina fallback | — |

\*XHS requires a one-time login: x-reader login xhs (saves session for Playwright fallback)
X Articles and login-required X pages can use a saved local browser session: x-reader login twitter
YouTube Whisper transcription requires GROQ_API_KEY — get a free key from Groq

X / Twitter Reading Path

x-reader uses a lightweight public-first chain for X:

  1. X oEmbed for fast public tweet text.
  2. FxTwitter for structured public tweet fallback.
  3. Jina Reader for public Articles and long-form pages.
  4. Generic Jina Reader for profiles and non-status X pages.
  5. Playwright with saved session for login-required content.

For Articles or gated pages, run:

bash
x-reader login twitter
x-reader "https://x.com/user/status/123"

By default, local X cookies stay local. If you explicitly want to let Jina use

your saved X session for gated Articles, set:

bash
export X_READER_ALLOW_EXTERNAL_SESSION_COOKIES=1

Install

bash
# From GitHub (recommended)
pip install git+https://github.com/runesleo/x-reader.git

# With Telegram support
pip install "x-reader[telegram] @ git+https://github.com/runesleo/x-reader.git"

# With browser fallback (Playwright — for XHS/WeChat anti-scraping)
pip install "x-reader[browser] @ git+https://github.com/runesleo/x-reader.git"
playwright install chromium

# With all optional dependencies
pip install "x-reader[all] @ git+https://github.com/runesleo/x-reader.git"
playwright install chromium

Or clone and install locally:

bash
git clone https://github.com/runesleo/x-reader.git
cd x-reader
pip install -e ".[all]"
playwright install chromium

Dependencies for video/audio (optional)

bash
# macOS
brew install yt-dlp ffmpeg

# Linux
pip install yt-dlp
apt install ffmpeg

For Whisper transcription, get a free API key from Groq and set:

bash
export GROQ_API_KEY=your_key_here

Use as Library

python
import asyncio
from x_reader.reader import UniversalReader

async def main():
    reader = UniversalReader()
    content = await reader.read("https://mp.weixin.qq.com/s/abc123")
    print(content.title)
    print(content.content[:200])

asyncio.run(main())

Configuration

Copy .env.example to .env:

bash
cp .env.example .env

| Variable | Required | Description |

|----------|----------|-------------|

| TG_API_ID | Telegram only | From https://my.telegram.org |

| TG_API_HASH | Telegram only | From https://my.telegram.org |

| GROQ_API_KEY | Whisper only | From https://console.groq.com/keys (free) |

| INBOX_FILE | No | Path to inbox JSON (default: ./unified_inbox.json) |

| OUTPUT_DIR | No | Directory for Markdown output (default: disabled) |

| OBSIDIAN_VAULT | No | Path to Obsidian vault (writes to 01-收集箱/x-reader-inbox.md) |

Architecture

plaintext
x-reader/
├── x_reader/              # Python package
│   ├── cli.py             # CLI entry point
│   ├── reader.py          # URL dispatcher (UniversalReader)
│   ├── schema.py          # Unified data model (UnifiedContent + Inbox)
│   ├── login.py           # Browser login manager (saves sessions)
│   ├── fetchers/
│   │   ├── jina.py        # Jina Reader (universal fallback)
│   │   ├── browser.py     # Playwright headless (anti-scraping fallback)
│   │   ├── bilibili.py    # Bilibili API
│   │   ├── youtube.py     # yt-dlp subtitle extraction
│   │   ├── rss.py         # feedparser
│   │   ├── telegram.py    # Telethon
│   │   ├── twitter.py     # oEmbed → FxTwitter → Article/Jina → Playwright
│   │   ├── wechat.py      # Jina → Playwright fallback
│   │   └── xhs.py         # Jina → Playwright + session fallback
│   └── utils/
│       └── storage.py     # JSON + Markdown dual output
├── skills/                # Claude Code skills
│   ├── video/             # Video/podcast → transcript + summary
│   └── analyzer/          # Content → structured analysis
├── mcp_server.py          # MCP server entry point
└── pyproject.toml

How the Layers Work Together

plaintext
User sends URL
    │
    ├─ Text content (article, tweet, WeChat)
    │   └─ Python fetcher → UnifiedContent → inbox
    │
    ├─ Video (YouTube, Bilibili, X video)
    │   ├─ Python fetcher → metadata (title, description)
    │   └─ Video skill → full transcript via subtitles/Whisper
    │
    ├─ Podcast (小宇宙, Apple Podcasts)
    │   └─ Video skill → full transcript via Whisper
    │
    └─ Analysis requested
        └─ Analyzer skill → structured report + action items

Star History

![Star History Chart](https://star-history.com/#runesleo/x-reader&Date)

Author

*Leo (@runes_leo) — AI × Crypto independent builder. Trading on Polymarket, building data and trading systems with Claude Code and Codex.*

leolabs.me — writing · community · open-source tools · indie projects · all platforms.

X Subscription — paid content weekly, or just buy me a coffee 😁

Learn in public, Build in public.

License

MIT

Embed Security Badge

Add this badge to your README or documentation

X Reader MCP Server MCPSafe Security
[![X Reader MCP Server MCPSafe Security](https://api.mcpsafe.org
/api/badge/runesleo-x-reader.svg)](https://mcpsafe.org/registry/runesleo-x-reader)
Need more customization options?Badge Documentation

Server Information

Source
GITHUB
Language
other
License
MIT
Transport
STDIO
Added
Aug 11, 2026
Updated
Oct 1, 2026