mcpField
D
Darwin RAG

Darwin RAG

Local
github.com/BrightdotdevMemory & Knowledge3Updated 2w ago

About Darwin RAG

Darwin RAG is a local-first retrieval-augmented generation engine for people who want AI agents to search private documents. It combines keyword and dense-vector indexing and exposes search and document management through MCP.

Key features

  1. 01Ingests documents, spreadsheets, images, and URLs
  2. 02Hybrid BM25 and dense-embedding indexing
  3. 03Keyword, semantic, and hybrid retrieval
  4. 04Optional LLM-backed answer generation
  5. 05Separate stores and structured session logs

Use cases

  1. 01Searching local PDFs and notes with an agent
  2. 02Retrieving records from structured CSV files
  3. 03Keeping project or tenant indexes separate
  4. 04Inspecting indexed files and search logs

MCP support

Darwin RAG exposes document ingestion, search, store management, file status, and logs as MCP tools. It supports stdio, SSE, and Streamable HTTP transports.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"brightdotdev-darwin-rag": {
"command": "uvx",
"args": [
"darwin-rag"
],
"env": {
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>",
"GEMINI_API_KEY": "<GEMINI_API_KEY>",
"DARWIN_BASE_DIR": "<DARWIN_BASE_DIR>"
}
}
}
}
Run commanduvx darwin-rag
Environment variables to set
OPENAI_API_KEYSecretOpenAI API key for LLM answer generation
ANTHROPIC_API_KEYSecretAnthropic API key for LLM answer generation
GEMINI_API_KEYSecretGoogle Gemini API key
DARWIN_BASE_DIROverride the base data directory

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypidarwin-rag0.2.18

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

Darwin RAG

Search your own documents with any AI agent, privately, on your own machine.

Darwin is a local-first RAG engine that ingests documents, indexes them with BM25 + dense embeddings, and exposes search through an MCP server. Point Claude, Cursor, or any MCP client at it and your agent can search your PDFs, notes, spreadsheets, and web pages without sending them to a cloud index.

One-time internet is needed to download models during setup. After that, search and indexing run fully offline.

License: MIT PyPI

  • Ingestion: PDF, Markdown, HTML, images (OCR), CSV, Excel, ODS, URLs
  • Indexing: BM25 keyword + dense embedding hybrid index with configurable chunking strategies
  • Search: Hybrid, semantic, or keyword retrieval with reranking, diversity rerank, and structural penalties
  • Generation: LLM-backed answer synthesis via LiteLLM (OpenAI, Anthropic, Gemini, etc.)
  • Observability: Structured logging with per-session history, queryable via MCP
  • Isolation: Multiple independent stores for tenant/project separation
  • Deployment: stdio (AI agent subprocess), SSE, or Streamable HTTP; Docker-ready
  • Local-first: Everything runs locally, fully offline-capable after setup

Built by BrightDotDev.


Why Darwin?

  • Private by default. Your documents stay on your machine.
  • Works with your agent. Standard MCP server: Claude Desktop, Cursor, and other MCP clients.
  • Search that fits the question. Keyword for exact terms, semantic for meaning, hybrid when unsure.
  • Light to start. The required preset downloads just one embedding model.

Quick Start

1. Install
pip install darwin-rag
2. Set up models
# Interactive: detects hardware, pick your models
darwin-admin setup interactive

# Or one-shot (embedding-only, no prompts)
darwin-admin setup --preset required
3. Start the MCP server & connect
# stdio mode: for AI agent subprocess (Claude Desktop, Cursor, etc.)
darwin mcp

# Or HTTP mode: for remote clients
darwin mcp --http --port 8765

Configure your MCP client:

{
  "mcpServers": {
    "darwin": {
      "command": "darwin",
      "args": ["mcp"],
      "env": {
        "OPENAI_API_KEY": "sk-..."  // At least one LLM provider key
      }
    }
  }
}

Or generate config automatically:

darwin config claude          # Claude Desktop config
darwin config cursor          # Cursor config
darwin config all --copy      # All clients + copy to clipboard
4. Try it

Ask your agent: "Ingest ./my-notes with Darwin, then find everything I wrote about ."


Use it as an agent skill

