mcpField
D
Deep Research

Deep Research

本地服务
research.u14.app数据与分析4.7k19 周前更新

关于 Deep Research

Deep Research 是一个可使用多种 LLM 生成深度研究报告的开源应用,支持 SSE API 和 MCP 服务。数据在本地处理和存储,适合需要快速生成研究报告并自行部署的用户。

主要功能

  1. 01多种 LLM 与搜索引擎支持
  2. 02思考模型与任务模型分离
  3. 03本地知识库上传与处理
  4. 04报告编辑与知识图谱生成
  5. 05研究历史保存与阶段性重新研究
  6. 06SSE API 与 MCP 服务

适用场景

  1. 01围绕特定主题快速生成带来源的 Markdown 研究报告
  2. 02结合本地文档文件生成研究材料
  3. 03在其他 AI 服务中通过 MCP 调用深度研究能力

MCP 相关

Deep Research 提供 StreamableHTTP 与 SSE 两种传输方式的 MCP 服务,向 MCP 客户端暴露深度研究功能,需要配置较长的超时时间。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"deep-research": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"pull"
]
}
}
}
启动命令docker run -i --rm pull

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocipull

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

深度研究

GitHub deployments GitHub Release Docker Image Size Docker Pulls License: MIT

Gemini Next Tailwind CSS shadcn/ui

Vercel Cloudflare PWA

Ask DeepWiki

闪电般快速的深度研究报告

Deep Research 运用多种强大的 AI 模型,只需几分钟即可生成深入的研究报告。它结合先进的“思考”模型和“任务”模型,并利用互联网连接,针对各种主题提供快速而有见地的分析。隐私至关重要——所有数据均在本地处理和存储。

✨ 功能

  • 快速深度研究: 约 2 分钟即可生成全面的研究报告,大幅加快研究进程。
  • 多平台支持: 支持快速部署到 Vercel、Cloudflare 等平台。
  • AI 驱动: 使用先进的 AI 模型,提供准确且有价值的分析。
  • 注重隐私: 所有数据均存储在浏览器本地,确保数据隐私和安全。
  • 支持多种大模型: 支持多种主流大模型,包括 Gemini、OpenAI、Anthropic、Deepseek、Atlas Cloud、Grok、Mistral、Azure OpenAI、任何兼容 OpenAI 的大模型、OpenRouter、Ollama 等。
  • 支持网页搜索: 支持 Searxng、Tavily、Firecrawl、fastCRW、Exa、Bocha、Brave 等搜索引擎,让不支持搜索的大模型也能更便捷地使用网页搜索功能。
  • 思考与任务模型: 采用精密的“思考”模型和“任务”模型,平衡深度与速度,快速提供高质量结果。支持切换研究模型。
  • 支持进一步研究: 你可以在项目的任何阶段完善或调整研究内容,也可以从该阶段重新进行研究。
  • 本地知识库: 支持上传和处理文本、Office、PDF 等资源文件,以生成本地知识库。
  • 成果编辑: 支持编辑研究内容,并提供两种编辑模式:WYSIWYM 和 Markdown。还可以调整阅读难度、文章长度,并翻译全文。
  • 知识图谱: 支持一键生成知识图谱,帮助你系统地了解报告内容。
  • 研究历史: 支持保存研究历史,你可以随时查看之前的研究结果,并再次进行深入研究。
  • 支持本地和服务端 API: 提供本地和服务端 API 调用选项,灵活满足你的需求。
  • 支持 SaaS 和 MCP: 你可以通过 SSE API 将本项目用作深度研究服务(SaaS),也可以通过 MCP 服务在其他 AI 服务中使用。
  • 支持 PWA: 借助渐进式 Web 应用(PWA)技术,你可以像使用软件一样使用本项目。
  • 支持多密钥负载: 支持多密钥负载,以提高 API 响应效率。
  • 支持多种语言:英语、简体中文、西班牙语。
  • 采用现代技术构建: 使用 Next.js 15 和 Shadcn UI 开发,带来现代、高性能且视觉效果出色的用户体验。
  • MIT 许可: 根据 MIT 许可证开源,个人和商业用途均可免费使用。

