jianghua519/mcp-search-server
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.
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),默认为googlenum_results(int, 可选): 返回结果数量 (1-20),默认为10
2. extract_webpage
从网页提取主要内容。
参数:
url(string): 要提取内容的网页URL
3. search_and_extract
搜索网络并可选择性地从顶部结果中提取内容。
参数:
query(string): 搜索查询字符串engine(string, 可选): 搜索引擎,默认为googlenum_results(int, 可选): 处理的结果数量 (1-10),默认为3extract_content(bool, 可选): 是否从结果页面提取完整内容,默认为true
快速开始
方法1: 使用Docker Compose (推荐)
- 下载并解压项目文件
- 运行MCP服务器与mcpo代理:
docker-compose up mcp-search-proxy -d
服务器将在 http://localhost:8100 启动,API文档可在 http://localhost:8100/docs 查看。
方法2: 本地开发
- 确保安装了Python 3.10+:
python --version # 应该显示 3.10 或更高版本
- 安装依赖:
cd mcp-search-server
pip install -r requirements.txt
pip install -e .
- 运行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方式
- 启动带有mcpo代理的服务器:
docker-compose up mcp-search-proxy -d
-
在Open WebUI中添加外部工具:
- 进入设置 → 工具
- 添加OpenAPI服务器:
http://localhost:8100 - 或者如果部署在其他地址:
http://your-server:8100
-
现在你可以在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
"
生产环境部署
对于生产环境,建议:
- 使用环境变量配置
- 设置适当的资源限制
- 配置日志收集
- 使用反向代理 (nginx/traefik)
- 启用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搜索结果。请注意:
- 不稳定性: Google的页面结构经常变化,可能导致解析失败
- 反爬虫限制: 频繁请求可能触发Google的反爬虫机制
- IP封禁风险: 过度使用可能导致IP被暂时封禁
- 验证码: 可能会遇到需要验证码的情况
建议: 对于生产环境,强烈建议使用Google Custom Search API或其他官方API来替代模拟请求,以获得更稳定和可靠的服务。
开发
运行测试
python test_mcp_server.py
代码格式化
pip install black isort
black src/
isort src/
类型检查
pip install mypy
mypy src/
故障排除
常见问题
-
搜索结果为空:
- 检查网络连接
- 可能遇到Google反爬虫限制
- 尝试等待一段时间后重试
-
网页提取失败: 某些网站可能有反爬虫保护
-
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