一个基于MCP(Model Context Protocol)协议的大模型深度研究系统,能够自动进行多轮搜索、信息提取和报告生成。
- 🔍 智能搜索: 基于用户查询自动生成多个搜索关键词,进行全面信息收集
- 📊 信息筛选: 使用大模型判断网页内容的相关性,提取有价值的信息
- 🔄 多轮迭代: 自动判断是否需要进一步搜索,确保信息完整性
- 🖼️ 图片分析: 支持图片搜索和内容描述
- 📝 报告生成: 自动将收集的信息整理成结构化的Markdown报告
- 🔌 MCP协议: 基于Anthropic的MCP协议,实现标准化的工具调用
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Client.py │ │ search_mcp.py │ │ SearXNG │
│ │ │ │ │ 搜索引擎 │
│ - 用户交互 │◄──►│ - MCP服务器 │◄──►│ │
│ - 查询处理 │ │ - 工具调用 │ │ - 网页搜索 │
│ - 报告生成 │ │ - 内容提取 │ │ - 结果返回 │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Qwen API │ │ Jina AI │ │ 日志系统 │
│ │ │ │ │ │
│ - 查询生成 │ │ - 网页内容提取 │ │ - 调试信息 │
│ - 内容判断 │ │ - 文本清理 │ │ - 错误追踪 │
│ - 报告生成 │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
- Python 3.10
- Docker & Docker Compose
- 通义千问API Key (DASHSCOPE_API_KEY)
cd searxng-docker
# 启动服务
docker-compose up -d在 search_mcp.py 中修改搜索服务地址(第220行):
response = requests.get(
f'http://localhost:8080/search?format=json&q={query}&language=zh-CN&time_range=&safesearch=0&categories={categories}',
timeout=10
)python client.pyQuery: 请撰写一篇关于"大模型MCP协议"的技术报告并插入图片
系统将自动:
- 生成多个搜索关键词
- 执行网页搜索
- 提取相关信息
- 判断是否需要进一步搜索
- 生成最终报告
(具体过程请参考logs中的文件,如mcp_detailed.log)
示例结果:test.md
deepresearch/
├── client.py # MCP客户端,处理用户交互
├── search_mcp.py # MCP服务器,提供搜索工具
├── prompts.py # 提示词模板
├── test.md # 示例输出报告
├── logs/ # 日志文件目录
├── searxng-docker/ # SearXNG搜索引擎配置
│ ├── docker-compose.yaml
│ ├── searxng/
│ │ └── settings.yml
│ └── .env
└── README.md
提供两个主要工具:
search(query): 执行深度搜索和信息提取get_images(query): 获取图片链接和描述
- 连接MCP服务器
- 处理用户查询
- 协调多轮工具调用
- 生成最终报告
包含系统提示词模板:
- 系统提示词
- 下一步判断提示词
- 最终报告生成提示词
系统提供详细的日志记录:
logs/mcp_server.log: MCP服务器日志logs/mcp_stderr.log: 错误日志logs/mcp_detailed.log: 详细调试日志logs/client.log: 客户端日志
- 确保SearXNG服务正常运行
- 检查API密钥是否正确设置
- 网络连接正常,能够访问外部API
- 日志目录需要有写入权限