🎯 路线图

  • 支持保存研究历史
  • 支持编辑最终报告和搜索结果
  • 支持其他大模型
  • 支持文件上传和本地知识库
  • 支持 SSE API 和 MCP 服务

🚀 开始使用

使用免费的 Gemini(推荐)
  1. 获取 Gemini API 密钥

  2. 一键部署本项目,可以选择部署到 Vercel 或 Cloudflare

    使用 Vercel 部署

    目前本项目支持部署到 Cloudflare,但你需要按照 如何部署到 Cloudflare Pages 的说明进行操作。

  3. 开始使用

使用其他大模型
  1. 将本项目部署到 Vercel 或 Cloudflare
  2. 设置大模型 API 密钥
  3. 设置大模型 API 基础 URL(可选)
  4. 开始使用

⌨️ 开发

按照以下步骤,即可在本地浏览器中运行 Deep Research。

先决条件
安装
  1. 克隆仓库:

    git clone https://github.com/u14app/deep-research.git
    cd deep-research
    
  2. 安装依赖:

    pnpm install  # or npm install or yarn install
    
  3. 设置环境变量:

    你需要将文件 env.tpl 修改为 .env,或创建一个 .env 文件并将变量写入该文件。

    # For Development
    cp env.tpl .env.local
    # For Production
    cp env.tpl .env
    
  4. 运行开发服务器:

    pnpm dev  # or npm run dev or yarn dev
    

    打开浏览器并访问 http://localhost:3000,即可使用 Deep Research。

自定义模型列表

该项目支持自定义模型列表,但仅在代理模式下生效。请在 .env 文件或环境变量页面中添加名为 NEXT_PUBLIC_MODEL_LIST 的环境变量。

自定义模型列表使用 , 分隔多个模型。如果要禁用某个模型,请使用 - 符号后接模型名称,例如 -existing-model-name。如果只允许指定模型可用,请使用 -all,+new-model-name。

🚢 部署

Vercel

使用 Vercel 部署

Cloudflare

目前该项目支持部署到 Cloudflare,但需要按照如何部署到 Cloudflare Pages的说明进行操作。

Docker

Docker 版本需要为 20 或更高版本,否则会提示找不到镜像。

⚠️ 注意:大多数情况下,docker 版本会比最新版本晚 1 到 2 天,因此部署后会持续出现“存在更新”的提示,这是正常现象。

docker pull xiangfa/deep-research:latest
docker run -d --name deep-research -p 3333:3000 xiangfa/deep-research

你也可以指定其他环境变量:

docker run -d --name deep-research \
   -p 3333:3000 \
   -e ACCESS_PASSWORD=your-password \
   -e GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy... \
   xiangfa/deep-research

或者构建自己的 docker 镜像:

docker build -t deep-research .
docker run -d --name deep-research -p 3333:3000 deep-research

如果需要指定其他环境变量,请在上述命令中添加 -e key=value 进行设置。

使用 docker-compose.yml 部署:

version: '3.9'
services:
   deep-research:
      image: xiangfa/deep-research
      container_name: deep-research
      environment:
         - ACCESS_PASSWORD=your-password
         - GOOGLE_GENERATIVE_AI_API_KEY=AIzaSy...
      ports:
         - 3333:3000

或者构建自己的 docker compose:

docker compose -f docker-compose.yml build
静态部署

你也可以直接构建静态页面版本,然后将 out 目录中的所有文件上传到任何支持静态页面的网站服务,例如 Github Page、Cloudflare、Vercel 等。

pnpm build:export

⚙️ 配置

如“入门”部分所述,Deep Research 使用以下环境变量配置服务器端 API:

所有可用的环境变量请参阅文件 env.tpl。

环境变量重要说明:

  • 隐私提醒: 这些环境变量主要用于服务器端 API 调用。使用本地 API 模式时,无需 API 密钥或服务器端配置,从而进一步保护你的隐私。

  • 多密钥支持: 支持多个密钥,各密钥之间用 , 分隔,例如 key1,key2,key3。

  • 安全设置: 设置 ACCESS_PASSWORD 可以更好地保护服务器 API 的安全。

  • 使变量生效: 添加或修改此环境变量后,请重新部署项目,以使更改生效。

