使用说明
MCP Web搜索服务器
Docker化的MCP服务器,结合了:
- SearXNG用于元搜索片段
- Playwright Chromium用于渲染页面阅读和截图
- FastMCP工具暴露在端口3000上
建筑
flowchart TD
Client[MCP Client]
subgraph Docker Network
MCP[MCP Server :3000]
SearX[SearXNG :8080]
Browser[Headless Chromium]
end
Client -->|HTTP/SSE| MCP
MCP -->|Search API| SearX
MCP -->|Rendered page operations| Browser
服务和港口
| 服务 | 主机端口 | 用途 |
|---|---|---|
| SearXNG | 127.0.0.1:8081 | 本地搜索后端UI/API |
| MCP | 127.0.0.1:3000 | MCP工具端点 |
MCP端点选项(取决于客户端支持):
- 流式HTTP:http://localhost:3000/mcp
- 上海证券交易所http://localhost:3000/sse
需求
- Docker桌面(或兼容的Docker守护进程)
- Docker编写支持(
docker compose或docker-compose) - Python 3.x(用于部署助手脚本)
- MCP兼容客户端(LM Studio、克劳德桌面、光标、继续等)
快速开始
- 使用随机的SearXNG密钥创建.env:
echo "SEARXNG_SECRET=$(openssl rand -hex 32)" > .env
- 启动服务:
python3 deploy-local.py --start
- 连接您的MCP客户端:
- 首选:http://localhost:3000/mcp
- 退路:http://localhost:3000/sse
如果您的客户端保持长期会话,请在容器重新启动后重新连接,以避免过时的会话错误。
MCP工具
服务器当前公开了这些工具:
| 工具 | 说明 |
|---|---|
| search | 从SearXNG快速搜索代码片段 |
| deep_search | 搜索加渲染整页提取 |
| navigation | 打开URL并返回文本或HTML |
| 截图 | 捕获页面截图(PNG) |
| read_page | 统一页面阅读器:链接、文本、标题或完整 |
搜索和深度搜索参数
| 参数 | 默认值 | 备注 |
|---|---|---|
| 查询 | 必填 | 搜索查询 |
| 类别 | 概述 | 示例:概述、新闻、科学、it |
| 语言 | 自动 | 语言代码或自动 |
| safe_search | 0 | 0关闭,1中等,2严格 |
| time_range | “” | “”,日、周、月、年 |
| max_results | 10或3 | 搜索范围:1-20,深度搜索:1-10 |
部署命令
python3 deploy-local.py --start
python3 deploy-local.py --rebuild
python3 deploy-local.py --stop
python3 deploy-local.py --logs
python3 deploy-local.py --start --logs
笔记:
--rebuild暗示--start.mcp/server.py和mcp/web_core.py被绑定挂载到容器中,因此代码编辑可以应用docker restart mcp(不需要重建图像)。
环境变量
在docker compose中配置:
| 变量 | 默认值 | 用途 |
|---|---|---|
| MCP_TRANSPORT | 可流式传输http | MCP传输模式 |
| MCP_HOST | 0.0.0.0 | 绑定主机 |
| MCP_PORT | 3000 | 绑定端口 |
| SEARXNG_URL | http://searxng:8080 | 内部SearXNG URL |
| SEARXNG_TIMEOUT | 25 | 搜索请求超时(秒) |
| PAGE_TIMEOUT | 15000 | 浏览器导航超时(毫秒) |
| FETCH_CONCURRENCY | 5 | 深度搜索中的并行提取 |
代码支持(可选设置):
| 变量 | 默认值 | 用途 |
|---|---|---|
| PAGE_POOL_SIZE | 4 | 预热编剧页面 |
| CONTEXT_ROTATION阈值 | 100 | 每N次导航旋转浏览器上下文 |
| ALLOW_PRIVATE_NETWORK | false | 允许专用网络URL |
重要容器设置:
shm_size: 512m设置为铬稳定性。
LM工作室示例
包含的配置文件:
mcp-lmstudio-config.json
当前示例使用SSE URL:
{
"mcpServers": {
"web-search": {
"url": "http://localhost:3000/sse"
}
}
}
如果您的客户端直接支持流式HTTP MCP,请使用 http://localhost:3000/mcp.
项目结构
.
├── deploy-local.py
├── docker-compose.yml
├── mcp-lmstudio-config.json
├── README.md
├── mcp/
│ ├── Dockerfile
│ ├── requirements.txt
│ ├── server.py
│ └── web_core.py
└── searxng/
└── settings.yml
故障排除
- Docker守护进程不可用
- 启动Docker Desktop(或您的活动守护进程)并重试。
- .env缺少秘密或秘密为空
- 确保
.env存在并包括SEARXNG_SECRET=....
- MCP健康检查失败
- 检查日志:
docker logs mcp
docker logs searxng
- 剧作家或浏览器不稳定
- 保持
shm_size: 512m在docker compose中。