Ollama Deep Researcher

by cam10001110101

17 stars
260 downloads
Not rated
GitHub

About

Conducts deep research using local Ollama LLMs, leveraging Tavily and Perplexity for comprehensive search capabilities.

Details

Author
cam10001110101
GitHub stars
17
Downloads
260
Categories
Search, Other, AI
Tags
#research, #web-research

- MCP protocol over stdio for local, secure operation
- Defensive programming: error handling, timeouts, and validation
- Logging and debugging output via stderr
- Compatible with DXT host environments
- Research subprocesses killed after 30 minutes to prevent hangs

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Ollama Deep Researcher
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

B Op Run Environment For The Mcp Server Launch

Copy.mcp.json.1password.example.mcp.json(gitignored), replace<ENVIRONMENT_ID>with your Environment ID, and your MCP host will resolve secrets at launch viaop run. Non-secret config stays in theenvblock; secrets are injected from the Environment. The template uses the full path/opt/homebrew/bin/opbecause GUI-launched hosts (e.g. Claude Desktop) don't inherit your shell$PATH— adjust if youroplives elsewhere (which op).

Fallback if youropCLI lacks--environment(theenvironmentsubcommand is part of the 1Password Environments beta and is absent from some builds, e.g.opv2.34.x): useop run --env-file .envagainst a plain.envofop://references instead. Create the item once (op item create --vault "Your Vault" --category "Login" --title "ollama-deep-researcher" "TAVILY_API_KEY[concealed]=..." …), then write a gitignored.envof references and point the launcher at it:

# .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

The same.envalso powers Docker (see below), so one references file covers both launch paths.op runprompts Touch ID once per launch.

For MCP hosts that can't useop run, copy.mcp.json.template→ a working file, replace<vault>with your vault name, then materialize the{{ op://... }}references into real values:

op inject -i .mcp.json.template -o .mcp.json

op injectwrites the output with filemode0600..mcp.jsonis gitignored. Recompile after rotating secrets in 1Password. (RequiresopCLI with standard item/vault support; theop run --environmentform in option B additionally requires 1Password Environments beta.)

docker-compose.ymlinterpolates all eight vars from the environment. Run compose throughop run --env-fileso theop://references in.env(or the FIFO mount, if you set one up in A) are resolved and forwarded into the container:

op run --env-file .env -- docker compose up

- DXT Architecture Overview
-
DXT Manifest Spec
-
DXT Example Extensions
-
Model Context Protocol SDK

Search global news using natural language. Webz.io News Search API returns the most relevant articles and content, with filters for source, country, language, date, sentiment, and category.

Intelligent search, reasoning, and research capabilities powered by Perplexity's specialized AI models.

An MCP server to interact with Perplexity AI's language models for search and conversational AI.

A connector for the Perplexity API to enable web search within the MCP ecosystem.

Search for scientific publications across ArXiv, ACL Anthology, HuggingFace Datasets, and Semantic Scholar.

Research papers from arXiv, Google Scholar, and Wikipedia with citation metrics

Structural AI Search Readiness MCP. Audit, dry-run fixes, rescore, doctor. No LLM rankings.

A flexible service for searching and analyzing academic papers on arXiv.

Search and retrieve articles from bioRxiv, the preprint server for biology.

Perform web searches with the Brave Search API and analyze research papers using Google's Gemini model.

Provides AI-powered web search and summarization using the Gemini API's grounding feature.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "ollama deep researcher": {
            "mcp-server-ollama-deep-researcher": {
                "command": "node",
                "args": [
                    "dist/index.js"
                ]
            }
        }
    }
}

McpServers

{
    "mcp-server-ollama-deep-researcher": {
        "command": "node",
        "args": [
            "dist/index.js"
        ]
    }
}

Migrated into themcpcentral platform monorepoon 2026-07-23 (ADR-043).

Work here instead:mcpcentral-io/mcpcentralapps/deep-researcher/Worker:mcpcentral-deep-researcher

This repository is read-only and kept for history. SeeDEPRECATED.md.

Ollama Deep Researcheris a Desktop Extension (DXT) that enables advanced topic research using web search and LLM synthesis, powered by a local MCP server. It supports configurable research parameters, status tracking, and resource access, and is designed for seamless integration with the DXT ecosystem.

- Research any topicusing web search APIs (Tavily, Perplexity, Exa) and LLMs (Ollama, DeepSeek, etc.)
- Configuremax research loops, LLM model, and search API
- Track statusof ongoing research
- Access research resultsas resources via MCP protocol

- Implements the MCP protocol over stdio for local, secure operation
- Defensive programming: error handling, timeouts, and validation
- Logging and debugging via stderr
- Compatible with DXT host environments

. ├── 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 └── ...

-

Clone the repositoryand install dependencies:

git clone <your-repo-url> cd mcp-server-ollama-deep-researcher npm install

Install Python dependenciesfor the assistant:

cd src/assistant pip install -r requirements.txt # or use pyproject.toml/uv if preferred

Set required environment variablesfor web search APIs:

