
greedygains/omniget-mcp-server
Developer toolsUniversal Social Media & Web Extraction MCP Server for AI Agents — 100% Headless Native Rust (Forked & Enhanced by Greedy Gains)
Overview
*Originally created by tonhowtf | Re-architected, enhanced & maintained as a standalone headless Rust edition by for non-commercial community benefit.* is an ultra-fast, headless Model Context Protocol (MCP) server and REST API built in . It equips AI Agents (such as Claude Desktop, Cursor, and ChatGPT) with the ability to extract, parse, and ingest rich content from social networks, modern web articles, and documents in real time. Unlike traditional scrapers that rely on heavy browser automation (Chromium / Puppeteer / Playwright), OmniGet MCP operates using asynchronous Rust HTTP engines and embedded state decoders. It responds in , consumes less than , and runs seamlessly in minimal container environments. - : Zero browser overhead. No Chromium, No WebKit, and No X11 libraries required. - : - Extracts without text truncation (...). - Decodes embedded Relay/GraphQL state and Bloks data structures directly from raw HTML.
README
OmniGet MCP Server (Headless Rust Edition)
Universal Social Media, Web & Document Extraction Engine for AI Agents
Originally created by tonhowtf | Re-architected, enhanced & maintained as a standalone headless Rust edition by Greedy Gains for non-commercial community benefit.
💡 Overview
OmniGet MCP Server is an ultra-fast, headless Model Context Protocol (MCP) server and REST API built in Native Rust. It equips AI Agents (such as Claude Desktop, Cursor, and ChatGPT) with the ability to extract, parse, and ingest rich content from social networks, modern web articles, and documents in real time.
Unlike traditional scrapers that rely on heavy browser automation (Chromium / Puppeteer / Playwright), OmniGet MCP operates 100% headlessly using asynchronous Rust HTTP engines and embedded state decoders. It responds in 1–2 seconds, consumes less than 30 MB of RAM, and runs seamlessly in minimal container environments.
✨ Key Features
- 🚀 100% Headless Native Rust: Zero browser overhead. No Chromium, No WebKit, and No X11 libraries required.
- 📱 Facebook Post & Media Extraction (Breakthrough):
- Extracts 100% complete, untruncated captions without text truncation (
...). - Decodes embedded Relay/GraphQL state and Bloks data structures directly from raw HTML.
- Automatically resolves share links and slugged URLs into canonical formats, bypassing cloud datacenter login walls.
- Retrieves high-resolution photo galleries, video streams, and hashtags.
- Extracts 100% complete, untruncated captions without text truncation (
- 📸 Instagram Posts, Reels & Carousels:
- Full caption and hashtag extraction.
- Multi-image carousel parsing with direct CDN asset URLs.
- 🐦 X / Twitter Thread Unrolling:
- Extracts single posts (
x_post) with media and metrics. - Unrolls full multi-tweet threads (
x_thread) into continuous, structured reading material.
- Extracts single posts (
- 🌐 Universal Web-to-Markdown:
- Strips ads, navigation, scripts, and clutter from any public article.
- Converts web pages into clean, token-efficient Markdown optimized for LLMs.
- 📄 PDF Document Extraction:
- Ingests and extracts clean plain-text from remote URLs or local PDF files.
- 🎬 Universal Media Info:
- Powered by
yt-dlpintegration supporting metadata extraction for 1,800+ media sites.
- Powered by
- 🔒 Enterprise-Grade Security:
- Timing-safe Bearer token authentication (
AUTH_TOKEN) using constant-time byte comparison (constant_time_eq) to protect all operational endpoints.
- Timing-safe Bearer token authentication (
- ⚡ Dual Protocol Support:
- MCP over SSE (
GET /sse+POST /messages) - Streamable HTTP MCP (
POST /mcpJSON-RPC 2.0) - REST API + OpenAPI 3.1 (
GET /openapi.json+POST /api/*)
- MCP over SSE (
🛠 Available MCP Tools
When connected to an MCP client (Claude Desktop, Cursor, etc.), the server exposes 7 powerful extraction tools:
| Tool | Parameters | Description |
|---|---|---|
facebook_post |
url (string, required) |
Extracts Facebook post content: full untruncated caption, author, high-res photos, video URLs, and hashtags. |
instagram_post |
url (string, required) |
Extracts Instagram post, Reel, or carousel: full caption, author, and all images/videos. |
x_post |
url (string, required) |
Extracts a single X/Twitter post: author, full text, attached media, and engagement metrics. |
x_thread |
url (string, required) |
Unrolls an entire X/Twitter thread into a single, cohesive Markdown document. |
web_to_markdown |
url (string, required) |
Converts any public web page or news article into clean, clutter-free Markdown for LLMs. |
pdf_text |
path / url (string, required) |
Extracts readable text from a remote PDF link or local filesystem path (pages optional). |
media_info |
url (string, required) |
Universal video/audio metadata extraction across 1,800+ supported video platforms. |
🚀 Quickstart
1. Run with Docker (Recommended)
# Build the Docker image
docker build -t omniget-mcp-server .
# Run the container
docker run -d \
-p 8080:8080 \
-e AUTH_TOKEN="your-secure-token" \
--name omniget-mcp \
omniget-mcp-server
Check health status:
curl http://localhost:8080/health
# Response: {"ok": true}
2. Run Locally with Cargo
Ensure you have Rust 1.80+ installed:
# Clone the repository
git clone https://github.com/greedygains/omniget-mcp-server.git
cd omniget-mcp-server
# Set your authentication token and run
export AUTH_TOKEN="your-secure-token"
cargo run -p omniget-server --release
The server will listen on http://0.0.0.0:8080.
3. Deploy to Railway
- Fork or push this repository to your GitHub account.
- Create a New Project in Railway and select Deploy from GitHub repo.
- Under Variables, add:
AUTH_TOKEN: A secure random token (e.g.openssl rand -hex 16).
- Railway will automatically build the
Dockerfile, assign an HTTPS domain, and manage the$PORTvariable.
🔌 Connecting to AI Clients
Claude Desktop
Edit your claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"omniget": {
"url": "https://.up.railway.app/sse?token="
}
}
}
Or using Bearer header syntax:
{
"mcpServers": {
"omniget": {
"url": "https://.up.railway.app/sse",
"headers": {
"Authorization": "Bearer "
}
}
}
}
Cursor IDE
Add to ~/.cursor/mcp.json or project-level .cursor/mcp.json:
{
"mcpServers": {
"omniget": {
"url": "https://.up.railway.app/sse?token="
}
}
}
ChatGPT (Custom Actions)
- In ChatGPT GPT Builder, go to Configure > Actions > Create new action.
- Set Authentication to Bearer and input your ``.
- Import the OpenAPI schema from:
https://.up.railway.app/openapi.json?token=
📡 API Endpoints
| Method | Endpoint | Auth | Description |
|---|---|---|---|
GET |
/health |
No | Orchestrator health check ({"ok": true}) |
GET |
/sse |
Yes | Model Context Protocol SSE stream initiation |
POST |
/messages |
Yes | Post JSON-RPC 2.0 messages to an active SSE session |
POST |
/mcp |
Yes | Streamable HTTP MCP JSON-RPC 2.0 endpoint |
GET |
/openapi.json |
Yes | OpenAPI 3.1 schema specification |
POST |
/api/facebook (alias: /api/facebook/post) |
Yes | Direct REST endpoint for Facebook extraction |
POST |
/api/instagram (alias: /api/instagram/post) |
Yes | Direct REST endpoint for Instagram extraction |
POST |
/api/x/post |
Yes | Direct REST endpoint for X/Twitter extraction |
POST |
/api/x/thread |
Yes | Direct REST endpoint for X thread unrolling |
POST |
/api/markdown (alias: /api/web/markdown) |
Yes | Direct REST endpoint for Web-to-Markdown |
POST |
/api/pdf (alias: /api/pdf/text) |
Yes | Direct REST endpoint for PDF text extraction |
POST |
/api/media (alias: /api/media/info) |
Yes | Direct REST endpoint for universal media metadata |
🤝 Acknowledgments & Attribution
This open-source project is built on the foundations of the open-source community:
- Upstream Project: The extraction core was originally derived from OmniGet by tonhowtf, a multi-platform downloader application. We express our immense gratitude for their pioneering work on universal media extraction logic.
- Greedy Gains Enhancements: Greedy Gains enhanced and maintains this headless edition for non-commercial community benefit:
- Decoupled the engine into a standalone, headless microservice free of desktop/Tauri dependencies.
- Implemented the full Model Context Protocol (MCP) specification over Server-Sent Events (SSE) and Streamable HTTP.
- Architected the Native Rust Facebook & Instagram extraction engine, enabling full 100% untruncated caption recovery and cloud datacenter login wall bypass.
- Engineered timing-safe authentication, containerization, and the REST/OpenAPI 3.1 bridge.
📄 License
This project is licensed under the GNU General Public License v3.0 (GPL-3.0) in accordance with the upstream OmniGet project.
See the LICENSE file for complete details.
Install
docker run -d \Configuration
{
"mcpServers": {
"omniget": {
"url": "https://<your-domain>.up.railway.app/sse?token=<YOUR_AUTH_TOKEN>"
}
}
}