智能研究报告生成工具

DeepResearch MCP是一款基于模型上下文协议(MCP)的研究助手,通过智能迭代式网络搜索、分析和结构化报告生成,帮助用户快速获取全面研究结果。

  • by ameeralns
  • TypeScript
  • 本地部署
  • 27 星标
  • 更新于
在 GitHub 查看 ameeralns/DeepResearchMCP

使用说明

深度研究MCP

📚 概述

DeepResearch MCP是一个基于模型上下文协议(MCP)的强大研究助手。它通过网络搜索、分析和全面的报告生成,对任何主题进行智能、迭代的研究。

🌟 主要特点

  • 智能主题探索 -自动识别知识差距并生成重点搜索查询
  • 全面内容提取 -通过改进内容组织来增强网络抓取
  • 结构化知识处理 -在管理令牌使用的同时保留重要信息
  • 学术报告生成 -创建详细、结构良好的报告,包括执行摘要、分析和可视化
  • 完整参考书目 -正确引用所有带有编号参考的来源
  • 自适应内容管理 -自动管理内容以保持在令牌限制范围内
  • 差错恢复 -无法完全处理时,从错误中恢复并生成部分报告

🛠️ 建筑

┌────────────────────┐     ┌─────────────────┐     ┌────────────────┐
│                    │     │                 │     │                │
│  MCP Server Layer  ├────►│ Research Service├────►│ Search Service │
│  (Tools & Prompts) │     │ (Session Mgmt)  │     │  (Firecrawl)   │
│                    │     │                 │     │                │
└────────────────────┘     └─────────┬───────┘     └────────────────┘
                                     │
                                     ▼
                           ┌─────────────────┐
                           │                 │
                           │  OpenAI Service │
                           │ (Analysis/Rpt)  │
                           │                 │
                           └─────────────────┘

💻 安装

先决条件

  • Node.js 18或更高版本
  • OpenAI API密钥
  • Firecrawl API密钥

设置步骤

  1. 克隆存储库

    git clone <repository-url>
    cd deep-research-mcp
    
  2. 安装依赖项

    npm install
    
  3. 配置环境变量

    cp .env.example .env
    

    编辑 .env 文件并添加您的API密钥:

    OPENAI_API_KEY=sk-your-openai-api-key
    FIRECRAWL_API_KEY=your-firecrawl-api-key
    
  4. 构建项目

    npm run build
    

🚀 用法

运行MCP服务器

在stdio上启动服务器以进行MCP客户端连接:

npm start

使用示例客户端

以指定的深度对特定主题进行研究:

npm run client "Your research topic" 3

参数:

  • 第一个论点:研究主题或疑问
  • 第二个参数:研究深度(迭代次数,默认值:2)
  • 第三个论点(可选):“完成”使用完整的研究工具(一步式过程)

例子:

npm run client "the impact of climate change on coral reefs" 3 complete

输出示例

DeepResearch MCP将发布一份全面的报告,其中包括:

  • 执行摘要 -研究结果概述
  • 引言 -研究主题的背景和重要性
  • 方法论 -研究方法说明
  • 综合分析 -对该主题的深入探讨
  • 比较分析 -关键方面的视觉比较
  • 讨论 -对调查结果和影响的解释
  • 局限性 -研究中的制约因素和差距
  • 结论 -最终见解和建议
  • 参考文献 -带有URL的完整来源列表

🔧 MCP集成

可用MCP资源

资源路径 描述
research://state/{sessionId} 访问研究会话的当前状态
research://findings/{sessionId} 访问会议收集的调查结果

可用的MCP工具

工具名称 描述 参数
initialize-research 开始新的研究会议 query:字符串, depth:编号
execute-research-step 执行下一个研究步骤 sessionId:string
generate-report 创建最终报告 sessionId:字符串, timeout:数字(可选)
complete-research 执行整个研究过程 query:字符串, depth:编号, timeout:数字(可选)

🖥️ Claude桌面集成

DeepResearch MCP可以与Claude Desktop集成,为Claude提供直接的研究能力。

配置步骤

  1. 复制示例配置

    cp claude_desktop_config_sample.json ~/path/to/claude/desktop/config/directory/claude_desktop_config.json
    
  2. 编辑配置文件

    更新路径以指向深度搜索-mcp的安装并添加API密钥:

    {
      "mcpServers": {
        "deep-research": {
          "command": "node",
          "args": [
            "/absolute/path/to/your/deep-research-mcp/dist/index.js"
          ],
          "env": {
            "FIRECRAWL_API_KEY": "your-firecrawler-api-key",
            "OPENAI_API_KEY": "your-openai-api-key"
          }
        }
      }
    }
    
  3. 重新启动克劳德桌面

    保存配置后,重新启动Claude Desktop以使更改生效。

  4. 与Claude Desktop一起使用

    现在,您可以要求Claude使用以下命令进行研究:

    Can you research the impact of climate change on coral reefs and provide a detailed report?
    

📋 客户代码示例

import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";

async function main() {
  // Connect to the server
  const transport = new StdioClientTransport({
    command: "node",
    args: ["dist/index.js"]
  });

  const client = new Client({ name: "deep-research-client", version: "1.0.0" });
  await client.connect(transport);

  // Initialize research
  const initResult = await client.callTool({
    name: "initialize-research",
    arguments: {
      query: "The impact of artificial intelligence on healthcare",
      depth: 3
    }
  });
  
  // Parse the response to get sessionId
  const { sessionId } = JSON.parse(initResult.content[0].text);
  
  // Execute steps until complete
  let currentDepth = 0;
  while (currentDepth < 3) {
    const stepResult = await client.callTool({
      name: "execute-research-step",
      arguments: { sessionId }
    });
    
    const stepInfo = JSON.parse(stepResult.content[0].text);
    currentDepth = stepInfo.currentDepth;
    
    console.log(`Completed step ${stepInfo.currentDepth}/${stepInfo.maxDepth}`);
  }
  
  // Generate final report with timeout
  const report = await client.callTool({
    name: "generate-report",
    arguments: { 
      sessionId,
      timeout: 180000 // 3 minutes timeout
    }
  });
  
  console.log("Final Report:");
  console.log(report.content[0].text);
}

main().catch(console.error);

🔍 故障排除

常见问题

  • 超过令牌限制:对于非常大的研究主题,您可能会遇到OpenAI令牌限制错误。尝试:

    • 减少研究深度
    • 使用更具体的查询
    • 将复杂主题分解为更小的子主题
  • 超时错误:对于复杂的研究,该过程可能会超时。解决:

    • 增加工具调用中的超时参数
    • 使用 complete-research 超时时间更长的工具
    • 小块过程研究
  • API费率限制:如果您遇到OpenAI或Firecrawl的速率限制错误:

    • 在研究步骤之间实施延迟
    • 使用具有更高速率限制的API密钥
    • 使用指数回退重试

📝 许可证

国际协调委员会

🙏 致谢