mcp-search-server

jianghua519/mcp-search-server

3.1

If you are the rightful owner of mcp-search-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A Model Context Protocol (MCP) based network search server providing robust web search capabilities for Open WebUI and other MCP clients.

Tools
3
Resources
0
Prompts
0

MCP Search Server

一个基于Model Context Protocol (MCP)的网络搜索服务器,为Open WebUI和其他MCP客户端提供强大的网络搜索功能。

功能特性

  • 🔍 Google搜索模拟: 通过模拟浏览器请求获取Google搜索结果
  • 📄 网页内容提取: 自动提取网页主要内容
  • 🔧 MCP协议兼容: 完全兼容Model Context Protocol标准
  • 🐳 Docker化部署: 支持Docker和Docker Compose部署
  • 🌐 OpenAPI集成: 通过mcpo代理暴露为REST API
  • 简化部署: 使用pip包管理,无需uv

可用工具

1. web_search

在网络上搜索信息。

参数:

  • query (string): 搜索查询字符串
  • engine (string, 可选): 搜索引擎 (google),默认为google
  • num_results (int, 可选): 返回结果数量 (1-20),默认为10

2. extract_webpage

从网页提取主要内容。

参数:

  • url (string): 要提取内容的网页URL

3. search_and_extract

搜索网络并可选择性地从顶部结果中提取内容。

参数:

  • query (string): 搜索查询字符串
  • engine (string, 可选): 搜索引擎,默认为google
  • num_results (int, 可选): 处理的结果数量 (1-10),默认为3
  • extract_content (bool, 可选): 是否从结果页面提取完整内容,默认为true

快速开始

方法1: 使用Docker Compose (推荐)

  1. 下载并解压项目文件
  2. 运行MCP服务器与mcpo代理:
docker-compose up mcp-search-proxy -d

服务器将在 http://localhost:8100 启动,API文档可在 http://localhost:8100/docs 查看。

方法2: 本地开发

  1. 确保安装了Python 3.10+:
python --version  # 应该显示 3.10 或更高版本
  1. 安装依赖:
cd mcp-search-server
pip install -r requirements.txt
pip install -e .
  1. 运行MCP服务器:
python -m mcp_search_server

方法3: 使用mcpo代理

如果你想将MCP服务器暴露为REST API:

# 安装mcpo
pip install mcpo

# 运行代理服务器
mcpo --port 8100 -- python -m mcp_search_server

与Open WebUI集成

使用OpenAPI Tool Server方式

  1. 启动带有mcpo代理的服务器:
docker-compose up mcp-search-proxy -d
  1. 在Open WebUI中添加外部工具:

    • 进入设置 → 工具
    • 添加OpenAPI服务器: http://localhost:8100
    • 或者如果部署在其他地址: http://your-server:8100
  2. 现在你可以在Open WebUI中使用搜索功能了!

使用MCP客户端方式

如果你的Open WebUI支持直接MCP集成,可以配置如下:

{
  "mcpServers": {
    "search": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "mcp-search-server"]
    }
  }
}

部署选项

Docker部署

构建并运行Docker镜像:

# 构建镜像
docker build -t mcp-search-server .

# 运行MCP服务器 (stdio模式)
docker run -i mcp-search-server

# 运行带mcpo代理的服务器
docker run -p 8100:8100 mcp-search-server sh -c "
  pip install mcpo &&
  mcpo --host 0.0.0.0 --port 8100 -- python -m mcp_search_server
"

生产环境部署

对于生产环境,建议:

  1. 使用环境变量配置
  2. 设置适当的资源限制
  3. 配置日志收集
  4. 使用反向代理 (nginx/traefik)
  5. 启用HTTPS

示例生产环境Docker Compose:

version: '3.8'
services:
  mcp-search-proxy:
    build: .
    restart: unless-stopped
    ports:
      - "8100:8100"
    environment:
      - PYTHONUNBUFFERED=1
      - LOG_LEVEL=INFO
    command: >
      sh -c "
        pip install mcpo &&
        mcpo --host 0.0.0.0 --port 8100 -- python -m mcp_search_server
      "
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8100/docs"]
      interval: 30s
      timeout: 10s
      retries: 3

配置

复制 .env.example.env 并根据需要修改配置:

cp .env.example .env

主要配置选项:

  • DEFAULT_SEARCH_ENGINE: 默认搜索引擎
  • DEFAULT_NUM_RESULTS: 默认结果数量
  • MAX_CONTENT_LENGTH: 最大内容长度
  • REQUEST_TIMEOUT: 请求超时时间

重要说明

Google搜索模拟

本项目通过模拟浏览器请求来获取Google搜索结果。请注意:

  1. 不稳定性: Google的页面结构经常变化,可能导致解析失败
  2. 反爬虫限制: 频繁请求可能触发Google的反爬虫机制
  3. IP封禁风险: 过度使用可能导致IP被暂时封禁
  4. 验证码: 可能会遇到需要验证码的情况

建议: 对于生产环境,强烈建议使用Google Custom Search API或其他官方API来替代模拟请求,以获得更稳定和可靠的服务。

开发

运行测试

python test_mcp_server.py

代码格式化

pip install black isort
black src/
isort src/

类型检查

pip install mypy
mypy src/

故障排除

常见问题

  1. 搜索结果为空:

    • 检查网络连接
    • 可能遇到Google反爬虫限制
    • 尝试等待一段时间后重试
  2. 网页提取失败: 某些网站可能有反爬虫保护

  3. Docker构建失败: 确保Docker版本支持多阶段构建

日志

服务器日志输出到stderr,可以通过以下方式查看:

# Docker Compose
docker-compose logs mcp-search-proxy

# Docker
docker logs <container-id>

许可证

MIT License - 详见 文件。

贡献

欢迎提交Issue和Pull Request!

支持

如果你遇到问题或有功能请求,请在GitHub上创建Issue: https://github.com/jianghua519/mcp-search-server/issues