# Contextator

> A self-hosted documentation server that speaks the Model Context Protocol, giving AI agents semantic search over your own docs.

- Updated: 2026-09-21
- Source: https://contextator.com/en/docs/home/
- Language: en-US
- Author: Muhammet Şafak

---
**Give your AI agent your documentation.**

Contextator is a self-hosted documentation server that speaks the
[Model Context Protocol](https://modelcontextprotocol.io). You point it at the places your
documentation actually lives — a folder on the server, a git repository, a zip someone sent you, an
Obsidian vault, a Notion workspace — and each project becomes its own URL that Claude Code, Cursor,
Claude Desktop and any other MCP client can search — meaning and exact wording at once:

```
http://localhost:3444/mcp/my-project
```

Ask your agent *"how do we rotate the signing key?"* and it searches your documentation, quotes the
right paragraph and tells you which file it came from.

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

```bash
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
```

Then open **http://localhost:3444/** and create your first project. The whole walkthrough is in
**[Quick Start](/en/docs/quick-start/)** — about ten minutes from nothing to an agent answering
questions.

---

## What makes it different

- **One URL per project, fully isolated.** A client connected to `/mcp/billing` can never see
  `/mcp/mobile`. Separate documents, separate embeddings, separate everything.
- **Many sources per project.** A local directory *and* two git repositories *and* an uploaded vault
  *and* a Notion workspace — merged into one searchable endpoint, each under its own name.
- **Open or closed, per project.** A new project is token required by default — creating it mints a
  first token, shown once — and can be opened or switched to account required from its own page. Open
  means anyone who can reach the endpoint reads everything indexed there; token required needs a bearer
  token, a credential for the endpoint rather than an account; account required checks the project's own
  memberships through OAuth 2.1 on every request. See [Security](/en/docs/security/).
- **Accounts, not a shared password.** Everyone signs in as themselves; `root` and `admin` reach every
  project, and a `member` reaches only the ones you add it to, as a viewer or an editor. See
  [Accounts and Permissions](/en/docs/accounts-and-permissions/).
- **100 % local by default.** Embeddings run on your CPU. No API key, no account with anyone else,
  nothing leaves the machine. Switch to OpenAI embeddings with two environment variables if you prefer.
- **Multilingual.** The default model covers 100 languages including Turkish. Ask in the language the
  answer is written in: matching across languages is a measured limit of the model, not a switch.
- **One container.** PostgreSQL and the application ship in a single image. There is no database to
  install and no migration to run.
- **More than Markdown.** Markdown, MDX and plain text are indexed as they are; HTML, Word, CSV and PDF
  are converted to Markdown at the edge, and an OpenAPI or Swagger specification becomes one document per
  operation. There is no OCR, so a scanned PDF is refused by name rather than half-indexed.
- **Incremental.** Files are hashed; a re-index only re-embeds what actually changed.
- **Works with old and new clients.** Both MCP transports are served on the same URL, so clients pick
  whichever they support without any configuration.

---

## Start here

| I want to… | Page |
|------------|------|
| Get it running and connected in ten minutes | **[Quick Start](/en/docs/quick-start/)** |
| Install it properly (Compose, plain `docker run`, build it yourself, or from source) | [Installation](/en/docs/installation/) |
| Understand every setting | [Configuration](/en/docs/configuration/) |
| Learn my way around the dashboard | [Dashboard Tour](/en/docs/dashboard-tour/) |
| Give my team accounts, and decide who sees what | [Accounts and Permissions](/en/docs/accounts-and-permissions/) |
| Add documentation from somewhere | [Document Sources](/en/docs/document-sources/) |
| Connect Claude Code / Cursor / Claude Desktop | [Connecting AI Clients](/en/docs/connecting-ai-clients/) |
| Know what the agent can actually do | [MCP Tools](/en/docs/mcp-tools/) |
| Fix something that is not working | [Troubleshooting](/en/docs/troubleshooting/) |

## Sources

| Source | Page |
|--------|------|
| A folder mounted on the server | [Local Directory Source](/en/docs/local-directory-source/) |
| A git repository (GitHub, GitLab, Bitbucket, Gitea…) | [Git Repository Source](/en/docs/git-repository-source/) |
| Files, folders and archives you upload | [Upload Source](/en/docs/upload-source/) |
| An Obsidian vault | [Obsidian Vaults](/en/docs/obsidian-vaults/) |
| A Notion workspace | [Notion](/en/docs/notion/) |

## Going deeper

[Indexing](/en/docs/indexing/) · [Embedding Models](/en/docs/embedding-models/) ·
[Content Types](/en/docs/content-types/) · [Push Webhooks](/en/docs/push-webhooks/) ·
[Admin API](/en/docs/admin-api/) · [Accounts and Permissions](/en/docs/accounts-and-permissions/) ·
[Security](/en/docs/security/) · [Backup and Data](/en/docs/backup-and-data/) ·
[FAQ](/en/docs/faq/)

---

*Contextator is free software under the [GNU AGPL v3 or later](/en/docs/faq/) — run it,
change it, share it; a modified version you let others reach over a network owes them its source. A
commercial licence is available if those terms do not fit.*
