多提供商深度研究MCP服务器

一个TypeScript MCP服务器,可将研究查询路由到OpenAI深度研究模型或DeepSeek推理模型,并支持未来扩展更多提供商。

  • by cbruyndoncx
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 cbruyndoncx/multi-deep-research-mcp

使用说明

多提供商深度研究MCP服务器

TypeScript MCP(模型上下文协议)服务器,可以将研究查询路由到OpenAI Deep research模型或DeepSeek推理模型,并为未来的提供者提供空间。

基于原创作品 fbettag/openai深度研究mcp -扩展以支持多个AI提供商。

特性

  • 研究请求创建:跨提供商创建新的研究请求(OpenAI、DeepSeek等)
  • 研究请求检查状态:检查任何提供程序的请求状态
  • 研究请求结果:检索已完成的研究成果,并在提供引用时将Markdown转录本保存在本地以供参考
  • 推理模型列表:使用常用/默认提示检查动态提供程序模型目录
  • 推理_供应商列表:发现已配置的提供程序、凭据状态和相关环境密钥

安装

仅限技能(大多数用户)

只需复制技能文件夹-不需要仓库:

git clone https://github.com/YOUR_GITHUB/multi-deep-research-mcp.git
cp -r multi-deep-research-mcp/.claude/skills/deep-research ~/.claude/skills/
rm -rf multi-deep-research-mcp  # Delete repo if you don't need CLI

export OPENAI_API_KEY="sk-proj-your-key"
export DEEPSEEK_API_KEY="sk-your-key"

然后重新启动Claude Code并使用 /deep-research.

使用CLI(单线安装)

如果您还想使用CLI npx 命令:

curl -fsSL https://raw.githubusercontent.com/YOUR_GITHUB/multi-deep-research-mcp/main/scripts/install.sh | bash
export OPENAI_API_KEY="sk-proj-your-key"
export DEEPSEEK_API_KEY="sk-your-key"

这使回购保持在 ~/.multi-deep-research-mcp 所以你可以运行:

cd ~/.multi-deep-research-mcp
npx multi-deep-research-cli research_request_create --query-file query.txt

更多安装方法

看 安装.md 有关其他设置选项和故障排除。

CLI使用情况

CLI镜像MCP工具并将响应写入文件,因此提示保持简洁。为大型输入提供单独的文件。JSON仅用于 --parameters-file.

运行CLI

本地建造(之后 npm run build):

node dist/cli.js reasoning_providers_list --output ./outputs/providers.json
./dist/cli.js reasoning_providers_list --output ./outputs/providers.json

随着 npx (已发布的包):

npx multi-deep-research-cli reasoning_providers_list --output ./outputs/providers.json

通过此仓库 npx 不安装(需要 dist/cli.js):

npx --no-install ./dist/cli.js reasoning_providers_list --output ./outputs/providers.json

MCP与CLI概述

每个CLI子命令直接映射到MCP工具,并返回相同的响应有效载荷(包装在MCP中 content 阵列)。

MCP工具 CLI命令
research_request_create research_request_create
research_request_check_status research_request_check_status
research_request_get_results research_request_get_results
reasoning_models_list reasoning_models_list
reasoning_providers_list reasoning_providers_list

输入参数和差异

research_request_create

MCP参数 CLI标志 注意事项
provider --provider 两者均可选择
model --model 两者均可选择
query --query-file CLI从文件读取纯文本
system_message --system-message-file CLI从文件读取纯文本
include_code_interpreter --include-code-interpreter CLI标志(布尔值)
parameters --parameters-file CLI从文件中读取JSON对象

research_request_check_status / research_request_get_results

MCP参数 CLI标志 注意事项
request_id --request-id 两者都需要
provider --provider 两者均可选择

reasoning_models_list

MCP参数 CLI标志 注意事项
provider --provider 两者均可选择

reasoning_providers_list 没有输入参数。

CLI特定的输出处理:

  • --output 将完整的MCP响应包装写入文件。
  • 没有 --output,CLI将MCP响应包装器打印到stdout。
multi-deep-research-cli research_request_create \
  --query-file ./inputs/query.txt \
  --system-message-file ./inputs/system.txt \
  --parameters-file ./inputs/params.json \
  --provider openai \
  --model o4-mini \
  --include-code-interpreter \
  --output ./outputs/create.json

创建研究报告(端到端)

  1. 创建请求
