aweffr/bocha-mcp
3.2
If you are the rightful owner of bocha-mcp 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.
The Web Search MCP Server is designed to provide a standardized interface for AI applications to access high-quality web search capabilities using the Model Context Protocol (MCP).
Tools
2
Resources
0
Prompts
0
Web Search MCP Server (博查AI版本)
📋 项目背景与需求
🎯 项目起源
本项目旨在实现一个基于 Model Context Protocol (MCP) 的网络搜索服务器,将博查AI的强大搜索能力通过标准化的 MCP 接口暴露给 AI 应用。
🚀 核心需求
- 标准化接口: 使用 MCP 协议,确保与各种 AI 应用和 LLM 的兼容性
- 高质量搜索: 集成博查AI Web Search API,提供准确、全面的搜索结果
- 安全认证: 通过 Bearer token 实现安全的访问控制
- 灵活部署: 支持 streamable HTTP 传输,便于集成和部署
- 生产就绪: 完善的错误处理、日志记录和监控功能
🛠️ 技术选型
- 框架: FastAPI + FastMCP - 现代、高性能的 Web 框架
- 搜索: 博查AI Web Search API - 高质量的中文搜索服务
- 传输: Streamable HTTP - 支持 SSE 流式传输
- 认证: Bearer Token - 简单安全的认证机制
✨ 功能特性
- 🔍 集成博查AI Web Search API - 提供高质量的搜索结果和文本摘要
- 🌐 Streamable HTTP 传输 - 支持 Server-Sent Events 流式传输
- 🔐 双重认证机制 - MCP token + 博查AI API key 双重安全
- 📊 丰富搜索功能 - 网页搜索、图片搜索、时间筛选、域名限定
- 🛡️ 企业级安全 - CORS 支持、请求验证、错误处理
- 📡 健康检查 - 完整的服务监控和状态检查
- 📝 详细日志 - 操作审计和故障排查
- ⚡ 高性能 - 异步处理、连接池、超时控制
🚀 快速开始
安装依赖
# 使用 pip
pip install -r requirements.txt
# 或使用 uv
uv sync
环境配置
- 复制环境变量模板:
cp .env.example .env
- 编辑
.env
文件,配置必要的 API keys:
# MCP 服务器认证 token (自定义)
MCP_API_TOKEN=your-secret-token-here
# 博查AI API key (必须从 https://open.bochaai.com 获取)
BOCHA_API_KEY=your-bocha-api-key-here
# 服务器配置
HOST=0.0.0.0
PORT=8000
LOG_LEVEL=INFO
启动服务
# 启动 MCP 服务器
python web_search_server.py
# 或使用 uvicorn
uvicorn web_search_server:app --host 0.0.0.0 --port 8000
服务器将在 http://localhost:8000
启动,提供以下端点:
/mcp
- MCP 协议端点/health
- 健康检查端点
🔧 API 使用
可用工具
1. web_search
执行网络搜索的主要工具
参数:
query
(str, 必需): 搜索查询字符串count
(int, 可选): 返回结果数量,默认 10,范围 1-50freshness
(str, 可选): 搜索时间范围- 可选值:
noLimit
,oneDay
,oneWeek
,oneMonth
,oneYear
,YYYY-MM-DD..YYYY-MM-DD
,YYYY-MM-DD
- 可选值:
summary
(bool, 可选): 是否显示文本摘要,默认 Falseinclude_domains
(str, 可选): 限定搜索的网站范围,多个域名用|
分隔exclude_domains
(str, 可选): 排除搜索的网站范围,多个域名用|
分隔
示例:
# 基本搜索
result = await session.call_tool("web_search", {
"query": "Python编程教程",
"count": 5
})
# 高级搜索
result = await session.call_tool("web_search", {
"query": "人工智能最新发展",
"freshness": "oneMonth",
"include_domains": "zhihu.com|csdn.net",
"summary": True
})
2. get_search_info
获取 API 信息和配置参数
返回:
- 搜索提供商信息
- 参数说明和选项
- 响应格式说明
认证方式
所有请求都需要在 Header 中包含有效的 Bearer token:
Authorization: Bearer your-secret-token
🧪 客户端示例
Python 客户端
# 设置环境变量
export MCP_SERVER_URL=http://localhost:8000/mcp
export MCP_API_TOKEN=your-secret-token-here
# 运行示例客户端
python example_client.py
curl 测试
# 健康检查
curl -H "Authorization: Bearer your-token" http://localhost:8000/health
# 测试 MCP 连接
curl -H "Authorization: Bearer your-token" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test-client","version":"1.0.0"}}}' \
http://localhost:8000/mcp
# 执行搜索
curl -H "Authorization: Bearer your-token" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"web_search","arguments":{"query":"人工智能","count":3}}}' \
http://localhost:8000/mcp
📁 项目结构
bocha-mcp/
├── web_search_server.py # 主服务器实现
├── example_client.py # 客户端使用示例
├── requirements.txt # Python 依赖列表
├── pyproject.toml # 项目配置文件
├── .env.example # 环境变量模板
├── README.md # 项目文档
└── .gitignore # Git 忽略文件
🔧 开发指南
开发环境设置
# 安装开发依赖
pip install -e ".[dev]"
# 代码格式化
black .
isort .
# 类型检查 (如果使用 mypy)
mypy .
运行测试
# 运行所有测试
pytest
# 运行特定测试
pytest tests/test_server.py
日志配置
服务器支持详细的日志记录:
# 设置日志级别
LOG_LEVEL=DEBUG # DEBUG, INFO, WARNING, ERROR
# 日志包含
- 请求认证状态
- API 调用详情
- 搜索结果统计
- 错误和异常信息
🚀 部署选项
Docker 部署
# 构建镜像
docker build -t web-search-mcp-server .
# 运行容器
docker run -p 8000:8000 \
-e MCP_API_TOKEN=your-secret-token \
-e BOCHA_API_KEY=your-bocha-api-key \
web-search-mcp-server
生产环境部署
# 使用 gunicorn + uvicorn
pip install gunicorn
gunicorn web_search_server:app -w 4 -k uvicorn.workers.UvicornWorker \
--bind 0.0.0.0:8000 \
--log-level info
# 或使用 systemd (Linux)
sudo systemctl enable web-search-mcp
sudo systemctl start web-search-mcp
反向代理配置
Nginx 配置示例:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
🔍 故障排除
常见问题
-
连接失败
检查: 服务器状态、URL 配置、网络连接 解决: 确认服务正在运行,检查防火墙设置
-
认证失败 (401)
检查: MCP_API_TOKEN、Authorization header 格式 解决: 确保使用正确的 Bearer token 格式
-
搜索 API 失败
检查: BOCHA_API_KEY、API 余额、网络连接 解决: 验证 API key 有效性,检查博查AI服务状态
-
参数验证错误
检查: count 范围 (1-50)、域名格式 解决: 确保参数符合 API 要求
性能优化
- 连接池: 使用 HTTPX 连接池提高并发性能
- 缓存: 考虑对常见查询添加缓存层
- 限流: 实现请求速率限制防止 API 滥用
- 监控: 添加 Prometheus 指标监控
📚 API 文档
博查AI Web Search API
- 开放平台: https://open.bochaai.com
- API 端点: https://api.bochaai.com/v1/web-search
- 认证方式: Bearer Token
- 支持功能:
- 网页搜索 (Web Pages)
- 图片搜索 (Images)
- 时间范围筛选 (Freshness)
- 域名限定/排除 (Include/Exclude)
- 文本摘要 (Summary)
MCP 协议
- 规范文档: https://modelcontextprotocol.io
- 传输方式: Streamable HTTP
- 支持工具: Web Search、Search Info
- 消息格式: JSON-RPC 2.0
🤝 贡献指南
我们欢迎社区贡献!请遵循以下步骤:
- Fork 本项目
- 创建功能分支 (
git checkout -b feature/amazing-feature
) - 提交更改 (
git commit -m 'Add amazing feature'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 创建 Pull Request
开发规范
- 遵循 PEP 8 代码风格
- 添加适当的类型注解
- 编写测试用例
- 更新相关文档
📄 许可证
本项目采用 MIT 许可证 - 查看 文件了解详情。
🙏 致谢
- Model Context Protocol - 标准化的 AI 上下文交换协议
- 博查AI - 高质量的 AI 搜索服务
- FastAPI - 现代、快速的 Web 框架
📞 联系方式
如有问题或建议,请通过以下方式联系:
- 创建 Issue
- 发送邮件: your-email@example.com
⭐ 如果这个项目对你有帮助,请考虑给个 Star!