Skip to content

Quick Start

Muhammet Şafak edited this page Sep 19, 2026 · 4 revisions

Quick Start

From nothing to an agent answering questions about your documentation. Budget ten minutes, most of which is the one-time embedding-model download.

You need: Docker with Compose, and a folder of Markdown files. That is all — the database ships inside the container.


1. Start the server

No repository clone needed — this pulls the published image, contextator/contextator:

mkdir contextator && cd contextator
curl -fsSLO https://raw.githubusercontent.com/Contextator/Contextator/main/docker-compose.yml
curl -fsSLO https://raw.githubusercontent.com/Contextator/Contextator/main/.env.example
cp .env.example .env
docker compose up -d
docker compose logs -f          # wait for "embedding model ready"

The first start does two slow things once: it initialises the database, and it downloads the embedding model (~470 MB by default; see Embedding Models for the smaller option). Both are stored in Docker volumes, so every later start takes seconds.

By default the folder ./docs is mounted read-only into the container at /docs; it is created empty if it does not exist yet. Point it at your own documentation instead by setting it in .env before starting:

DOCS_HOST_PATH=/path/to/your/docs

2. Create your account

The dashboard needs an account, and a new instance has none, so it starts by asking for a one-time setup code. While no account exists the server prints it at every start — it is in the log you are already following:

┌─ Contextator first-run setup ───────────────────────────────────────────┐
│ No user accounts exist yet; the dashboard is waiting for its first one. │
│                                                                         │
│   Open   http://localhost:3444/setup                                    │
│   Code   KRTW-9MHD-2PQF                                                 │
│                                                                         │
│ A new code is printed on every start until that first account exists.   │
└─────────────────────────────────────────────────────────────────────────┘

Open http://localhost:3444/ — it sends you to /setup — and fill in the code, a username and a password of at least 12 characters. Case and dashes in the code do not matter. Create the root account signs you in, and the code stops working for good.

Prefer to choose the code yourself? Put SETUP_CODE=something-you-remember in .env before the first start. Lost it? Restart the server; a new one is printed. Everything else about accounts is on Accounts and Permissions.

3. Create a project

Press New project (or just type n).

Field What to enter
Project name demo — lowercase letters, digits, - and _. This becomes your URL: /mcp/demo
Documentation directory Point at one of your own subfolders under /docs — the host folder from DOCS_HOST_PATH is mounted there, so docs/handbook on the host is /docs/handbook here
Index now Leave it checked

Press Create project. The project appears in the list and its status moves through queued → syncing → embedding → idle. A few hundred Markdown files take a minute or two on the first run; later runs only touch what changed.

Leaving the directory empty is fine too — you can add git repositories, uploads or Notion afterwards with Add source. See Document Sources.

4. Connect your agent

Select the project and find the Connect an agent panel. It prints a ready-to-paste snippet for each client. For Claude Code:

claude mcp add --transport http demo-docs http://localhost:3444/mcp/demo

For Cursor, put this in ~/.cursor/mcp.json (global) or .cursor/mcp.json (per repository):

{ "mcpServers": { "demo-docs": { "url": "http://localhost:3444/mcp/demo" } } }

Claude Desktop needs a stdio bridge; the snippet is on the Connecting AI Clients page along with everything else.

5. Ask a question

Ask your agent something your documentation answers:

How do I re-index a project?

The agent calls search_docs, gets back the most relevant excerpts with their file paths and heading breadcrumbs, and answers from them. If it needs the whole file it calls read_document. If it wants to know what exists at all, it calls list_topics. You do not have to tell it which tool to use — the server describes itself.

You can verify the endpoint without an agent at all. From a source checkout:

npm install && npm run smoke -- http://localhost:3444/mcp/demo "how do I re-index"

What next

  • Add more documentation. A project can hold several sources at once — see Document Sources.
  • Keep it in sync automatically. A push webhook re-indexes the moment someone merges: Push Webhooks.
  • Give the rest of the team accounts. Users in the top-right menu creates them; a member account reaches only the projects you add it to under Members on the project page — see Accounts and Permissions.
  • Close the endpoint if it should not be public. A project's MCP endpoint is open to anyone who can reach its URL until you switch MCP access to token required on the project page — see Projects.
  • Tune retrieval. With the local model, CHUNK_MAX_TOKENS=250 usually retrieves slightly better than the default; see Indexing.

Clone this wiki locally