关于 mcp-searxng
mcp-searxng 将 SearXNG 元搜索与网页转 Markdown 结合,为 AI Agent 提供外部信息搜索和网页读取能力。项目展示了基于 SSE 的 MCP 服务部署与连接方式。
主要功能
- 01通过 SearXNG 搜索网页
- 02读取网页并提取 Markdown
- 03提供 SSE 连接方式
- 04可用 Docker Compose 启动服务
适用场景
- 01搜索外部网站中的新信息
- 02获取网页内容供 Agent 使用
- 03将 MCP 服务与客户端分开部署
MCP 相关
这是基于 SSE 的 MCP 服务,向客户端提供 `web_search` 和 `web_url_read` 工具,用于搜索网页及读取网页内容。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍

mcp-searxng
这是一个供 AI Agent 使用的 MCP 服务示例,旨在通过 SearXNG 的开源元搜索引擎,让 AI Agent 搜索新的外部信息。
目前,市场上涌现了许多 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
运行服务
使用 Docker Compose 运行两个服务
为简化设置,你可以使用根目录下的 docker-compose.yaml 文件,同时运行 SearXNG 服务和 MCP-SEARXNG 服务。此方式会自动处理两个服务之间的网络配置,是设置 mcp-searxng 最快捷的方法。
首先,确保你位于项目根目录:
$ cd /path/to/mcp-searxng
然后,使用 Docker Compose 构建并启动两个服务:
$ docker compose build
$ docker compose up -d
检查正在运行的容器状态:
$ docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
mcp-searxng mcp-searxng-mcp "uv run server.py" mcp About a minute ago Up 50 seconds 0.0.0.0:5488->5488/tcp, [::]:5488->5488/tcp
searxng docker.io/searxng/searxng:latest "/usr/local/searxng/…" searxng About an hour ago Up 11 minutes 0.0.0.0:8888->8080/tcp, [::]:8888->8080/tcp
现在两个服务均已运行:
- SearXNG:可通过
http://localhost:8888访问 - MCP-SEARXNG:可通过
http://localhost:5488访问
停止服务:
$ docker compose down
运行 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:
# Download and install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# In lieu of restarting the shell
\. "$HOME/.nvm/nvm.sh"
# Download and install Node.js:
nvm install 22
# Verify the Node.js version:
node -v # Should print "v22.14.0".
nvm current # Should print "v22.14.0".
# Verify npm version:
npm -v # Should print "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_searchweb_url_read
- 点击
web_search。右侧会显示该工具的描述和参数。在query输入字段中输入要搜索的关键词,然后点击 “Run Tool” 按钮。
效果如下图所示:

测试 web_url_read:
- 点击
web_url_read。右侧会显示该工具的描述和参数。在url输入字段中输入要获取的网页 URL,然后点击 “Run Tool” 按钮。

为什么使用 SSE
这意味着 MCP 服务可以是一个远程运行的进程,而 AI Agent(客户端)可以随时随地连接、使用并断开连接。换句话说,基于 SSE 的服务端和客户端可以是相互解耦的进程(甚至可能运行在相互独立的节点上)。
这与基于 STDIO 的模型不同;在该模型中,客户端会将服务端作为子进程启动。SSE 更适用于“云原生”用例。
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 |
要将其添加到任意 MCP 配置文件中,请使用以下内容:
{
"mcpServers": {
"searxng": {
"url": "http://localhost:5488/sse"
}
}
}
将 localhost:5488 替换为包含你的 mcp-searxng 实例的地址。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。