This is not a search tool that returns in a second; a research pass takes about 2 minutes by the project's own account, and a client with a default timeout will cut it off mid-run. The other thing to settle early is the pairing: a strong thinking model with a high-output task model behaves very differently from using one model for both.
A self-hosted deep-research application that also serves an MCP endpoint. It splits the work between a thinking model and a task model, pairs them with a web search provider, and produces a research report; because you deploy it, the data and the model choice stay yours.
- A research endpoint any MCP client can call, over Streamable HTTP at `/api/mcp` or SSE at `/api/mcp/sse`
- A wide choice of models: Gemini, OpenAI, Anthropic, Deepseek, Grok, Mistral, Azure OpenAI, OpenRouter, Ollama and any OpenAI-compatible endpoint, selected with `MCP_AI_PROVIDER`
- Web search through Searxng, Tavily, Firecrawl, Exa, Bocha or Brave, selected with `MCP_SEARCH_PROVIDER`, so models without built-in search can still work over the live web
- Separate thinking and task models, set with `MCP_THINKING_MODEL` and `MCP_TASK_MODEL`, to balance depth against speed and output length
- Optional protection: set `ACCESS_PASSWORD` and the MCP endpoint requires a Bearer token
- The same deployment's web app for the interactive side: local knowledge base uploads, editable reports, knowledge graphs and research history
Your own deployment — one-click to Vercel or Cloudflare Pages, or the Docker image — plus keys for the model provider and search engine you pick. The four MCP variables above are global environment variables and the service will not run without them. Set a long client timeout: the README uses 600, because a research run takes minutes. Version 0.11.1, MIT licensed.
One command plus a key — docker pull xiangfa/deep-research:latest, then supply credentials
