Skip to main content
Glama
iuiu-py
by iuiu-py

WebSearch Forge MCP

面向 AI 代理的轻量级统一 WebSearch MCP。

通过一个 MCP 服务器搜索、读取、爬取、解析和研究公共网络。

快速开始 · 工具 · 架构 · 配置搜索引擎 · 中文文档

Python MCP SearXNG Windows

它是什么

WebSearch Forge MCP 是一个用于代理驱动网络研究的自包含 MCP 服务:

Question → search sources → fetch pages → extract content → crawl related pages → compile evidence

它分为清晰的层次:

  • transports 暴露 MCP stdio 和可选的 FastAPI 适配器。

  • core 处理配置、缓存、安全检查、编排和研究工作流。

  • providers 实现搜索、抓取、提取、爬取和媒体功能。

  • SearXNG 是 Bing、Baidu、Brave、DuckDuckGo 和其他已配置引擎的唯一搜索网关。

Related MCP server: hidrix-tools

亮点

一个 MCP 服务器,六项能力

只需连接一次 transports/mcp_stdio.py

工具

用途

search_web

通过 SearXNG 查找候选来源

fetch_web_content

抓取并提取一个公共 URL

search_and_fetch

先搜索,再读取最热门的结果

deep_research

运行多次搜索并编制报告

crawl_site

递归爬取有界同域站点

youtube_transcript

获取 YouTube 字幕

统一搜索网关

engines 参数作为过滤器传递给 SearXNG。WebSearch Forge 不会独立地向搜索网站扇出请求:

WebSearch Forge MCP → SearXNG → Bing / Baidu / Brave / DuckDuckGo

默认轻量

MCP stdio 不需要暴露应用程序端口或数据库服务器。缓存使用 SQLite。可选包添加 Trafilatura、Readability、隐身请求、Playwright、Office/PDF 解析、Scrapy、YouTube 字幕和 FastAPI,而无需更改 MCP 契约。

有界爬取

crawl_site 支持零依赖的原生后端和可选的 Scrapy 后端。它强制执行页面和深度限制,保持在起始主机上,解析相对链接,并隔离页面故障。

快速开始

以下命令适用于 Windows PowerShell。

安装

cd D:\my-websearch\my_websearch
py -3.12 -m pip install -r requirements.txt

启动 SearXNG

docker version
cd D:\my-websearch\my_websearch
docker compose up -d searxng
docker compose ps

默认网关是 http://127.0.0.1:8080。配置位于 config/searxng/settings.yml

配置 MCP 客户端

使用 mcp_config.example.json 并保持绝对路径:

{
  "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"
      }
    }
  }
}

stdio 适配器在 Windows 上强制使用 UTF-8。默认情况下,回环流量绕过机器级代理变量;需要时显式设置 PROXY_URL

工具

search_web

通过 SearXNG 搜索,无需下载页面正文。

{
  "name": "search_web",
  "arguments": {
    "query": "Python 3.14 new features",
    "engines": ["bing", "baidu", "brave"],
    "limit": 5,
    "time_range": "month"
  }
}

fetch_web_content

抓取并提取一个公共 URL。支持 HTML、PDF、DOCX、XLSX、PPTX、CSV、Markdown 和纯文本。

{
  "name": "fetch_web_content",
  "arguments": {
    "url": "https://www.python.org",
    "max_chars": 10000,
    "stealth_mode": "off",
    "render_mode": "auto",
    "extraction_mode": "auto"
  }
}

响应包括最终 URL、HTTP 状态、标题、提取方法、字数、内容和发现的链接。

search_and_fetch

先搜索,然后独立抓取最热门的结果。失败的页面记录在该条目上,不会取消整个批次。

{
  "name": "search_and_fetch",
  "arguments": {
    "query": "FastAPI MCP server",
    "limit": 3,
    "max_chars": 12000
  }
}

deep_research

并发运行相关查询,抓取最强结果,并返回带有来源级故障的 Markdown 报告。

{
  "name": "deep_research",
  "arguments": {
    "queries": ["SearXNG engine configuration", "MCP stdio deployment"],
    "breadth": 3,
    "max_chars": 12000
  }
}

crawl_site

以硬性页面和深度限制爬取同主机站点。

{
  "name": "crawl_site",
  "arguments": {
    "url": "https://www.python.org",
    "max_pages": 10,
    "max_depth": 2,
    "backend": "native",
    "stealth_mode": "off"
  }
}

native 是默认值。安装 Scrapy 并将 backend 设置为 scrapy 以使用可选后端。每个页面报告 URL、深度、状态、抓取方法、标题、内容和字数。

youtube_transcript

获取 YouTube 字幕,可指定来源和翻译语言。

响应结构

{
  "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": []
}

成功的部分结果会被保留。引擎、页面和文档错误以结构化失败条目形式返回。

架构

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)]
  • transports 适配协议;MCP 和 FastAPI 共享同一服务。

  • core 负责编排、缓存策略、配置和 URL 安全。

  • providers/search 与 SearXNG 通信并验证引擎名称。

  • providers/content 处理 HTTP、隐身传输、渲染和提取。

  • providers/crawl 包含原生和 Scrapy 爬取后端。

  • providers/media 包含 YouTube 字幕提供器。

配置搜索引擎

项目自有的 SearXNG 源码:

config/searxng/settings.yml

两个设置决定引擎是否可以被调用:

  1. settings.yml 在 SearXNG 内部启用引擎。

  2. providers/search/registry.pySUPPORTED_ENGINES 中列出接受的名称。

更改后重启:

cd D:\my-websearch\my_websearch
docker compose up -d --force-recreate searxng

如果 SearXNG 尚未提供该引擎,请先实现该 SearXNG 引擎。

安全性与可靠性

  • 仅接受 HTTP 和 HTTPS URL。

  • 拒绝 localhost、回环、私有 IPv4、链路本地和私有 IPv6 目标。

  • 重定向目标会再次验证。

  • 搜索和抓取操作使用 SQLite TTL 缓存,默认 300 秒。

  • 部分失败不会丢弃成功的工作。

  • stdout 保留给 MCP JSON-RPC。

可选能力

能力

启用方式

Trafilatura / Readability

安装 requirements-api.txt

隐身请求

安装 curl-cffi 并使用 stealth_mode=high

JavaScript 渲染

安装 Playwright 并使用 render_mode=browser

PDF / DOCX / XLSX / PPTX

安装匹配的文档包

Scrapy 爬取

安装 Scrapy 并使用 backend=scrapy

FastAPI HTTP 服务

运行 py -3.12 -m transports.api

YouTube 字幕

安装 youtube-transcript-api

项目结构

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            # 中文文档

开发检查

cd D:\my-websearch
py -3.12 -m my_websearch.tests.test_server

预期输出:

my_websearch self-check: ok

可选的 FastAPI 服务:

cd D:\my-websearch\my_websearch
py -3.12 -m transports.api

然后打开 http://127.0.0.1:8787/docs

许可证

目前未施加任何许可证。在公开发布之前,请添加根级别的 LICENSE 文件。

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.
    43
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A 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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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