🌐 MCP Web Engine & Search Gateway
Privacy-First, Self-Hostable & SSRF-Hardened MCP Server & Web Engine for AI Agents MCP Specification 2026-07-28 Pure Stateless Core & Stdio / HTTP Dual Mode
⚡ Instant Quickstart with uvx (Recommended for AI Agents)
AI agents (Claude Desktop, Cursor, Windsurf, TurboLLM, Hermes Agent) can run mcp-web-engine in an isolated ephemeral environment with zero configuration:
# Run stdio MCP server in an isolated environment (10ms startup, 0% system contamination)
uvx mcp-web-engine
Or run via Git repository:
uvx --from git+https://github.com/Arbolencio/mcp-web-engine mcp-web-engine
📌 What it does & Why it exists
mcp-web-engine is a high-performance Model Context Protocol (MCP) server implementing the MCP Specification 2026-07-28 Pure Stateless Core. It provides AI Agents with secure, private, and SSRF-hardened access to multi-engine web search, raw content fetching, and clean HTML-to-Markdown extraction.
Key Capabilities & Architecture
- Dual Execution Mode:
- Stdio Mode (Default): Runs JSON-RPC over
stdin/stdoutfor direct LLM client integration (uvx mcp-web-engine). - HTTP/SSE Server Mode: Runs FastAPI/Uvicorn server (
mcp-web-engine --serve).
- Stdio Mode (Default): Runs JSON-RPC over
- Pure Stateless Core (Spec 2026-07-28): Zero sessions, zero state, zero initialize handshake required. Every request is completely independent.
- Protocol Methods: Implements
server/discover,tools/list, andtools/callwith standard JSON-RPC 2.0. - Zero Third-Party Tracking: Powered by an internal SearXNG meta-search engine aggregating 70+ sources with DuckDuckGo fallback.
- Automatic URL Normalization: Handled transparently by
normalize_searxng_url()— any providedSEARXNG_URLvariation (http://127.0.0.1:8082,http://127.0.0.1:8082/,http://127.0.0.1:8082/search) automatically appends/searchif missing. - SSRF Hardened: Pre-request DNS resolution checks prevent agents from accessing internal networks (
localhost,127.0.0.1,192.168.x.x,169.254.169.254). Step-by-step HTTP 301/302 redirect re-validation. - Zero
--break-system-packages: Executed 100% in sandboxed virtual environments created on-the-fly byuvorvenv.
🔌 Integration Guides
1. TurboLLM / Local MCP Catalog
{
id: 'mcp-web-engine',
name: 'MCP Web Engine',
cat: 'Search',
desc: 'Privacy-first, self-hostable & SSRF-hardened web search engine and scraper for AI agents.',
cmd: 'uvx mcp-web-engine',
uvx: true,
argNote: 'Requires a running SearXNG instance.',
envs: [
{ key: 'SEARXNG_URL', desc: 'SearXNG meta-search endpoint (default: http://127.0.0.1:8082/search)', required: true },
],
}
2. Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"mcp-web-engine": {
"command": "uvx",
"args": ["mcp-web-engine"],
"env": {
"SEARXNG_URL": "http://127.0.0.1:8082/search"
}
}
}
}
3. Cursor / Windsurf / Hermes Agent
{
"mcpServers": {
"mcp-web-engine": {
"command": "uvx",
"args": ["mcp-web-engine"]
}
}
}
🛠️ Provided MCP Tools
| Tool Name | Parameters | Description |
|---|---|---|
web_search |
query (str), limit (int, default: 10) |
Multi-engine meta-search via SearXNG returning structured JSON results |
fetch_url |
url (str), max_bytes (int, optional) |
Fetches raw web content after strict SSRF security validation |
extract_markdown |
url (str), max_bytes (int, optional) |
Scrapes a webpage and converts HTML into clean, LLM-optimized Markdown |
⚙️ Configuration & Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
SEARXNG_URL |
Yes | http://127.0.0.1:8082/search |
SearXNG meta-search endpoint (Auto-normalizes trailing slashes and missing /search) |
PORT |
No | 5050 |
HTTP/SSE server port (Used only when running in --serve mode) |
HOST |
No | 0.0.0.0 |
HTTP/SSE server binding host |
API_KEY |
No | "" |
Optional authentication key for HTTP endpoints |
🛠️ Development & Building
# Clone Repository
git clone https://github.com/Arbolencio/mcp-web-engine.git
cd mcp-web-engine
# Build Wheel for PyPI
python3 -m build --wheel
# Run locally in stdio mode via uv
uv run python -m mcp_web_engine.main
# Run locally in HTTP server mode via uv
uv run python -m mcp_web_engine.main --serve
🛡️ Security & Environment Isolation
- SSRF Hardening: Blocks
localhost, loopbacks, private subnets (10.0.0.0/8,192.168.0.0/16,172.16.0.0/12), percent-encoding bypasses (%31%32%37...), and re-validatesLocationheaders on HTTP redirects step-by-step. - Zero Package Pollution: Execution via
uvxorbin/cli.jsnever modifies global site-packages or uses dangerous flags like--break-system-packages.
📄 License
MIT License © 2026 MCP Web Engine Contributors.
Metadata
Release files for mcp-web-engine 1.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_web_engine-1.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Release files / mcp_web_engine-1.0.5-py3-none-any.whl
| Download URL | mcp_web_engine-1.0.5-py3-none-any.whl |
|---|---|
| Size | 19.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3f38c3fbacec1d3a91abcde1c95488c294123d755debb391dd66cbb15d775e51
|
|
BLAKE2b-256 checksum How to use checksums |
b4cbe0701d6d7c6c15ec555d86d6f926b7f03ec93e46791c213f5790669c54c0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|