元搜索服务器

Docker化的MCP服务器,结合SearXNG进行元搜索片段提取,使用Playwright Chromium进行页面渲染和截图,并通过FastMCP工具提供端口3000的服务。

  • by JscSatoshi
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 JscSatoshi/LMStudio_MCP

使用说明

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、克劳德桌面、光标、继续等)

快速开始

  1. 使用随机的SearXNG密钥创建.env:
echo "SEARXNG_SECRET=$(openssl rand -hex 32)" > .env
  1. 启动服务:
python3 deploy-local.py --start
  1. 连接您的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

故障排除

  1. Docker守护进程不可用
  • 启动Docker Desktop(或您的活动守护进程)并重试。
  1. .env缺少秘密或秘密为空
  • 确保 .env 存在并包括 SEARXNG_SECRET=....
  1. MCP健康检查失败
  • 检查日志:
docker logs mcp
docker logs searxng
  1. 剧作家或浏览器不稳定
  • 保持 shm_size: 512m 在docker compose中。