MyWebSearch MCP
WebSearch Forge MCP
Un MCP de WebSearch ligero y unificado para agentes de IA.
Busca, lee, rastrea, analiza e investiga la web pública a través de un único servidor MCP.
Inicio rápido · Herramientas · Arquitectura · Configurar motores de búsqueda · 中文文档
Qué es
WebSearch Forge MCP es un servicio MCP autónomo para investigación web impulsada por agentes:
Question → search sources → fetch pages → extract content → crawl related pages → compile evidenceSe divide en capas claras:
transportsexpone MCP stdio y el adaptador opcional FastAPI.coregestiona configuración, caché, comprobaciones de seguridad, orquestación y flujos de investigación.providersimplementa funciones de búsqueda, obtención, extracción, rastreo y medios.SearXNG es la única puerta de enlace de búsqueda para Bing, Baidu, Brave, DuckDuckGo y otros motores configurados.
Related MCP server: hidrix-tools
Destacados
Un servidor MCP, seis capacidades
Conéctate una vez a transports/mcp_stdio.py:
Herramienta | Propósito |
| Encontrar fuentes candidatas a través de SearXNG |
| Obtener y extraer una URL pública |
| Buscar y luego leer los mejores resultados |
| Ejecutar múltiples búsquedas y compilar un informe |
| Rastrear recursivamente un sitio del mismo dominio con límites |
| Recuperar subtítulos de YouTube |
Puerta de enlace de búsqueda unificada
El argumento engines se pasa a SearXNG como filtro. WebSearch Forge no se distribuye de forma independiente a los sitios de búsqueda:
WebSearch Forge MCP → SearXNG → Bing / Baidu / Brave / DuckDuckGoLigero por defecto
MCP stdio no necesita un puerto de aplicación expuesto ni un servidor de base de datos. La caché es SQLite. Los paquetes opcionales añaden Trafilatura, Readability, solicitudes sigilosas, Playwright, análisis de Office/PDF, Scrapy, subtítulos de YouTube y FastAPI sin cambiar el contrato MCP.
Rastreo limitado
crawl_site admite un backend nativo sin dependencias y un backend opcional de Scrapy. Aplica límites de páginas y profundidad, permanece en el host inicial, resuelve enlaces relativos y aísla los fallos de página.
Inicio rápido
Los siguientes comandos son para Windows PowerShell.
Instalación
cd D:\my-websearch\my_websearch
py -3.12 -m pip install -r requirements.txtIniciar SearXNG
docker version
cd D:\my-websearch\my_websearch
docker compose up -d searxng
docker compose psLa puerta de enlace predeterminada es http://127.0.0.1:8080. La configuración se encuentra en config/searxng/settings.yml.
Configurar el cliente MCP
Usa mcp_config.example.json y mantén una ruta absoluta:
{
"mcpServers": {
"websearch-forge": {
"command": "py",
"args": [
"-3.12",
"D:\\my-websearch\\my_websearch\\transports\\mcp_stdio.py"
],
"env": {
"SEARXNG_URL": "http://127.0.0.1:8080",
"CACHE_TTL": "300"
}
}
}
}El adaptador stdio fuerza UTF-8 en Windows. El tráfico de bucle local omite las variables de proxy de toda la máquina por defecto; establece PROXY_URL explícitamente cuando sea necesario.
Herramientas
search_web
Busca a través de SearXNG sin descargar los cuerpos de las páginas.
{
"name": "search_web",
"arguments": {
"query": "Python 3.14 new features",
"engines": ["bing", "baidu", "brave"],
"limit": 5,
"time_range": "month"
}
}fetch_web_content
Obtiene y extrae una URL pública. Se admiten HTML, PDF, DOCX, XLSX, PPTX, CSV, Markdown y texto plano.
{
"name": "fetch_web_content",
"arguments": {
"url": "https://www.python.org",
"max_chars": 10000,
"stealth_mode": "off",
"render_mode": "auto",
"extraction_mode": "auto"
}
}La respuesta incluye URL final, estado HTTP, título, método de extracción, recuento de palabras, contenido y enlaces descubiertos.
search_and_fetch
Primero busca y luego obtiene los mejores resultados de forma independiente. Una página fallida se registra en ese elemento y no cancela el lote.
{
"name": "search_and_fetch",
"arguments": {
"query": "FastAPI MCP server",
"limit": 3,
"max_chars": 12000
}
}deep_research
Ejecuta consultas relacionadas de forma concurrente, obtiene los resultados más sólidos y devuelve un informe en Markdown con fallos a nivel de fuente.
{
"name": "deep_research",
"arguments": {
"queries": ["SearXNG engine configuration", "MCP stdio deployment"],
"breadth": 3,
"max_chars": 12000
}
}crawl_site
Rastrea un sitio del mismo host con límites estrictos de páginas y profundidad.
{
"name": "crawl_site",
"arguments": {
"url": "https://www.python.org",
"max_pages": 10,
"max_depth": 2,
"backend": "native",
"stealth_mode": "off"
}
}native es el predeterminado. Instala Scrapy y establece backend en scrapy para usar el backend opcional. Cada página informa URL, profundidad, estado, método de obtención, título, contenido y recuento de palabras.
youtube_transcript
Recupera subtítulos de YouTube con idiomas de origen y traducción opcionales.
Forma de la respuesta
{
"query": "OpenAI",
"provider": "searxng",
"engines": ["bing", "baidu", "brave"],
"total_results": 3,
"results": [
{
"title": "OpenAI | Research & Deployment",
"url": "https://openai.com/",
"description": "...",
"source": "openai.com",
"engine": "bing",
"score": 1.0
}
],
"partial_failures": []
}Los resultados parciales exitosos se conservan. Los errores de motor, página y documento se devuelven como entradas de fallo estructuradas.
Arquitectura
flowchart LR
A[Agent / MCP Client] -->|stdio JSON-RPC| B[transports/mcp_stdio.py]
B --> C[core/service.py]
C --> D[providers/search]
D --> E[SearXNG]
E --> F[Bing / Baidu / Brave / DDG]
C --> G[providers/content]
G --> H[HTTP / stealth / Playwright]
C --> I[providers/crawl]
C --> J[providers/media]
C --> K[(SQLite TTL cache)]transportsadapta protocolos; MCP y FastAPI comparten el mismo servicio.coreposee la orquestación, la política de caché, la configuración y la seguridad de URL.providers/searchse comunica con SearXNG y valida los nombres de los motores.providers/contentmaneja HTTP, transporte sigiloso, renderizado y extracción.providers/crawlcontiene los backends de rastreo nativo y Scrapy.providers/mediacontiene el proveedor de transcripciones de YouTube.
Configurar motores de búsqueda
La fuente SearXNG propiedad del proyecto es:
config/searxng/settings.ymlDos ajustes deciden si se puede llamar a un motor:
settings.ymlhabilita el motor dentro de SearXNG.providers/search/registry.pylista el nombre aceptado enSUPPORTED_ENGINES.
Reinicia después de los cambios:
cd D:\my-websearch\my_websearch
docker compose up -d --force-recreate searxngSi SearXNG aún no proporciona el motor, implementa primero ese motor de SearXNG.
Seguridad y fiabilidad
Solo se aceptan URLs HTTP y HTTPS.
Se rechazan destinos localhost, bucle local, IPv4 privada, enlace local e IPv6 privada.
Los destinos de redirección se validan de nuevo.
Las operaciones de búsqueda y obtención usan una caché TTL SQLite, 300 segundos por defecto.
Los fallos parciales no descartan el trabajo exitoso.
stdout está reservado para MCP JSON-RPC.
Capacidades opcionales
Capacidad | Habilitación |
Trafilatura / Readability | Instala |
Solicitudes sigilosas | Instala |
Renderizado de JavaScript | Instala Playwright y usa |
PDF / DOCX / XLSX / PPTX | Instala los paquetes de documentos correspondientes |
Rastreo con Scrapy | Instala Scrapy y usa |
Servicio HTTP FastAPI | Ejecuta |
Subtítulos de YouTube | Instala |
Estructura del proyecto
my_websearch/
├── assets/ # Project logo
├── config/searxng/ # SearXNG settings.yml
├── core/ # Config, cache, security, orchestration
├── providers/
│ ├── search/ # SearXNG gateway and engine allow-list
│ ├── content/ # Requests, rendering, extraction
│ ├── crawl/ # Native and Scrapy backends
│ └── media/ # YouTube transcript provider
├── transports/ # MCP stdio and FastAPI adapters
├── tests/ # Dependency-free self-checks
├── docker-compose.yml # Local SearXNG gateway
├── mcp_config.example.json # MCP client template
├── requirements.txt # Dependency entry point
├── README.md # English documentation
└── README.zh-CN.md # 中文文档Comprobación de desarrollo
cd D:\my-websearch
py -3.12 -m my_websearch.tests.test_serverSalida esperada:
my_websearch self-check: okServicio FastAPI opcional:
cd D:\my-websearch\my_websearch
py -3.12 -m transports.apiLuego abre http://127.0.0.1:8787/docs.
Licencia
Aún no se impone ninguna licencia. Añade un archivo LICENSE en la raíz antes de la distribución pública.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides comprehensive search capabilities including web search, content extraction, news search, academic search, and AI-powered multi-source research. Enables natural language access to web content and research through a production-ready MCP server.
- AlicenseNot gradedqualityFmaintenanceMCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.43MIT
- AlicenseAqualityBmaintenanceEnables AI agents to perform multi-engine web search, fetch web pages, and extract clean Markdown content via MCP, with no API keys required.35MIT
- AlicenseNot gradedqualityAmaintenanceA self-contained web-research MCP server that lets local LLM agents search, fetch, and synthesize web content using tools like web_search, web_fetch, and web_research.MIT
Related MCP Connectors
Web research for agents: quality-scored Google search, webpage extraction, and deep research.
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/iuiu-py/websearch-forge-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server