mcp-searxng
关于一个用于让 AI Agent 可通过 SearXNG 服务来搜索外部网站内容与信息的 MCP 服务器。
erhwenkuo
README
mcp-searxng
<p align="center"> <a href="./README.md"><img alt="README in English" src="https://img.shields.io/badge/English-d9d9d9"></a> <a href="./README_TW.md"><img alt="繁體中文文件" src="https://img.shields.io/badge/繁體中文-d9d9d9"></a> </p>
一个供 AI Agent 使用的 MCP 服务器示例,旨在允许 AI Agent 通过 SearXNG 的开源元搜索引擎搜索新的外部信息。
目前,市场上涌现出许多 Google 以外的搜索引擎,试图在 Google 不擅长的领域抢占市场份额。例如,DuckDuckGo 强调不跟踪用户,Ecosia 通过每次搜索来种植树木,而 Brave Search 旨在利用集体努力来构建一个免费的搜索引擎。
然而,这些引擎返回的结果往往不尽如人意。首先,它们抓取的网页不如 Google 多;其次,它们对中文的支持很差。虽然它们可以访问一些 Google 不显示的有趣页面,但 Google 以外的搜索引擎仍然很难使用。
那么,为什么不将多个搜索引擎的结果结合起来呢!?这正是元搜索引擎所做的。SearXNG 是一款开源元搜索引擎软件,可以自托管,也可以通过热情的社区成员提供的站点使用。对于企业而言,SearXNG 提供了一种在保持隐私和安全控制的同时,使 AI Agent 能够有效地搜索其所需的外部数据的方法。
参考资料:
目的
此 MCP 服务器演示了一个基于 SSE 的 MCP 服务器(集成了 SearXNG 和 Microsoft 的 markdownify 以将网页提取为 Markdown 格式的文本)及其使用 MCP Inspector(MCP 客户端)的运行模式。
运行环境
本项目使用 uv 来管理依赖项和 Python 运行时环境。如果尚未安装 uv,您可以按照官方网站上的安装说明进行操作。
以下命令在 Ubuntu 24.04 环境中执行。对于其他操作系统的操作,请进行相应调整:
$ curl -LsSf https://astral.sh/uv/install.sh | sh
下载源代码:
$ git clone https://github.com/erhwenkuo/mcp-searxng.git
$ cd mcp-searxng
$ uv sync
运行服务
运行 SearXNG 服务
首先,在要运行的机器上安装 Docker 并执行相关配置。有关详细信息,请参阅:在 Ubuntu 上安装 Docker Engine
在项目目录中,有一个预配置的简单 SearXNG 设置,以方便测试。
mcp-searxng/searxng-docker/
├── docker-compose.yaml
└── searxng
├── settings.yml
└── uwsgi.ini
切换到 searxng-docker
目录并使用 Docker Compose 启动 SearXNG 服务:
$ cd searxng-docker
$ docker compose up -d
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
searxng docker.io/searxng/searxng:latest "/sbin/tini -- /usr/…" searxng 29 minutes ago Up 29 minutes (healthy) 0.0.0.0:8888->8080
测试 SearXNG 服务映射到本地机器的 port: 8888
。
启动 MCP-SEARXNG 服务
方法 1. 使用 uv 启动:
输入以下命令启动:
$ uv run server.py --searxng_url="http://localhost:8888"
INFO: Started server process [219904]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:5488 (Press CTRL+C to quit)
使用 Docker 启动
首先,构建 Docker 镜像:
$ docker build -t mcp-searxng .
启动 mcp-searxng。由于 mcp-searxng 服务是使用 Docker 启动的,因此在配置与 SearXNG 的连接时,不能使用 localhost
指向 SearXNG 服务地址。建议直接查询本地机器的 IP 地址,然后使用 SEARXNG_URL
环境变量进行配置。
以下启动参数假设本地机器的 IP 是 192.168.54.88
:
$ docker run -d -e SEARXNG_URL="http://192.168.54.88:8888" -p 5488:5488 mcp-searxng
验证结果
首先,安装 Node.js:
# 下载并安装 nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# 代替重新启动 shell
\. "$HOME/.nvm/nvm.sh"
# 下载并安装 Node.js:
nvm install 22
# 验证 Node.js 版本:
node -v # 应该打印 "v22.14.0"。
nvm current # 应该打印 "v22.14.0"。
# 验证 npm 版本:
npm -v # 应该打印 "10.9.2"。
接下来,启动 MCP Inspector:
$ npx @modelcontextprotocol/inspector
Starting MCP inspector...
Proxy server listening on port 3000
🔍 MCP Inspector is up and running at http://localhost:5173 🚀
在浏览器中打开 http://localhost:5173
并执行以下操作:
- 在 Transport Type 下拉列表中选择
SSE
。 - 在 URL 字段中输入 MCP 服务器的地址和端口:
http://localhost:5488/sse
。 - 单击
Connect
。如果状态显示“Connected”,则表示您已成功连接到 MCP 服务器。 - 单击顶部的“Tools”选项卡。
- 单击“List Tools”按钮,您应该会看到两个工具:
web_search
web_url_read
- 单击
web_search
。在右侧,您将看到该工具的描述和参数。在query
输入字段中输入要搜索的关键字,然后单击“Run Tool”按钮。
效果如下图所示:
测试 web_url_read
:
- 单击
web_url_read
。在右侧,您将看到该工具的描述和参数。在url
输入字段中输入要检索的网页的 URL,然后单击“Run Tool”按钮。
为什么使用 SSE
这意味着 MCP 服务器可以是一个远程运行的进程,AI Agent(客户端)可以随时随地连接、使用和断开连接。换句话说,基于 SSE 的服务器和客户端可以是解耦的进程(甚至可能在解耦的节点上)。
与基于 STDIO 的模型(客户端将服务器作为子进程生成)相比,这是不同的,更适合“云原生”用例。
MCP 服务器
server.py
是一个基于 SSE 的 MCP 服务器。默认情况下,服务器在 0.0.0.0:5488
上运行,但可以使用命令行参数进行配置,例如:
uv run server.py --host <your host> --port <your port>
启动参数:
参数 | 必需 | 默认 | 类型 | 描述 |
---|---|---|---|---|
--host |
否 | 0.0.0.0 |
str | 要绑定的主机 |
--port |
否 | 5488 |
int | 要监听的端口 |
--searxng_url |
否 | http://localhost:8888 |
str | 要连接的 SearXNG URL |
推荐服务器
Crypto Price & Market Analysis MCP Server
一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。
MCP PubMed Search
用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。
mixpanel
连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

Sequential Thinking MCP Server
这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

Nefino MCP Server
为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。
Vectorize
将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。
Mathematica Documentation MCP server
一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。
kb-mcp-server
一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。
Research MCP Server
这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

Cryo MCP Server
一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。