使用说明
SearXNG MCP服务器
模型上下文协议(MCP)服务器的MCP-sse实现与 SearXNG 为AI代理提供强大的、尊重隐私的搜索功能。
概述
该项目演示了如何构建一个MCP服务器,使AI代理能够使用SearXNG实例执行web搜索。它作为一个实用的模板,使用SearXNG作为后端创建自己的MCP服务器。
该实现遵循Anthropic为构建MCP服务器制定的最佳实践,允许与任何兼容MCP的客户端无缝集成。
先决条件
SearXNG服务器(必需)
您必须有一个正在运行且可访问的SearXNG服务器。推荐的方式是通过Docker:
docker run -d --name=searxng -p 32768:8080 -v "/root/searxng:/etc/searxng" \
-e "BASE_URL=http://0.0.0.0:32768/" \
-e "INSTANCE_NAME=home" \
--restart always searxng/searxng
- 这将在端口32768上运行SearXNG,并在
/root/searxng. - MCP服务器预计SearXNG将在
http://172.17.0.1:32768默认情况下(请参见.env).
安装
使用紫外线
如果没有,请安装uv:
pip install uv
克隆此存储库:
git clone https://github.com/The-AI-Workshops/searxng-mcp-server.git
cd searxng-mcp-server/dev/searXNG-mcp
安装依赖项:
uv pip install -r requirements.txt
创建一个 .env 基于所提供示例的文件:
nano .env
# Edit .env as needed
在中配置环境变量 .env 文件(请参阅配置部分)。
使用Docker(推荐)
构建Docker镜像:
docker build -t mcp/searxng-mcp .
创建一个 .env 归档并配置您的环境变量。
运行Docker镜像:
docker run -d --env-file ./.env -p 32769:32769 mcp/searxng-mcp
使用Smithery
史密瑟里 是一个用于管理AI代理工具和MCP服务器的命令行工具。
如果您没有Smithery,请安装它(有关各种安装方法,请参阅Smithery文档,例如使用pipx):
pipx install smithery
使用Smithery安装SearXNG MCP服务器:
smithery install @The-AI-Workshops/searxng-mcp-server
这将把服务器及其依赖项安装到Smithery管理的专用环境中。
安装后,Smithery将为您提供已安装服务器的路径。您需要导航到此目录进行配置。例如,如果Smithery将工具安装到 ~/.smithery/tools/,路径可能是 ~/.smithery/tools/The-AI-Workshops/searxng-mcp-server.
创建一个 .env 通过复制示例将文件复制到服务器目录中:
# Example:
# cd ~/.smithery/tools/The-AI-Workshops/searxng-mcp-server
cp .env.example .env
nano .env
# Edit .env as needed
在中配置环境变量 .env 文件(请参阅配置部分)。
配置
以下环境变量可以在您的 .env 文件:
| 变量 | 描述 | 示例 |
|---|---|---|
| SEARXNG_BASE_URL | 您的SEARXNG实例的基本URL | http://172.17.0.1:32768 |
| HOST | 使用SSE传输时要绑定的主机 | 0.0.0.0 |
| PORT | 使用SSE传输时要监听的端口 | 32769 |
| TRANSPORT | 传输协议(sse或stdio) | sse |
运行服务器
使用紫外线
苏格兰和南方能源公司运输
集 TRANSPORT=sse 在……里面 .env 那么:
uv run dev/searXNG-mcp/server.py
标准运输
使用stdio,MCP客户端本身可以启动MCP服务器,因此此时无需运行任何东西。
使用Docker
苏格兰和南方能源公司运输
docker build -t mcp/searxng-mcp .
docker run --rm -it -p 32769:32769 --env-file dev/searXNG-mcp/.env -v $(pwd)/dev/searXNG-mcp:/app mcp/searxng-mcp
- 这
-v $(pwd)/dev/searXNG-mcp:/appmount允许您实时编辑主机上的代码和.env文件,并将更改反映在正在运行的容器中。 - 服务器将在以下时间可用
http://localhost:32769/sse.
标准运输
使用stdio,MCP客户端本身可以启动MCP服务器容器,因此此时无需运行任何东西。
与Smithery一起跑步
苏格兰和南方能源公司运输
集 TRANSPORT=sse 在……里面 .env 在Smithery安装的服务器目录中。
然后,您通常可以在Smithery为该工具创建的虚拟环境中使用Python解释器运行服务器:
# Navigate to the server directory, e.g.,
# cd ~/.smithery/tools/The-AI-Workshops/searxng-mcp-server
~/.smithery/venvs/The-AI-Workshops_searxng-mcp-server/bin/python server.py
或者,如果Smithery为已安装的工具提供直接运行命令(请查看Smithery文档):
smithery run @The-AI-Workshops/searxng-mcp-server
服务器将根据您在中的HOST和PORT设置可用 .env (例如。, http://localhost:32769/sse).
标准运输
使用stdio,MCP客户端本身将启动服务器。客户端配置需要指向 server.py Smithery托管目录中的脚本,可能使用 smithery exec 或者指向工具虚拟环境中Python解释器的直接路径。有关示例,请参阅“与MCP客户端集成”部分。
与MCP客户端集成
SSE配置
一旦服务器运行了SSE传输,您就可以使用以下配置连接到它:
{
"mcpServers": {
"searxng": {
"transport": "sse",
"url": "http://localhost:32769/sse"
}
}
}
Windsurf用户注意事项: 使用 serverUrl 而不是 url 在您的配置中:
{
"mcpServers": {
"searxng": {
"transport": "sse",
"serverUrl": "http://localhost:32769/sse"
}
}
}
n8n用户注意事项: 使用 host.docker.internal 而不是 localhost 由于n8n必须从其自身容器外部到达主机:
因此,MCP节点中的完整URL将是: http://host.docker.internal:32769/sse
如果您使用的值不是默认的32769,请确保更新端口。
带Stdio配置的Python
将此服务器添加到Claude Desktop、Windsurf或任何其他MCP客户端的MCP配置中:
{
"mcpServers": {
"searxng": {
"command": "python",
"args": ["dev/searXNG-mcp/server.py"],
"env": {
"TRANSPORT": "stdio",
"SEARXNG_BASE_URL": "http://localhost:32768",
"HOST": "0.0.0.0",
"PORT": "32769"
}
}
}
}
带Stdio配置的Docker
{
"mcpServers": {
"searxng": {
"command": "docker",
"args": ["run", "--rm", "-i",
"-e", "TRANSPORT",
"-e", "SEARXNG_BASE_URL",
"-e", "HOST",
"-e", "PORT",
"mcp/searxng-mcp"],
"env": {
"TRANSPORT": "stdio",
"SEARXNG_BASE_URL": "http://localhost:32768",
"HOST": "0.0.0.0",
"PORT": "32769"
}
}
}
}
带标准配置的Smithery
如果您使用Smithery安装了服务器,则可以将MCP客户端配置为通过stdio运行它。Smithery提供 exec 命令从工具环境中运行可执行文件。
{
"mcpServers": {
"searxng": {
"command": "smithery",
"args": ["exec", "@The-AI-Workshops/searxng-mcp-server", "--", "python", "server.py"],
// "cwd" (current working directory) might be automatically handled by Smithery.
// If server.py is in a subdirectory, adjust the python script path e.g., "python", "path/to/server.py"
"env": {
"TRANSPORT": "stdio",
"SEARXNG_BASE_URL": "http://localhost:32768", // Adjust as needed
"HOST": "0.0.0.0", // Typically not used by stdio server itself but good to set
"PORT": "32769" // Typically not used by stdio server itself
}
}
}
}
或者,您可以在Smithery创建的虚拟环境中找到Python解释器的路径(例如。, ~/.smithery/venvs/The-AI-Workshops_searxng-mcp-server/bin/python)以及通往 server.py (例如。, ~/.smithery/tools/The-AI-Workshops/searxng-mcp-server/server.py)并直接使用它们:
{
"mcpServers": {
"searxng": {
"command": "~/.smithery/venvs/The-AI-Workshops_searxng-mcp-server/bin/python",
"args": ["~/.smithery/tools/The-AI-Workshops/searxng-mcp-server/server.py"],
// "cwd" should be the directory containing server.py if not using absolute paths for args,
// or if server.py relies on relative paths for other files (like .env).
// Example: "cwd": "~/.smithery/tools/The-AI-Workshops/searxng-mcp-server",
"env": {
"TRANSPORT": "stdio",
"SEARXNG_BASE_URL": "http://localhost:32768"
// Other necessary env vars from .env can be duplicated here
}
}
}
}
确保路径适合您的Smithery安装,并且 .env 文件可由以下人员发现 server.py (通常通过设置 cwd 到服务器的根目录或确保 server.py 如果Smithery设置了绝对路径,则从绝对路径加载它)。
构建自己的服务器
此模板为构建更复杂的MCP服务器提供了基础。建立自己的:
- 通过使用创建方法来添加自己的工具
@mcp.tool()装饰器 - 创建自己的生命周期函数来添加自己的依赖项(客户端、数据库连接等)
- 添加提示和资源
@mcp.resource()和@mcp.prompt()
SearXNG搜索工具参数
这 search 该工具支持以下参数(除 q):
q(必填):搜索查询字符串。categories:以逗号分隔的活动搜索类别列表。engines:以逗号分隔的活动搜索引擎列表。language:语言代码。page:搜索页码(默认值:1)。time_range:[日、月、年]format:[json、csv、rss](默认值:json)results_on_new_tab: [0, 1]image_proxy:[正确,错误]autocomplete:[谷歌、dbpedia、duckduckgo、mwmble、startpage、维基百科、stract、swisscows、qwant]safesearch: [0, 1, 2]theme:[简单]enabled_plugins:已启用插件的列表。disabled_plugins:禁用插件列表。enabled_engines:启用的发动机列表。disabled_engines:停用发动机列表。
请参阅 SearXNG文件 了解更多详情。
许可证
MIT许可证
