使用说明
SearXNG MCP网桥服务器
一 MCP(模型上下文协议) 桥接到某个服务器的服务器 SearXNG 元搜索引擎实例。它将SearXNG搜索功能作为MCP工具公开,允许任何兼容MCP的客户端(Claude Desktop、Cursor、opencode等)通过自托管、尊重隐私的搜索引擎执行网络搜索。
需求
- Node.js>=25.0.0<26
- 跑步 SearXNG 启用JSON API的实例
快速开始
1.设置SearXNG实例
docker run -d -p 8080:8080 --name searxng searxng/searxng
2.运行MCP桥
STDIO模式 (默认情况下,适用于Claude Desktop等MCP客户端):
npx -y @nitish-raj/searxng-mcp-bridge
HTTP模式 (适用于网络/远程客户端):
TRANSPORT=http PORT=3002 SEARXNG_INSTANCE_URL=http://localhost:8080 npx -y @nitish-raj/searxng-mcp-bridge
通过CLI标志 (替代env-var):
SEARXNG_INSTANCE_URL=http://localhost:8080 npx -y @nitish-raj/searxng-mcp-bridge --transport=http
3.配置您的MCP客户端
克劳德桌面版 (~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上, %APPDATA%\Claude\claude_desktop_config.json 在Windows上):
{
"mcpServers": {
"searxng-bridge": {
"command": "npx",
"args": ["-y", "@nitish-raj/searxng-mcp-bridge"],
"env": {
"SEARXNG_INSTANCE_URL": "http://localhost:8080"
}
}
}
}
光标/VS代码 (mcp_settings.json):
{
"mcpServers": {
"searxng-bridge": {
"command": "npx",
"args": ["-y", "@nitish-raj/searxng-mcp-bridge"],
"env": {
"SEARXNG_INSTANCE_URL": "http://localhost:8080"
},
"disabled": false
}
}
}
MCP工具
search
使用配置的SearXNG实例执行web搜索。
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
query |
string | 是 | 搜索查询字符串 |
language |
string | 否 | 结果的语言代码(例如。, en-US, fr, de) |
categories |
string[] | 否 | 要搜索的类别(例如。, ["general", "images", "news"]) |
time_range |
string | 否 | 时间范围筛选器: day, week, month, year |
safesearch |
number | 否 | 安全搜索级别: 0 关 1 (中等), 2 (严格) |
format |
string | 否 | 结果格式: json (默认)或 html |
max_results |
number | 否 | 返回的最大结果数 |
示例响应:
{
"query": "test query",
"number_of_results": 10,
"results": [
{
"url": "https://example.com",
"title": "Example Title",
"content": "Snippet of the search result...",
"engine": "google",
"score": 1.0
}
]
}
health_check
检查SearXNG实例和网桥服务器的运行状况和连接状态。
参数: 无
示例响应:
{
"status": "healthy",
"searxng_instance": "http://localhost:8080",
"searxng_status": "healthy",
"response_time_ms": 42,
"cache_size": 3,
"debug_mode": false,
"version": "0.11.19",
"timestamp": "2026-05-16T12:00:00.000Z"
}
特性
- 搜索工具 --使用可配置的语言、类别、时间范围、安全搜索和结果限制执行网络搜索
- 健康检查 --监控SearXNG连接、响应时间、缓存大小和版本
- 双重运输 --支持STDIO(默认)和HTTP流传输
- 响应缓存 --5分钟TTL缓存,定期清理以减少重复请求
- 重试逻辑 --针对暂时性故障,采用指数回退(3次尝试)自动重试
- 启动验证 --在启动时通过详细的错误诊断验证SearXNG连接
- 会话管理 --HTTP传输包括基于UUID的会话跟踪,通过
mcp-session-id标头 - CORS支持 --可配置的源白名单,具有适当的飞行前处理
- 速率限制 --HTTP模式下的内置保护(每个IP每分钟100个请求)
- 承载身份验证 --HTTP端点的可选基于令牌的身份验证
- 调试日志记录 --删除敏感信息(令牌、会话ID、URL)的编辑日志
- DNS重新绑定保护 --防止HTTP模式下的基于DNS的攻击
- 优雅关闭 --正确清理SIGINT/SIGTERM上的传输和HTTP服务器
配置
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
SEARXNG_INSTANCE_URL |
是 | -- | SearXNG实例的完整URL(例如。, http://localhost:8080) |
TRANSPORT |
没有 | stdio |
传输协议: stdio 或 http |
PORT |
没有 | 3002 |
HTTP服务器端口(当 TRANSPORT=http) |
HOST |
没有 | 127.0.0.1 |
服务器绑定地址(使用 0.0.0.0 集装箱) |
CORS_ORIGIN |
没有 | localhost:3002 (dev)/ * (prod) |
CORS允许使用逗号分隔的起源 |
MCP_HTTP_BEARER |
没有 | -- | HTTP端点身份验证的承载令牌 |
SEARXNG_BRIDGE_DEBUG |
没有 | false |
启用调试日志记录(true 启用) |
CLI标志
| 标志 | 描述 |
|---|---|
--transport <stdio|http> |
运输模式(覆盖 TRANSPORT ) 。 |
HTTP传输
HTTP传输实现了 MCP流式HTTP规范 (2025-03-26).
终点:
| 方法 | 路径 | 描述 |
|---|---|---|
POST |
/mcp |
发送MCP JSON-RPC请求;初始化新会话 |
GET |
/mcp |
服务器发送通知的事件流 |
DELETE |
/mcp |
终止会话 |
OPTIONS |
/mcp |
CORS飞行前请求 |
GET |
/healthz |
健康检查(退货 { "status": "ok", "version": "..." }) |
通过HTTP进行初始化和搜索:
# 1. Initialize a session
curl -X POST http://localhost:3002/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}'
# 2. List tools (use mcp-session-id from step 1 response)
curl -X POST http://localhost:3002/mcp \
-H "Content-Type: application/json" \
-H "mcp-session-id: <session-id>" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
# 3. Perform a search
curl -X POST http://localhost:3002/mcp \
-H "Content-Type: application/json" \
-H "mcp-session-id: <session-id>" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search","arguments":{"query":"hello world"}}}'
码头工人
Dockerfile基于 node:25-alpine 并暴露端口 8081.
# Build
docker build -t searxng-mcp-bridge .
# Run in STDIO mode (default)
docker run -d \
-e SEARXNG_INSTANCE_URL=http://host.docker.internal:8080 \
searxng-mcp-bridge
# Run in HTTP mode
docker run -d -p 8081:8081 \
-e TRANSPORT=http \
-e PORT=8081 \
-e HOST=0.0.0.0 \
-e SEARXNG_INSTANCE_URL=http://host.docker.internal:8080 \
searxng-mcp-bridge
注: 使用
HOST=0.0.0.0当在容器内运行时,允许外部连接。
发展
npm install # Install dependencies
npm run dev # Run with tsx (TypeScript execution, no build step)
npm run build # Compile TypeScript to JavaScript
npm run watch # Watch for changes and rebuild automatically
npm run start # Run the compiled server (stdio mode)
npm run start:http # Run the compiled server (HTTP mode on port 3002)
npm run inspector # Run MCP inspector for interactive testing
发布脚本:
npm run release:patch # Bump patch version (0.11.x)
npm run release:minor # Bump minor version (0.x.0)
npm run release:major # Bump major version (x.0.0)
通过以下方式自动发布 请释放 Renovate用于依赖性管理。
贡献
- 分叉存储库
- 创建要素分支:
git checkout -b feat/your-feature - 按照现有代码样式进行更改
- 确保
npm run build通过 - 使用打开pull请求 PR模板
欢迎通过以下方式提交Bug报告和功能请求 GitHub问题.
许可证
麻省理工学院 --版权所有(c)2025 Nitish Raj