mcp-searxng

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 并执行以下操作:

  1. 在 Transport Type 下拉列表中选择 SSE
  2. 在 URL 字段中输入 MCP 服务器的地址和端口:http://localhost:5488/sse
  3. 单击 Connect。如果状态显示“Connected”,则表示您已成功连接到 MCP 服务器。
  4. 单击顶部的“Tools”选项卡。
  5. 单击“List Tools”按钮,您应该会看到两个工具:
    • web_search
    • web_url_read
  6. 单击 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

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

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

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

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

本地
Python