📄 API 文档

目前该项目支持两种 API 形式:服务器发送事件(SSE)和模型上下文协议(MCP)。

服务器发送事件 API

Deep Research API 提供实时接口,用于启动和监控复杂的研究任务。

建议通过 @microsoft/fetch-event-source 使用 API。要获取最终报告,需要监听 message 事件,数据将以文本流的形式返回。

POST 方法

端点:/api/sse

方法:POST

请求体:

interface SSEConfig {
  // Research topic
  query: string;
  // AI provider, Possible values ​​include: google, openai, anthropic, deepseek, atlascloud, xai, mistral, azure, openrouter, openaicompatible, pollinations, ollama
  provider: string;
  // Thinking model id
  thinkingModel: string;
  // Task model id
  taskModel: string;
  // Search provider, Possible values ​​include: model, tavily, firecrawl, crw, exa, bocha, searxng
  searchProvider: string;
  // Response Language, also affects the search language. (optional)
  language?: string;
  // Maximum number of search results. Default, `5` (optional)
  maxResult?: number;
  // Whether to include content-related images in the final report. Default, `true`. (optional)
  enableCitationImage?: boolean;
  // Whether to include citation links in search results and final reports. Default, `true`. (optional)
  enableReferences?: boolean;
}

请求头:

interface Headers {
  "Content-Type": "application/json";
  // If you set an access password
  // Authorization: "Bearer YOUR_ACCESS_PASSWORD";
}

详见API 文档。

GET 方法

这是一种有趣的实现。你可以直接通过 URL 观看深度研究的整个过程,就像看视频一样。

你可以通过以下链接访问深度研究报告:

http://localhost:3000/api/sse/live?query=AI+trends+for+this+year&provider=pollinations&thinkingModel=openai&taskModel=openai-fast&searchProvider=searxng

查询参数:

// The parameters are the same as POST parameters
interface QueryParams extends SSEConfig {
  // If you set the `ACCESS_PASSWORD` environment variable, this parameter is required
  password?: string;
}
Model Context Protocol (MCP) 服务

目前支持 StreamableHTTP 和 SSE 服务端传输方式。

StreamableHTTP 服务端点:/api/mcp,传输类型:streamable-http

SSE 服务端点:/api/mcp/sse,传输类型:sse

{
  "mcpServers": {
    "deep-research": {
      "url": "http://127.0.0.1:3000/api/mcp",
      "transportType": "streamable-http",
      "timeout": 600
    }
  }
}

注意: 深度研究需要较长时间才能完成,因此需要设置较长的超时时间,以免研究过程中断。

如果服务端设置了 ACCESS_PASSWORD,MCP 服务将受到保护,你需要添加额外的请求头参数:

{
  "mcpServers": {
    "deep-research": {
      "url": "http://127.0.0.1:3000/api/mcp",
      "transportType": "streamable-http",
      "timeout": 600,
      "headers": {
        "Authorization": "Bearer YOUR_ACCESS_PASSWORD"
      }
    }
  }
}

启用 MCP 服务需要设置全局环境变量:

# MCP Server AI provider
# Possible values ​​include: google, openai, anthropic, deepseek, atlascloud, xai, mistral, azure, openrouter, openaicompatible, pollinations, ollama
MCP_AI_PROVIDER=google
# MCP Server search provider. Default, `model`
# Possible values ​​include: model, tavily, firecrawl, crw, exa, bocha, searxng
MCP_SEARCH_PROVIDER=tavily
# MCP Server thinking model id, the core model used in deep research.
MCP_THINKING_MODEL=gemini-2.0-flash-thinking-exp
# MCP Server task model id, used for secondary tasks, high output models are recommended.
MCP_TASK_MODEL=gemini-2.0-flash-exp

注意: 为确保 MCP 服务正常使用,你需要设置相应模型和搜索引擎的环境变量。有关具体的环境变量参数,请参阅 env.tpl。

