Deep Research MCP 服务器是一个符合模型上下文协议(MCP)的服务器,旨在执行全面的网络研究。它利用 Tavily 强大的搜索和新的爬取 API 来收集关于给定主题的广泛且最新的信息。然后,该服务器将这些数据与文档生成指令一起整合成结构化的 JSON 输出,非常适合大型语言模型(LLMs)创建详细且高质量的 Markdown 文档。
DOCUMENTATION_PROMPT 环境变量来覆盖。documentation_prompt 参数到工具中进一步覆盖。要通过 Smithery 自动安装 deep-research-mcp:
npx -y @smithery/cli install @pinkpixel/dev-deep-research-mcp --client claude
您可以直接使用 npx 运行服务器,而无需全局安装:
npx @pinkpixel/deep-research-mcp
npm install -g @pinkpixel/deep-research-mcp
然后您可以使用以下命令运行它:
deep-research-mcp
git clone https://github.com/your-username/deep-research-mcp.git
cd deep-research-mcp
npm install
服务器需要一个 Tavily API 密钥,并可以选择接受自定义文档提示。
{
"mcpServers": {
"deep-research": {
"command": "npx",
"args": [
"-y",
"@pinkpixel/deep-research-mcp"
],
"env": {
"TAVILY_API_KEY": "tvly-YOUR_ACTUAL_API_KEY_HERE", // 必需
"DOCUMENTATION_PROMPT": "您的自定义详细说明,指示 LLM 如何从研究数据生成 Markdown 文档...", // 可选 - 如果未提供,则使用默认提示
"SEARCH_TIMEOUT": "120", // 可选 - 搜索请求超时时间(秒,默认:60)
"CRAWL_TIMEOUT": "300", // 可选 - 爬取请求超时时间(秒,默认:180)
"MAX_SEARCH_RESULTS": "10", // 可选 - 最大搜索结果数量(默认:7)
"CRAWL_MAX_DEPTH": "2", // 可选 - 最大爬取深度(默认:1)
"CRAWL_LIMIT": "15", // 可选 - 每个来源的最大爬取 URL 数量(默认:10)
"FILE_WRITE_ENABLED": "true", // 可选 - 启用文件写入功能(默认:false)
"ALLOWED_WRITE_PATHS": "/home/user/research,/home/user/documents", // 可选 - 逗号分隔的允许目录(默认:用户主目录)
"FILE_WRITE_LINE_LIMIT": "300" // 可选 - 每次文件写入操作的最大行数(默认:200)
}
}
}
}
设置 TAVILY_API_KEY 环境变量为您自己的 Tavily API 密钥。
方法:
.env 文件: 在项目根目录下创建一个 .env 文件(如果在本地开发):
TAVILY_API_KEY="tvly-YOUR_ACTUAL_API_KEY"
TAVILY_API_KEY="tvly-YOUR_ACTUAL_API_KEY" npx @pinkpixel/deep-research-mcp
您可以通过设置 DOCUMENTATION_PROMPT 环境变量来覆盖默认的全面文档提示。
方法(按优先级顺序):
deep-research-tool 时传递的 documentation_prompt 参数具有最高优先级DOCUMENTATION_PROMPT 环境变量通过 .env 文件设置:
DOCUMENTATION_PROMPT="您的自定义详细说明,指示 LLM 如何从研究数据生成 Markdown..."
或者直接在命令行中:
DOCUMENTATION_PROMPT="您的自定义提示..." TAVILY_API_KEY="tvly-YOUR_KEY" npx @pinkpixel/deep-research-mcp
您可以指定研究文档和图像应保存的位置。如果没有配置,默认情况下会在用户的文档文件夹中使用带有时间戳的路径。
方法(按优先级顺序):
deep-research-tool 时传递的 output_path 参数具有最高优先级RESEARCH_OUTPUT_PATH 环境变量~/Documents/research/YYYY-MM-DDTHH-MM-SS/通过 .env 文件设置:
RESEARCH_OUTPUT_PATH="/path/to/your/research/folder"
或者直接在命令行中:
RESEARCH_OUTPUT_PATH="/path/to/your/research/folder" TAVILY_API_KEY="tvly-YOUR_KEY" npx @pinkpixel/deep-research-mcp
您可以通过环境变量配置超时和性能设置,以优化工具以适应特定的使用场景或部署环境:
可用环境变量:
SEARCH_TIMEOUT - Tavily 搜索请求的超时时间(秒,默认:60)CRAWL_TIMEOUT - Tavily 爬取请求的超时时间(秒,默认:180)MAX_SEARCH_RESULTS - 要检索的最大搜索结果数量(默认:7)CRAWL_MAX_DEPTH - 从基础 URL 开始的最大爬取深度(默认:1)CRAWL_LIMIT - 每个来源的最大爬取 URL 数量(默认:10)通过 .env 文件设置:
SEARCH_TIMEOUT=120
CRAWL_TIMEOUT=300
MAX_SEARCH_RESULTS=10
CRAWL_MAX_DEPTH=2
CRAWL_LIMIT=15
或者直接在命令行中:
SEARCH_TIMEOUT=120 CRAWL_TIMEOUT=300 TAVILY_API_KEY="tvly-YOUR_KEY" npx @pinkpixel/deep-research-mcp
何时调整这些设置:
服务器包含一个安全的文件写入工具,允许 LLM 将研究发现直接保存到文件中。出于安全原因,默认情况下此功能是禁用的。
安全特性:
FILE_WRITE_ENABLED=true 显式启用文件写入ALLOWED_WRITE_PATHS 限制目录(默认为主目录)配置:
FILE_WRITE_ENABLED=true
ALLOWED_WRITE_PATHS=/home/user/research,/home/user/documents,/tmp/research
FILE_WRITE_LINE_LIMIT=500
使用示例:
一旦启用,LLMs 可以使用 write-research-file 工具保存内容:
{
"tool": "write-research-file",
"arguments": {
"file_path": "/home/user/research/quantum-computing-report.md",
"content": "# 量子计算研究报告\n\n...",
"mode": "rewrite"
}
}
安全注意事项:
开发(带自动重载): 如果您已克隆了仓库并在项目目录中:
npm run dev
这将使用 nodemon 和 ts-node 来监视更改并重新启动服务器。
生产/独立: 首先,构建 TypeScript 代码:
npm run build
然后,启动服务器:
npm start
使用 NPX 或全局安装: (确保如配置部分所述设置环境变量)
npx @pinkpixel/deep-research-mcp
或者如果已全局安装:
deep-research-mcp
服务器将在标准输入输出上监听 MCP 请求。
CallToolRequest,指定 deep-research-tool 并提供查询和其他可选参数。deep-research-tool 首先执行 Tavily 搜索以找到相关的网络来源。documentation_instructions 生成一份详尽的 Markdown 文档。deep-research-tool这是服务器公开的主要工具。
该工具返回一个具有以下结构的 JSON 字符串:
{
"documentation_instructions": "string", // LLM 生成 Markdown 的详细提示。
"original_query": "string", // 提供给工具的初始查询。
"search_summary": "string | null", // Tavily 搜索阶段生成的答案/摘要(如果 include_answer 为 true)。
"research_data": [ // 找到的数组,每个来源一个元素。
{
"search_rank": "number",
"original_url": "string", // 搜索找到的来源 URL。
"title": "string", // 网页标题。
"initial_content_snippet": "string",// 初始搜索结果的内容片段。
"search_score": "number | undefined",// Tavily 搜索的相关性评分。
"published_date": "string | undefined",// 发布日期(如果是新闻主题且可用)。
"crawled_data": [ // 从 original_url 开始爬取的页面数组。
{
"url": "string", // 爬取的具体页面 URL。
"raw_content": "string | null", // 从此页面提取的丰富内容。
"images": ["string", "..."] // 此页面上找到的图像 URL 数组。
}
],
"crawl_errors": ["string", "..."] // 如果爬取此来源失败或有问题,错误消息数组。
}
// ... 更多来源
],
"output_path": "string" // 应保存研究文档和图像的路径。
}
deep-research-tool 接受以下参数在其 arguments 对象中:
query (字符串,必需): 主要的研究主题或问题。documentation_prompt (字符串,可选): LLM 文档生成的自定义提示。
DOCUMENTATION_PROMPT 环境变量和服务器内置的默认提示。如果此处未提供,则服务器检查环境变量,然后回退到默认值。output_path (字符串,可选): 生成的研究文档和图像应保存的路径。
RESEARCH_OUTPUT_PATH 环境变量。如果两者都没有设置,则使用带有时间戳的用户文档目录中的文件夹。search_depth (字符串,可选,默认: "advanced"): 初始 Tavily 搜索的深度。
"basic", "advanced". 高级搜索针对更相关来源进行了优化。topic (字符串,可选,默认: "general"): Tavily 搜索的类别。
"general", "news".days (数字,可选): 对于 topic: "news",从当前日期回溯的天数以包含搜索结果。time_range (字符串,可选): 搜索结果的时间范围(例如,"d" 表示一天,"w" 表示一周,"m" 表示一个月,"y" 表示一年)。max_search_results (数字,可选,默认: 7): 要检索和考虑爬取的最大搜索结果数量(1-20)。chunks_per_source (数字,可选,默认: 3): 对于 search_depth: "advanced",从每个来源检索的内容块数量(1-3)。include_search_images (布尔值,可选,默认: false): 包括初始搜索相关的图像 URL 列表。include_search_image_descriptions (布尔值,可选,默认: false): 包括初始搜索中的图像描述和 URL。include_answer (布尔值或字符串,可选,默认: false): 包括基于搜索结果的 Tavily 生成的答案。
true(意味着 "basic"),false,"basic","advanced".include_raw_content_search (布尔值,可选,默认: false): 包括每个初始搜索结果的清理和解析后的 HTML 内容。include_domains_search (字符串数组,可选,默认: []): 要特别包含在搜索结果中的域名列表。exclude_domains_search (字符串数组,可选,默认: []): 要特别排除在搜索结果中的域名列表。search_timeout (数字,可选,默认: 60): Tavily 搜索请求的超时时间(秒)。crawl_max_depth (数字,可选,默认: 1): 从基础 URL 开始的爬取最大深度。0 表示仅基础 URL,1 表示基础 URL 和其上的链接等。crawl_max_breadth (数字,可选,默认: 5): 爬取树每层(即每页)要跟随的链接的最大数量。crawl_limit (数字,可选,默认: 10): 从单个根 URL 开始,爬虫将处理的链接总数,在停止之前。crawl_instructions (字符串,可选): 用于指导爬虫如何爬取网站的自然语言说明。