mcp-searxng 是一个基于 SSE(Server-Sent Events)协议实现的 MCP 服务器。它主要为用户提供通过 SearXNG 搜索引擎进行网页搜索和内容抓取的能力,并且支持用户通过配置不同的搜索引擎 URL 来扩展搜索功能。
mcp-searxng/
├── server.py # 基于 SSE 协议的 MCP 服务器实现
├── Dockerfile # 项目的 Docker 配置文件
└── README.md # 项目文档
python -m pip install --upgrade pip
pip install "uvicorn>=0.25.0"
pip install "httpx>=0.26.0"
# 下载并安装 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 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
npx @modelcontextprotocol/inspector
# 打开浏览器访问 http://localhost:5173
http://localhost:5488/sseweb_search:用于关键词搜索web_url_read:用于网页内容抓取SSE(Server-Sent Events)协议是一种允许服务器向客户端推送实时事件的技术。相比传统的轮询机制,SSE 具有以下优势:
# 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 --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()