🪄 工作原理

  1. 研究主题

    • 输入研究主题
    • 使用本地研究资源(可选)
    • 开始思考(或重新思考)
  2. 提出想法

    • 系统会提出问题
      • 回答系统问题(可选)
      • 编写研究计划(或重写研究计划)
    • 系统输出研究计划
      • 开始深入研究(或重新研究)
      • 系统生成 SERP 查询
  3. 信息收集

    • 初步研究
      • 根据 SERP 查询检索本地研究资源
      • 根据 SERP 查询从互联网收集信息
    • 深入研究(此过程可以重复)
      • 提出研究建议(可选)
      • 开始新一轮信息收集(过程与初步研究相同)
  4. 生成最终报告

    • 提出写作要求(可选)
    • 将所有研究材料汇总为一份完整的 Markdown 报告
    • 重新生成研究报告(可选)
flowchart TB
    A[Research Topic]:::start

    subgraph Propose[Propose your ideas]
        B1[System asks questions]:::process
        B2[System outputs the research plan]:::process
        B3[System generates SERP queries]:::process
        B1 --> B2
        B2 --> B3
    end

    subgraph Collect[Information collection]
        C1[Initial research]:::collection
        C1a[Retrieve local research resources based on SERP queries]:::collection
        C1b[Collect information from the Internet based on SERP queries]:::collection
        C2[In-depth research]:::recursive
        Refine{More in-depth research needed?}:::decision

        C1 --> C1a
        C1 --> C1b
        C1a --> C2
        C1b --> C2
        C2 --> Refine
        Refine -->|Yes| C2
    end

    Report[Generate Final Report]:::output

    A --> Propose
    B3 --> C1

    %% Connect the exit from the loop/subgraph to the final report
    Refine -->|No| Report

    %% Styling
    classDef start fill:#7bed9f,stroke:#2ed573,color:black
    classDef process fill:#70a1ff,stroke:#1e90ff,color:black
    classDef recursive fill:#ffa502,stroke:#ff7f50,color:black
    classDef output fill:#ff4757,stroke:#ff6b81,color:black
    classDef collection fill:#a8e6cf,stroke:#3b7a57,color:black
    classDef decision fill:#c8d6e5,stroke:#8395a7,color:black

    class A start
    class B1,B2,B3 process
    class C1,C1a,C1b collection
    class C2 recursive
    class Refine decision
    class Report output

🙋 常见问题

为什么我的 Ollama 或 SearXNG 无法正常工作,并显示错误 TypeError: Failed to fetch?

如果浏览器安全限制导致请求产生 CORS 错误,你需要配置 Ollama 或 SearXNG 参数以允许跨域请求。你也可以考虑使用服务端代理模式,由后端服务发出请求,从而有效避免跨域问题。

🛡️ 隐私

Deep Research 的设计充分考虑了你的隐私。所有研究数据和生成的报告都存储在你的本地计算机上。 我们不会收集或向外部服务传输任何研究数据(除非你明确使用服务端 API 调用;在这种情况下,数据会通过你配置的代理(如果有)发送到 API)。保护你的隐私是我们的首要任务。

🙏 致谢

  • Next.js - 用于构建高性能 Web 应用的 React 框架。
  • Shadcn UI - 设计精美的组件,帮助简化 UI 开发。
  • AI SDKs - 为 Deep Research 提供智能研究能力。
  • Deep Research - 感谢项目 dzhng/deep-research 带来的灵感。

🤝 参与贡献

欢迎为 Deep Research 贡献!如果你对改进、修复错误或添加新功能有想法,请随时:

  1. Fork 此仓库。
  2. 为你的功能或错误修复创建新分支。
  3. 进行修改并提交。
  4. 发起 pull request。

对于重大更改,请先创建 issue,讨论你计划进行的更改。

✉️ 联系方式

如果你有任何问题、建议或反馈,请创建新的 issue。

📝 许可证

Deep Research 基于 MIT License 发布。此许可证允许免费用于商业和非商业用途,也允许修改和分发。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。