Darwin ships with a skill (skills/darwin-rag/SKILL.md) that tells agents when and how to use the MCP tools: check what's indexed, ingest, pick a search mode, and answer from sources. Copy the darwin-rag folder into your agent's skills directory (for Claude Code: ~/.claude/skills/).


MCP Tools

ToolDescription
search_darwinQuery the knowledge base with hybrid/semantic/keyword search
search_listsSearch structured data (CSVs, JSON arrays) by field values
get_search_resultsList saved search results
get_search_result_by_idLoad a saved search result by filename
get_schemaInspect schemas for structured files (keys, types, record counts)
run_pipelineIngest + index documents from a path or URL
purge_artifactsDelete pipeline artifacts for specific files
create_storeCreate a new isolated data store
list_filesList all tracked files with pipeline status
file_statusDetailed status for a single file across all stages
get_logsQuery session logs (oldest first, INFO excluded)

Full documentation: docs/mcp.md


Remote / HTTP Mode

Start the server on a network-accessible endpoint:

# SSE transport (legacy)
darwin mcp --sse --host 0.0.0.0 --port 8765

# Streamable HTTP transport (recommended for production)
darwin mcp --http --host 0.0.0.0 --port 8765

Configure your MCP client with the URL:

{
  "mcpServers": {
    "darwin": {
      "url": "http://your-host:8765/mcp"  // or /sse for SSE mode
    }
  }
}

Environment Variables

VariableRequiredDescription
OPENAI_API_KEYNo*OpenAI provider key
ANTHROPIC_API_KEYNo*Anthropic provider key
GEMINI_API_KEYNo*Google Gemini provider key
MISTRAL_API_KEYNo*Mistral AI provider key
GROQ_API_KEYNo*Groq provider key
COHERE_API_KEYNo*Cohere provider key
TOGETHER_API_KEYNo*Together AI provider key
OPENROUTER_API_KEYNo*OpenRouter provider key
DEEPSEEK_API_KEYNo*DeepSeek provider key
DARWIN_BASE_DIRNoOverride the base data directory
NO_COLORNoSet to any value to disable ANSI color output

* At least one LLM provider key is required for answer generation. Search/indexing works without any.


Setup Details

CommandWhat it does
darwin-admin setup interactiveGuided setup: detect hardware, choose models
darwin-admin setup --preset requiredDownload embedding model only (fastest)
darwin-admin setup --preset recommendedEmbedding + reranker + OCR models
darwin-admin setup loggingReconfigure logging only
darwin-admin setup validateValidate current setup

See docs/setup.md for the full walkthrough including Docker, from-source install, and API key configuration.


CLI Reference

darwin: User CLI

CommandDescription
darwin mcpStart MCP server (stdio, --sse or --http for network)
darwin config [client]Generate MCP client config

darwin-admin: Power-user CLI

CommandDescription
darwin-admin setupSetup models, logging, and configuration
darwin-admin statusSystem status overview
darwin-admin modelsModel registry: list, install, switch, keys
darwin-admin storeData store: status, files, audit, health, repair
darwin-admin pipelineIngestion pipeline: run, ingest, index, purge
darwin-admin searchInteractive search
darwin-admin logsStructured log viewer and management
darwin-admin systemSystem information
darwin-admin uninstallRemove Darwin data and configuration

See docs/admin.md for the full command reference.


Python API

For embedding darwin-rag as a library in your own app:

from core import Darwin

d = Darwin()
d.ingest("./papers", recursive=True)
results = d.search("what is this paper about")
records = d.search_records(filters={"status": "active"})

Full reference: docs/api.md


Documentation

DocWhat
setup.mdFull setup walkthrough
mcp.mdMCP server, tools, resources, transports
admin.mdAdmin CLI reference
architecture.mdFor developers and contributors
pipeline.mdIngestion & indexing
retrieval.mdSearch engine
storage.mdDarwinStore
models.mdModel registry & inference
logger.mdStructured logging
orchestrators.mdHigh-level business logic
api.mdPython API (Darwin class)

Contributing

Found a bug? Want to add something? You're welcome here.

Read CONTRIBUTING.md for the full guidelines.


License

MIT. See LICENSE.

Core architecture and implementation by BrightDotDev.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.