multi-deep-research-cli research_request_create \
  --query-file ./inputs/query.txt \
  --system-message-file ./inputs/system.txt \
  --parameters-file ./inputs/params.json \
  --provider openai \
  --model o4-mini \
  --output ./outputs/create.json
  1. 检查状态(重复直到 completed)
multi-deep-research-cli research_request_check_status \
  --request-id req_123 \
  --output ./outputs/status.json
  1. 获取结果(在响应中写入报告路径)
multi-deep-research-cli research_request_get_results \
  --request-id req_123 \
  --output ./outputs/results.json

DeepSeek(同步示例)

DeepSeek同步完成,因此创建响应已经包含结果和保存的Markdown文件路径。

multi-deep-research-cli research_request_create \
  --query-file ./inputs/query.txt \
  --system-message-file ./inputs/system.txt \
  --parameters-file ./inputs/params.json \
  --provider deepseek \
  --model deepseek-reasoner \
  --output ./outputs/deepseek-create.json

端到端脚本(DeepSeek)

#!/usr/bin/env bash
set -euo pipefail

QUERY_FILE="./inputs/query.txt"
SYSTEM_FILE="./inputs/system.txt"
PARAMS_FILE="./inputs/params.json"
OUTPUT_DIR="./outputs"
MODEL="deepseek-reasoner"

mkdir -p "${OUTPUT_DIR}"

multi-deep-research-cli research_request_create \
  --query-file "${QUERY_FILE}" \
  --system-message-file "${SYSTEM_FILE}" \
  --parameters-file "${PARAMS_FILE}" \
  --provider deepseek \
  --model "${MODEL}" \
  --output "${OUTPUT_DIR}/deepseek-create.json"

端到端脚本(OpenAI轮询)

#!/usr/bin/env bash
set -euo pipefail

QUERY_FILE="./inputs/query.txt"
SYSTEM_FILE="./inputs/system.txt"
PARAMS_FILE="./inputs/params.json"
OUTPUT_DIR="./outputs"
MODEL="o4-mini"

mkdir -p "${OUTPUT_DIR}"

multi-deep-research-cli research_request_create \
  --query-file "${QUERY_FILE}" \
  --system-message-file "${SYSTEM_FILE}" \
  --parameters-file "${PARAMS_FILE}" \
  --model "${MODEL}" \
  --output "${OUTPUT_DIR}/create.json"

REQUEST_ID=$(node -e "const fs=require('fs'); const res=JSON.parse(fs.readFileSync('${OUTPUT_DIR}/create.json','utf8')); const payload=JSON.parse(res.content[0].text); console.log(payload.request_id);")

while true; do
  multi-deep-research-cli research_request_check_status \
    --request-id "${REQUEST_ID}" \
    --output "${OUTPUT_DIR}/status.json"
  STATUS=$(node -e "const fs=require('fs'); const res=JSON.parse(fs.readFileSync('${OUTPUT_DIR}/status.json','utf8')); const payload=JSON.parse(res.content[0].text); console.log(payload.status);")
  if [ "${STATUS}" = "completed" ]; then
    break
  fi
  if [ "${STATUS}" = "failed" ]; then
    echo "Request failed"
    exit 1
  fi
  sleep 10
done

multi-deep-research-cli research_request_get_results \
  --request-id "${REQUEST_ID}" \
  --output "${OUTPUT_DIR}/results.json"

多深度研究代理(单调用脚本)

此包装器在一次调用中运行整个工作流,在创建、状态和结果步骤中应用相同的输入。

脚本: scripts/multi_deep_research_cli_agent.sh

./scripts/multi_deep_research_cli_agent.sh \
  --query-file ./inputs/query.txt \
  --system-message-file ./inputs/system.txt \
  --parameters-file ./inputs/params.json \
  --provider openai \
  --model o4-mini \
  --output-dir ./outputs \
  --poll-interval 10

最小DeepSeek示例:

./scripts/multi_deep_research_cli_agent.sh \
  --query-file ./inputs/query.txt \
  --provider deepseek \
  --model deepseek-reasoner

笔记:

  • --query-file 是必需的 research_request_create.
  • --system-message-file 是可选的。
  • --parameters-file 必须是JSON,并且是可选的(所有其他输入都是纯文本文件)。
  • --output 将MCP响应对象写入指定文件。

其他命令:

multi-deep-research-cli research_request_check_status \
  --request-id req_123 \
  --output ./outputs/status.json

multi-deep-research-cli research_request_get_results \
  --request-id req_123 \
  --output ./outputs/results.json

multi-deep-research-cli reasoning_models_list \
  --provider openai \
  --output ./outputs/models.json

