README
🚀 mcp-searxng
mcp-searxng 是一个基于 SSE(Server-Sent Events)协议实现的 MCP 服务器。它主要为用户提供通过 SearXNG 搜索引擎进行网页搜索和内容抓取的能力,并且支持用户通过配置不同的搜索引擎 URL 来扩展搜索功能。
🚀 快速开始
项目结构
mcp-searxng/
├── server.py # 基于 SSE 协议的 MCP 服务器实现
├── Dockerfile # 项目的 Docker 配置文件
└── README.md # 项目文档
安装依赖
安装 Python 环境
python -m pip install --upgrade pip
pip install "uvicorn>=0.25.0"
pip install "httpx>=0.26.0"
安装 Node.js 和 npm
# 下载并安装 nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# 在 shell 中加载 nvm:
source ~/.nvm/nvm.sh
# 安装 Node.js 版本 22:
nvm install 22
# 验证 Node.js 和 npm 是否安装成功:
node -v # 应输出 "v22.14.0"
npm -v # 应输出 "10.9.2"
运行项目
使用 Docker 启动 MCP 服务器
docker build -t mcp-searxng .
docker run -d --env SEARXNG_URL=http://localhost:8888 -p 5488:5488 mcp-searxng
使用命令行直接运行
uvicorn server:app --host 0.0.0.0 --port 5488
验证结果
安装并启动 MCP Inspector
npx @modelcontextprotocol/inspector
# 打开浏览器访问 http://localhost:5173
在 MCP Inspector 中进行操作
- 选择 SSE 作为传输类型
- 输入 MCP 服务器地址:
http://localhost:5488/sse - 点击连接,验证是否成功连接
- 切换到工具标签页,点击“List Tools”按钮,查看可用工具:
web_search:用于关键词搜索web_url_read:用于网页内容抓取
✨ 主要特性
- 基于 SSE 协议实现长连接通信
- 支持通过 SearXNG 引擎进行关键词搜索
- 提供网页内容抓取功能
- 支持自定义 SearXNG 服务地址
🔧 技术细节
为什么选择 SSE
SSE(Server-Sent Events)协议是一种允许服务器向客户端推送实时事件的技术。相比传统的轮询机制,SSE 具有以下优势:
- 长连接支持:每个客户端连接可以保持较长时间,减少资源消耗
- 实时更新:服务器可以即时推送数据到客户端
- 低延迟:数据传输更快,适合需要实时响应的场景
MCP 服务器配置参数
# server.py 中定义的默认参数
class ServerConfig:
def __init__(self):
self.host = "0.0.0.0"
self.port = 5488
self.searxng_url = "http://localhost:8888"
# 启动命令示例:
uvicorn server:app --host <your host> --port <your port>
参数说明
| 参数名称 | 是否必填 | 默认值 | 类型 | 描述 |
|--------------|----------|--------------------|--------|--------------------|
| --host | 否 | "0.0.0.0" | 字符串 | 服务器监听地址 |
| --port | 否 | 5488 | 整数 | 服务器监听端口 |
| --searxng_url | 否 | "http://localhost:8888" | 字符串 | SearXNG 服务地址 |
💻 使用示例
基础用法
# server.py 中的核心实现
from fastapi import FastAPI
from starlette.responses import EventStreamResponse
app = FastAPI()
@app.get("/sse")
async def sse_endpoint():
return EventStreamResponse()
运行截图

扫码联系在线客服