Skip to main content
Glama
MyWebSearch MCP
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: myscrape

亮点

一个 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.py 在 SUPPORTED_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 文件。

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.
    42
    MIT
  • A
    license
    Not graded
    quality
    C
    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.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Multi-purpose research MCP server integrating web search, deep research, web scraping, research methodology routing, and GPT Researcher report generation.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that gives agents a unified search and perception layer across web search, Bilibili, Xiaohongshu, Zhihu, YouTube, academic metadata, recruitment sites, and webpage extraction, plus research planning, health checks, and task status.
    MIT