使用说明

项目简介

Atomic Research MCP 是一个基于 Model Context Protocol (MCP) 构建的 Web 研究管线服务器。它利用 Atomic Agents 框架,结合 Tavily 搜索引擎和 OpenAI 大语言模型,提供强大的网络研究能力。该项目旨在自动化网络研究流程,从问题理解、搜索查询生成,到网页内容抓取、信息整合和答案合成,为用户提供全面的研究结果。

主要功能点

  • 智能网络搜索: 利用 Tavily API 进行高效的网络搜索,能够根据用户问题生成优化的搜索查询。
  • 网页内容抓取与处理: 自动抓取和处理网页内容,提取关键信息。
  • AI 驱动的答案合成: 使用 OpenAI 大语言模型,基于抓取的网页内容合成高质量的答案。
  • MCP 服务器: 实现了 MCP 协议,可以作为后端服务器,通过 JSON-RPC 协议与 MCP 客户端进行通信,提供工具调用等服务。
  • 可扩展的工具集成: 基于 Atomic Agents 框架,易于扩展和集成新的工具和功能,例如可以替换搜索引擎或大语言模型。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/KennyVaneetvelde/atomic-research-mcp.git
    cd atomic-research-mcp
  2. 安装依赖:

    pip install -e .
  3. 配置环境变量:

    • 在项目根目录下创建 '.env' 文件。
    • 添加 Tavily API Key 和 OpenAI API Key 到 '.env' 文件中。
      TAVILY_API_KEY=YOUR_TAVILY_API_KEY
      OPENAI_API_KEY=YOUR_OPENAI_API_KEY
      请替换 'YOUR_TAVILY_API_KEY' 和 'YOUR_OPENAI_API_KEY' 为你自己的 API 密钥。

服务器配置

为了让 MCP 客户端连接到 Atomic Research MCP 服务器,你需要提供服务器的启动配置信息。以下是一个 JSON 格式的配置示例,你需要将其配置到你的 MCP 客户端中。

{
  "serverName": "atomic-research-mcp",
  "command": "python",
  "args": ["-m", "atomic_research_mcp.server"]
}

参数说明:

  • 'serverName': 服务器名称,可以自定义,例如 "atomic-research-mcp"。
  • 'command': 启动服务器的命令,这里使用 'python' 解释器。
  • 'args': 传递给 'python' 命令的参数,'"-m", "atomic_research_mcp.server"' 表示以模块方式运行 'atomic_research_mcp.server' 模块,即启动 MCP 服务器。

MCP 客户端配置示例 (以 Cursor 编辑器为例):

在 Cursor 编辑器中,你可以在 "Custom Copilot Servers" 设置中添加上述配置。Cursor 会使用这些配置来启动并连接到 Atomic Research MCP 服务器,从而在编辑器中使用该服务器提供的功能。

基本使用方法

  1. 启动服务器: 配置好环境变量后,在项目根目录下运行以下命令启动 MCP 服务器:

    python -m atomic_research_mcp.server

    或者,如果你已经安装了项目并配置了虚拟环境,也可以使用以下命令:

    [项目根目录]\.venv\Scripts\atomic-research
  2. 使用 MCP 客户端: 启动服务器后,你可以使用任何兼容 MCP 协议的客户端连接到该服务器。例如,你可以使用 'test_client.py' 进行简单的功能测试,或者将服务器配置添加到 Cursor 等编辑器中,以在日常工作中使用其提供的网络研究能力。

  3. 调用 'web_search_pipeline' 工具: 通过 MCP 客户端,你可以调用服务器提供的 'web_search_pipeline' 工具,进行网络研究。你需要提供 'instruction' 参数(即你的研究问题)给该工具。服务器将返回包含搜索查询、搜索结果、合成答案和参考文献的 JSON 格式响应。

    例如,在 'test_client.py' 中,你可以看到如何调用 'web_search_pipeline' 工具并解析返回结果的示例代码。

response = await session.call_tool(
    name="web_search_pipeline",
    arguments={
        "args": {
            "instruction": search_question,
            "num_queries": 3
        }
    },
)

信息

分类

网页与API