multi-deep-research-cli reasoning_providers_list \
  --output ./outputs/providers.json

使用Claude CLI快速设置

claude mcp add multi-deep-research -s user npx github:cbruyndoncx/multi-deep-research-mcp -e OPENAI_API_KEY=sk-your-openai-api-key-here

替换 sk-your-openai-api-key-here 使用您的实际OpenAI API密钥。

Claude桌面设置(手动)

添加到您的Claude Desktop配置中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "multi-deep-research": {
      "command": "npx",
      "args": ["github:cbruyndoncx/multi-deep-research-mcp"],
      "env": {
        "OPENAI_API_KEY": "sk-your-openai-api-key-here"
      }
    }
  }
}

可用功能

创建研究请求

research_request_create({
  provider?: "openai" | "deepseek",
  model?: "o4-mini",
  query: "Your research question",
  system_message?: "Optional guidance",
  include_code_interpreter?: false,
  parameters?: {
    temperature?: 0.3,
    reasoning?: { summary: "auto" }
  }
})

返回请求标识符和初始状态。DeepSeek同步完成,因此报告和引用(以及保存的Markdown路径)都包含在此响应中。

检查状态

research_request_check_status({
  request_id: "req_123...",
  provider?: "deepseek" // optional when request was created in this session
})

获取结果

research_request_get_results({
  request_id: "req_123...",
  provider?: "openai"
})

检索已完成的结果,将报告和引用写入Markdown文件(默认目录 research-results/),并返回文件名,以便您可以在本地打开它。

列出推理模型

reasoning_models_list({ provider?: "deepseek" })

返回提供程序目录,其中包含常用/默认环境键、参数描述和功能提示。

列出推理提供者

reasoning_providers_list({})

返回每个配置的提供程序、凭据状态和用于设置收藏夹/默认值的env var键。

模型

  • OpenAI: o3-deep-research-2025-06-26, o4-mini-deep-research-2025-06-26, o4, o4-mini, o3, o1等等。(动态获取)
  • DeepSeek: deepseek-reasoner, deepseek-r1 (更多内容可以通过提供者注册表添加)

需求

  • Node.js>=18.0.0
  • 提供商凭据:
    • OPENAI_API_KEY (OpenAI提供商需要)
    • DEEPSEEK_API_KEY (需要启用DeepSeek提供程序)
  • 可选环境变量:
    • REASONING_DEFAULT_PROVIDER:默认提供程序id(openai 默认情况下)
    • OPENAI_FAVORITE_MODELS, DEEPSEEK_FAVORITE_MODELS:逗号分隔的优先级列表
    • OPENAI_DEFAULT_MODEL, DEEPSEEK_DEFAULT_MODEL:每个提供程序的默认模型
    • LITELLM_MODEL_SOURCE:重写LiteLLM目录的URL(默认为官方GitHub JSON)
    • OPENAI_TIMEOUT, DEEPSEEK_TIMEOUT:请求超时(毫秒)
    • OPENAI_BASE_URL, DEEPSEEK_BASE_URL:自承载时覆盖API终结点
    • RESEARCH_RESULTS_DIR:保存Markdown导出的目录(默认为 research-results/)

发展

npm install
npm run dev

测试

  1. 构建一次,使服务器二进制文件存在: npm run build.
  2. 运行集成线束: npm test.
  3. 要手动调试LiteLLM目录,请运行 node --loader ts-node/esm scripts/test-litellm-catalog.ts (需要网络访问GitHub)。

该套件现在记录:

  • 活动提供程序凭据/默认值和常用环境提示。
  • 工具注册健全性检查。
  • reasoning_models_list 确认供应商目录的覆盖范围暴露了模型/收藏夹。
  • 完整的OpenAI研究生命周期(创建→ 状态轮询→ 结果)当 OPENAI_API_KEY (或 TEST_OPENAI_API_KEY)已设置。
  • 当满足以下条件时,DeepSeek推理的完整生命周期(创建/状态/结果) DEEPSEEK_API_KEY 已设置。当缺少凭据时,会跳过测试并明确说明。

提供至少一项 OPENAI_API_KEY/TEST_OPENAI_API_KEY 或 DEEPSEEK_API_KEY 在运行之前,执行相关的提供者流。集 OPENAI_TEST_MODEL (默认值 o4-mini)如果你想强制OpenAI测试使用特定的模型,这对于避免长时间的深度研究工作非常方便。

许可证

麻省理工学院