智能研究助手

一款结合网络爬取能力和向量数据库存储的智能研究助手,支持多源研究、知识管理和AI驱动的对话流程。

  • by mrhimanshu
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mrhimanshu/mcp-research-assistant

使用说明

研究助理MCP

使用模型上下文协议(MCP)构建的智能研究助手,将网络抓取功能与矢量数据库存储相结合,用于全面的研究工作流程。

特性

🔍 网络研究和抓取

  • Firecrawl集成:使用Firecrawl MCP服务器进行高级网络抓取
  • 内容提取:从网页中智能提取结构化内容
  • 多源研究:高效地抓取和分析多个网站

🗃️ 知识管理

  • 矢量数据库存储:由ChromaDB提供语义搜索支持
  • 主题组织:使用单独的矢量数据库按主题组织研究
  • 副本检测:使用MD5哈希进行自动重复数据删除
  • 语义搜索:使用相似性搜索查找相关信息

🤖 人工智能助手

  • LangGraph集成:复杂的对话流管理
  • 工具集成:无缝访问研究和存储工具
  • 奥拉马LLM:本地语言模型支持(Qwen3)
  • 内存持久性:对话历史和上下文保留

建筑

该系统由两个主要部分组成:

服务器组件(server.py)

  • MCP服务器:基于FastMCP的服务器公开研究工具
  • ChromaDB集成:使用Ollama嵌入的矢量存储
  • 研究工具:
    • save_research_data():将内容存储在特定主题的数据库中
    • search_research_data():跨存储研究的语义搜索
    • list_research_topics():查看所有研究主题
    • delete_research_topic():删除主题和数据
    • get_topic_info():详细的主题信息

客户端组件(client.py)

  • LangGraph代理:协调研究工作流程
  • 多服务器MCP客户端:连接到研究和Firecrawl服务器
  • 交互界面:命令行研究助理
  • 工具绑定:自动工具发现和集成

安装

先决条件

设置

  1. 再进行:
uv add chromadb langchain-chroma langchain-ollama
pip install langchain langgraph langchain-mcp-adapters python-dotenv
  1. 配置Olama型号:
ollama pull qwen3
ollama pull nomic-embed-text
  1. 环境配置: 创建一个 .env 文件:
FIRECRAWL_API_KEY=your_firecrawl_api_key_here
  1. MCP配置: 更新 mcp.json 与您的系统匹配的路径:
{
    "research_server": {
        "command": "uv",
        "args": ["--directory", "/path/to/your/project", "run", "server.py"],
        "transport": "stdio"
    },
    "firecrawl_server": {
        "command": "npx",
        "args": ["-y", "firecrawl-mcp"],
        "transport": "stdio"
    }
}

用法

启动研究助理

python client.py

可用命令

研究运营

  • "Research the latest developments in AI agents"
  • "Scrape https://example.com and save key insights"
  • "Search my previous research on machine learning"

知识管理

  • "Save this research to topic: ai_agents"
  • "What topics have I researched?"
  • "Show me information about topic: machine_learning"
  • "Delete topic: outdated_research"

工作流示例

  1. 网络研究:请助理研究一个主题
  2. 内容刮擦:使用Firecrawl自动抓取URL
  3. 知识存储:重要发现被保存到特定主题的数据库中
  4. 信息检索:使用语义查询搜索累积的研究

技术细节

矢量数据库结构

  • 存储位置: ./research_chroma_dbs/
  • 组织:按主题单独收集ChromaDB
  • 嵌入:奥拉马 nomic-embed-text 模型
  • 元数据:用于重复数据消除的内容哈希

MCP服务器工具

# Research data management
save_research_data(content: List[str], topic: str = "default") -> str
search_research_data(query: str, topic: str = "default", max_results: int = 5) -> str

# Topic management
list_research_topics() -> str
get_topic_info(topic: str) -> str
delete_research_topic(topic: str) -> str

LangGraph代理流

  1. 用户输入 → 聊天节点
  2. 工具选择 → 条件路由
  3. 工具执行 → 研究/存储操作
  4. 响应生成 → 格式化结果

配置选项

Ollama设置

  • 基本URL: http://localhost:11434
  • 聊天模型: qwen3 (可配置)
  • 嵌入模型: nomic-embed-text

ChromaDB设置

  • 持久性:本地目录存储
  • 集合命名: research_{topic}
  • 相似性度量:余弦相似性

故障排除

常见问题

  1. Ollama连接:确保Ollama在端口11434上运行
  2. Firecrawl API:验证在环境中设置了API密钥
  3. 路径配置:更新 mcp.json 具有正确的项目路径
  4. 依赖项:安装所有必需的正确版本的软件包

错误消息

  • "No research data found for topic":主题数据库不存在
  • "Error saving research data":检查ChromaDB权限
  • "Failed to start research assistant":验证MCP服务器配置

贡献

该研究助理演示了先进的MCP集成模式:

  • 多服务器MCP客户端架构
  • 矢量数据库与MCP工具的集成
  • LangGraph代理编排
  • 语义搜索与知识管理

许可证

该项目是MCP教程系列的一部分,展示了使用现代人工智能工具的研究助理功能。