- For Tavily:TAVILY_API_KEY
- For Perplexity:PERPLEXITY_API_KEY
- For Exa:EXA_API_KEY(Get yours at
https://dashboard.exa.ai/api-keys)
- Optional:LANGSMITH_API_KEY,LANGSMITH_TRACING=true,OLLAMA_BASE_URL(defaults tohttp://localhost:11434)
- Example:

export TAVILY_API_KEY=your_tavily_key export PERPLEXITY_API_KEY=your_perplexity_key export EXA_API_KEY=your_exa_key

Build the TypeScript server(if needed):

node dist/index.js # Or use the DXT host to load the extension per DXT documentation

- Research a topic:

- Use theresearchtool with{ "topic": "Your subject" }

- Use theconfiguretool with any of:maxLoops,llmModel,searchApi

Seemanifest.jsonfor the full DXT manifest, including tool schemas and resource templates. FollowsDXT MANIFEST.md.

- All server logs and errors are output tostderrfor debugging.
- Research subprocesses are killed after 30 minutes to prevent hangs.
- Invalid requests and configuration errors return clear, structured error messages.

- All tool schemas are validated before execution.
- API keys are required for web search APIs and are never logged.
- MCP protocol is used over stdio for local, secure communication.

- Validate the extension by loading it in a DXT-compatible host.
- Ensure all tool calls return valid, structured JSON responses.
- Check that the manifest loads and the extension registers as a DXT.

- Missing API key:EnsureTAVILY_API_KEY,PERPLEXITY_API_KEY, orEXA_API_KEYis set in your environment depending on which search API you're using.
- Python errors:Check Python dependencies and logs instderr.
- Timeouts:Research subprocesses are limited to 30 minutes.

- Tavily:Fast, comprehensive web search with raw content extraction
- Perplexity:AI-powered search with natural language summaries and citations
- Exa:Neural search engine optimized for semantic search with highlights

If you use1Password, you can keep plaintext API keys off your disk and out of your AI coding agent's context. This isopt-in and additive— the plaintext setup above keeps working unchanged. Prerequisites: 1Password for Mac or Linux, theopCLI (brew install --cask 1password-cli), andsqlite3.

Createone1Password Environment holding these eight variables (the four keys are secret; the rest are non-secret config):

You can import an existing.envdirectly when creating the Environment. Once it exists, choose any of the three mechanisms below (A is the AI-coding pattern; B is 1Password's recommended MCP launch; C is a fallback for hosts that can't runop).

A. Mounted.env+ validation hook (keeps plaintext out of the LLM context)

1Password Environments mount a local.envas a UNIX named pipe (FIFO): contents are streamed on demand to authorized readers andnever stored on disk. A Claude CodePreToolUsehook validates the mount before the agent runs shell commands.
- In the 1Password desktop app, open your Environment →Destinations → Local.envfile → Choose file path →.env→ Mount. Verify withcat .env(approves via Touch ID; auth lasts until 1Password locks).
- .1password/environments.toml(committed) tells the hook which paths to validate — already set tomount_paths =
[".env"].
- Install the validation hook locally:

git clone https://github.com/1Password/agent-hooks /tmp/agent-hooks /tmp/agent-hooks/install.sh --agent claude-code --target-dir .

B.op run --environmentfor the MCP server launch

Copy.mcp.json.1password.example.mcp.json(gitignored), replace<ENVIRONMENT_ID>with your Environment ID, and your MCP host will resolve secrets at launch viaop run. Non-secret config stays in theenvblock; secrets are injected from the Environment. The template uses the full path/opt/homebrew/bin/opbecause GUI-launched hosts (e.g. Claude Desktop) don't inherit your shell$PATH— adjust if youroplives elsewhere (which op).

Fallback if youropCLI lacks--environment(theenvironmentsubcommand is part of the 1Password Environments beta and is absent from some builds, e.g.opv2.34.x): useop run --env-file .envagainst a plain.envofop://references instead. Create the item once (op item create --vault "Your Vault" --category "Login" --title "ollama-deep-researcher" "TAVILY_API_KEY[concealed]=..." …), then write a gitignored.envof references and point the launcher at it:

# .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

The same.envalso powers Docker (see below), so one references file covers both launch paths.op runprompts Touch ID once per launch.

For MCP hosts that can't useop run, copy.mcp.json.template→ a working file, replace<vault>with your vault name, then materialize the{{ op://... }}references into real values:

op inject -i .mcp.json.template -o .mcp.json

op injectwrites the output with filemode0600..mcp.jsonis gitignored. Recompile after rotating secrets in 1Password. (RequiresopCLI with standard item/vault support; theop run --environmentform in option B additionally requires 1Password Environments beta.)

docker-compose.ymlinterpolates all eight vars from the environment. Run compose throughop run --env-fileso theop://references in.env(or the FIFO mount, if you set one up in A) are resolved and forwarded into the container:

op run --env-file .env -- docker compose up

- DXT Architecture Overview
-
DXT Manifest Spec
-
DXT Example Extensions
-
Model Context Protocol SDK

Search global news using natural language. Webz.io News Search API returns the most relevant articles and content, with filters for source, country, language, date, sentiment, and category.

Intelligent search, reasoning, and research capabilities powered by Perplexity's specialized AI models.

An MCP server to interact with Perplexity AI's language models for search and conversational AI.

A connector for the Perplexity API to enable web search within the MCP ecosystem.

Search for scientific publications across ArXiv, ACL Anthology, HuggingFace Datasets, and Semantic Scholar.

Research papers from arXiv, Google Scholar, and Wikipedia with citation metrics

Structural AI Search Readiness MCP. Audit, dry-run fixes, rescore, doctor. No LLM rankings.

A flexible service for searching and analyzing academic papers on arXiv.

Search and retrieve articles from bioRxiv, the preprint server for biology.

Perform web searches with the Brave Search API and analyze research papers using Google's Gemini model.

Provides AI-powered web search and summarization using the Gemini API's grounding feature.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.