使用说明
⛔ 已存档--此代码已移动
迁移到 mcpcentral平台monorepo 2026年7月23日(ADR-043)。
在这里工作:
mcpcentral-io/mcpcentral→apps/deep-researcher/工人:mcpcentral-deep-researcher此存储库是只读的,保留用于历史记录。看 DEPRECATED.md.
Olama Deep研究员DXT扩展
概述
Ollama深度研究员 是一个桌面扩展(DXT),它使用网络搜索和LLM合成来实现高级主题研究,由本地MCP服务器提供支持。它支持可配置的研究参数、状态跟踪和资源访问,旨在与DXT生态系统无缝集成。
- 研究任何主题 使用网络搜索API(Tavily、Perplexity、Exa)和LLM(Ollama、DeepSeek等)
- 配置 最大研究循环、LLM模型和搜索API
- 跟踪状态 正在进行的研究
- 获取研究成果 通过MCP协议作为资源
特性
- 通过stdio实现MCP协议,以实现本地安全操作
- 防御性编程:错误处理、超时和验证
- 通过stderr进行日志记录和调试
- 与DXT主机环境兼容
目录结构
.
├── manifest.json # DXT manifest (see MANIFEST.md for spec)
├── src/
│ ├── index.ts # MCP server entrypoint (Node.js, stdio transport)
│ └── assistant/ # Python research logic
│ └── run_research.py
├── README.md # This documentation
└── ...
安装和设置
-
克隆仓库 并安装依赖项:
git clone <your-repo-url> cd mcp-server-ollama-deep-researcher npm install -
安装Python依赖项 对于助理:
cd src/assistant pip install -r requirements.txt # or use pyproject.toml/uv if preferred -
设置所需的环境变量 对于web搜索API:
- 对于塔维利:
TAVILY_API_KEY - 对于困惑:
PERPLEXITY_API_KEY - 例如:
EXA_API_KEY(点击此处获取您的https://dashboard.exa.ai/api-keys) - 可选:
LANGSMITH_API_KEY,LANGSMITH_TRACING=true,OLLAMA_BASE_URL(默认为http://localhost:11434) - 例子:
export TAVILY_API_KEY=your_tavily_key export PERPLEXITY_API_KEY=your_perplexity_key export EXA_API_KEY=your_exa_key - 不想在磁盘上保存明文密钥? 看 可选:使用1Password保护机密 在......下面
- 对于塔维利:
-
构建TypeScript服务器 (如果需要):
npm run build -
在本地运行扩展进行测试:
node dist/index.js # Or use the DXT host to load the extension per DXT documentation
用法
- 研究一个主题:
- 使用
research工具与{ "topic": "Your subject" }
- 使用
- 获取研究状态:
- 使用
get_status工具
- 使用
- 配置研究参数:
- 使用
configure具有以下任一功能的工具:maxLoops,llmModel,searchApi
- 使用
显现
看 manifest.json 获取完整的DXT清单,包括工具模式和资源模板。跟随 DXT MANIFEST.md.
日志记录和调试
- 所有服务器日志和错误都输出到
stderr用于调试。 - 30分钟后,研究子进程将被终止,以防止挂起。
- 无效请求和配置错误会返回清晰、结构化的错误消息。
安全与最佳实践
- 所有工具模式在执行前都经过验证。
- API密钥是web搜索API所必需的,并且从不记录。
- MCP协议通过stdio用于本地安全通信。
测试与验证
- 通过将扩展加载到DXT兼容主机中来验证它。
- 确保所有工具调用都返回有效、结构化的JSON响应。
- 检查清单是否加载,扩展是否注册为DXT。
故障排除
- 缺少API密钥: 确保
TAVILY_API_KEY,PERPLEXITY_API_KEY,或EXA_API_KEY根据您使用的搜索API在您的环境中进行设置。 - Python错误: 检查Python依赖关系并登录
stderr. - 超时: 研究子过程限制在30分钟内。
搜索API比较
- 塔维利: 快速、全面的网络搜索,可提取原始内容
- 困惑: 基于人工智能的搜索,带有自然语言摘要和引用
- 考试: 针对具有亮点的语义搜索进行优化的神经搜索引擎
可选:使用1Password保护机密
如果你使用 1密码,您可以将明文API密钥从磁盘上保留下来,也可以将其从AI编码代理的上下文中保留下来。这是 选择加入和添加 --上面的明文设置保持不变。先决条件:1Password for Mac或Linux op CLI(brew install --cask 1password-cli),以及 sqlite3.
创建 一 1Password环境包含这八个变量(四个密钥是机密的;其余的是非机密配置):
| 变量 | 机密? |
|---|---|
TAVILY_API_KEY, PERPLEXITY_API_KEY, EXA_API_KEY, LANGSMITH_API_KEY |
是的 |
OLLAMA_BASE_URL, LANGSMITH_TRACING, LANGSMITH_ENDPOINT, LANGSMITH_PROJECT |
没有 |
您可以导入现有 .env 直接创建环境。一旦它存在,请选择以下三种机制中的任何一种(A是AI编码模式;B是1Password推荐的MCP启动;C是无法运行的主机的回退 op).
A.已安装 .env +验证挂钩(将明文排除在LLM上下文之外)
1Password环境挂载本地 .env 作为UNIX命名管道(FIFO):内容按需流式传输给授权的阅读器 从未存储在磁盘上克劳德密码 PreToolUse 钩子在代理运行shell命令之前验证挂载。
- 在1Password桌面应用程序中,打开您的环境→ 目的地→ Local
.envfile → 选择文件路径→.env→ Mount.验证cat .env(通过Touch ID批准;身份验证持续到1Password锁定)。 .1password/environments.toml(committed)告诉hook要验证的路径-已设置为mount_paths = [".env"].- 在本地安装验证挂钩:这创建了
git clone https://github.com/1Password/agent-hooks /tmp/agent-hooks /tmp/agent-hooks/install.sh --agent claude-code --target-dir ..claude/claude-code-1password-hooks-bundle/和.claude/settings.json(两者均被忽略)。钩子是 故障打开:如果1Password或sqlite3它允许执行,因此非1Password贡献者不受影响。 - 测试一下:
echo '{"command":"echo test","workspace_roots":["'"$PWD"'"]}' | .claude/claude-code-1password-hooks-bundle/bin/run-hook.sh 1password-validate-mounted-env-files→{"permission":"allow"}在解锁时,deny锁定时带有修复说明。
B op run --environment 用于MCP服务器启动
复制 .mcp.json.1password.example → .mcp.json (gignored),更换 <ENVIRONMENT_ID> 使用您的环境ID,您的MCP主机将在启动时通过 op run非秘密配置保留在 env 阻断;秘密从环境中注入。模板使用完整路径 /opt/homebrew/bin/op 因为GUI启动的主机(例如Claude Desktop)不会继承您的shell $PATH --如果你的 op 住在别处(which op).
后退,如果你
opCLI缺少--environment(theenvironment子命令是1Password Environments测试版的一部分,在某些版本中不存在,例如。opv2.34.x):使用op run --env-file .env在平原上.env的op://而是引用。创建项目一次(op item create --vault "Your Vault" --category "Login" --title "ollama-deep-researcher" "TAVILY_API_KEY[concealed]=..." …),然后写一个gignored.env引用并将启动器指向它:# .env (gitignored) — references only, no plaintext # TAVILY_API_KEY=op://Your Vault/ollama-deep-researcher/TAVILY_API_KEY # … op run --env-file .env -- node build/index.js相同的
.env也为Docker提供了支持(见下文),因此一个引用文件涵盖了两个启动路径。op run每次启动时提示Touch ID一次。
C op inject 模板 .mcp.json
对于无法使用的MCP主机 op run,复制 .mcp.json.template → 工作文件,替换 <vault> 使用您的保险库名称,然后将 {{ op://... }} 参考实际值:
op inject -i .mcp.json.template -o .mcp.json
op inject 使用filemode写入输出 0600. .mcp.json 被忽视了。在1Password中轮换机密后重新编译。(需要 op CLI,支持标准项目/保管库;这个 op run --environment 选项B中的表单还需要1Password Environments测试版。)
码头工人
docker-compose.yml 从环境中插值所有八个变量。运行作曲 op run --env-file 所以 op:// 参考文献 .env (或FIFO装载,如果你在A中设置了一个)被解析并转发到容器中:
op run --env-file .env -- docker compose up
