About draco
DRACO is a coding, systems, and security question-answering service that retrieves from technical books and cites its sources. It serves developers and security practitioners through a web interface, REST API, and MCP.
Key features
- 01Retrieval across technical books
- 02Inline citations and source lists
- 03BM25 passage search
- 04REST API and streaming answers
- 05Self-hosting with local Ollama models
Use cases
- 01Research a coding or systems question
- 02Review security topics with cited references
- 03Search book passages for relevant material
MCP support
The streamable HTTP MCP server offers `draco_ask`, `draco_search`, and `draco_status` to MCP clients. A stdio bridge for Claude Desktop and local clients is also included.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://draco.thetempleofdoom.com/mcpclaude mcp add --transport http com-thetempleofdoom-draco-draco https://draco.thetempleofdoom.com/mcp{"mcpServers":{"com-thetempleofdoom-draco-draco":{"type":"http","url":"https://draco.thetempleofdoom.com/mcp"}}}Open in Cursor{"servers":{"com-thetempleofdoom-draco-draco":{"type":"http","url":"https://draco.thetempleofdoom.com/mcp"}}}Open in VS Code{"mcpServers":{"com-thetempleofdoom-draco-draco":{"type":"http","url":"https://draco.thetempleofdoom.com/mcp"}}}{"mcpServers":{"com-thetempleofdoom-draco-draco":{"serverUrl":"https://draco.thetempleofdoom.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
Details
From the project READMEDRACO — The Book-Forged Code Oracle
Other AIs guess. DRACO knows — and proves it.
DRACO answers coding, systems, and security questions using retrieval over a library of 1,855 real technical books (354M characters, 116,558 indexed passages) — and cites the exact book behind every claim. No knowledge cutoff. No hallucination laundering. Receipts attached.
Try it now: https://draco.thetempleofdoom.com — 10 free questions a day, no signup.
Why it's different
| Generic chatbot | DRACO |
|---|---|
| Compressed training-data recall | Live retrieval from 1,855 books on the shelf |
| "Trust me" answers | Every claim carries [n] citations + a sources array |
| Knowledge cutoff: yes | The canon is resident — K&R, Tanenbaum, the shellcoders' handbook |
| Sells your prompts | Self-hosted, zero telemetry, questions never leave the house |
Quickstart
Chat in the browser
https://draco.thetempleofdoom.com — streaming answers, visible reasoning, sources bar under every response. 10 free/day, no account.
REST API
# 1. Get a free key (30 credits/month, email only, no card)
curl -s -X POST https://draco.thetempleofdoom.com/api/signup \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]"}'
# → {"api_key":"sk-draco-..."}
# 2. Ask — RAG-grounded answer with citations (1 credit)
curl -s -X POST https://draco.thetempleofdoom.com/api/ask \
-H 'X-API-Key: sk-draco-...' -H 'Content-Type: application/json' \
-d '{"q":"explain the ret2libc technique with a minimal poc"}'
# → {"answer":"...[1]...[2]","sources":[{"title":"...","category":"..."}]}
# 3. Raw passage search across all 1,855 books (1 credit)
curl -s "https://draco.thetempleofdoom.com/api/search?q=tcp%20syn%20flood&k=5" \
-H 'X-API-Key: sk-draco-...'
MCP — use it from Claude, GPT, or any agent
{
"mcpServers": {
"draco": { "url": "https://draco.thetempleofdoom.com/mcp" }
}
}
Tools:
draco_ask(question)→ cited, book-grounded answerdraco_search(query, k)→ raw BM25 passages with titles + scoresdraco_status()→ live library stats
Officially listed on the MCP registry:
com.thetempleofdoom.draco/draco
Manual MCP handshake:
curl -s https://draco.thetempleofdoom.com/mcp \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"smoke","version":"1"}}}'
How it works
question ──► BM25 retrieval over 116k book passages
│
▼
top passages + question ──► local LLM (self-hosted GPU)
│
▼
answer with inline [n] citations + sources array
- Ingest (
ingest.py) — PDF/CHM/DJVU → clean plain text. Junk scans dropped automatically. - Index (
build_index.py) — 300-token overlapping chunks → Snowball-stemmed BM25 index. - Serve (Flask + gunicorn) — retrieval-augmented generation with SSE streaming, separate reasoning and answer channels, and automatic degenerate-output detection/retry.
- Expose — REST API, streamable-http MCP server, and a full agent-discovery kit:
/llms.txt,/llms-full.txt,/openapi.json,/.well-known/ai-plugin.json,/.well-known/mcp-server.json,/sitemap.xml.
Pricing
Bitcoin only. No subscription traps, no KYC, no card processor.
| Tier | Price | What you get |
|---|---|---|
| Web (no key) | free | 10 questions/day in the browser |
| API key | free | 30 credits/month, forever |
| satchel | $3 | 60 credits |
| crate | $10 | 250 credits |
| hoard pack | $25 | 750 credits |
| HOARD | $50/mo | unlimited — every ask, every search, 30 days |
1 credit = 1 ask or 1 search. Credits never expire. Books are free to download at /library — we sell answers, not files.
Self-hosting
git clone https://github.com/drjonesxxx1/draco.git
cd draco
python3 -m venv venv && ./venv/bin/pip install -r requirements.txt
cp config.example.json config.json # set model, ollama URL, limits, payments
# point ingest.py at YOUR book directory, then:
./venv/bin/python3 ingest.py # books → text + manifest
./venv/bin/python3 build_index.py # text → BM25 index
./venv/bin/gunicorn -w 2 --threads 8 -b 127.0.0.1:8012 app:app # API + web
./venv/bin/python3 -m uvicorn mcp_server:app --port 8013 # MCP
Any local Ollama model works. Put nginx in front (see deploy/nginx-draco.conf for
the reference config incl. SSE + MCP proxying). Payments are optional — leave the
btcpay block empty and the free tiers carry the whole thing.
Repository layout
| File | Purpose |
|---|---|
app.py | Flask: web UI, REST API, SSE chat, payments webhook, agent-discovery kit |
draco_core.py | RAG engine, retrieval, LLM calls, metering, DB |
pages.py / pages2.py | Theme |
mcp_server.py | Standalone streamable-http MCP server |
mcp_client.py | stdio bridge for Claude Desktop / local clients |
ingest.py / build_index.py | Corpus pipeline |
test_splitter.py | Unit tests for the reasoning/answer channel splitter |
deploy/ | systemd units + nginx config |
Notes
- Security content is for education and authorized testing only.
- Books retain their original copyrights; the library is shared for personal use.
- No telemetry. No logs sold. Ever.
Comments
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.