About
Updated:
Contextator turns documentation into a searchable endpoint that AI agents can talk to. Point a project at a folder, a git repository, an upload, a Notion workspace, a Confluence site, a public documentation site, an S3 bucket, Google Drive or GitHub issues, and it becomes its own Model Context Protocol server that Claude Code, Cursor, Claude Desktop and any other MCP client can search semantically.
What it does
- One URL per project, fully isolated. Every project keeps its own documents and vector
embeddings; a client connected to
/mcp/billingnever sees/mcp/mobile. - Many sources per project. A mounted directory, a git repository (or one subdirectory of it), uploaded files and archives, a Notion workspace, a Confluence site, a public documentation site, an S3 bucket, Google Drive or GitHub issues — combined into one searchable endpoint, each source mounted under its own name.
- Semantic search, not grep. Documents are chunked with their heading breadcrumbs intact and embedded into PostgreSQL with pgvector, so an agent finds the passage that answers the question rather than the page that repeats the keyword.
- Incremental indexing. Files are hashed; only what changed is re-embedded, and deleted files disappear from the index. A push webhook can trigger a run on every commit.
- Five tools for the agent.
search_docsfor ranked excerpts,list_topicsfor the document tree,read_documentfor the full Markdown of one indexed file,whats_newfor what changed since a point in time, andreport_gap, which tells the maintainers a question the documentation does not answer and writes only to a table of its own. The endpoint also offers two prompts,answer_from_docsandexplore_topic, and the indexed documents ascontextator://resources.
How it works
An index run syncs each source first — fetching a git branch, pulling Notion pages, reading a mounted folder — then walks the result, converts each file to Markdown where it is not already (HTML, Word, CSV and PDF are), chunks it along its headings, embeds the chunks and stores them next to their document. When an agent asks a question, the question is embedded the same way and answered by a hybrid search — vector and keyword, fused by rank — over that project’s chunks alone.
Embeddings are generated locally on the CPU by default, with a multilingual model that covers 100 languages. Nothing about your documents is sent anywhere unless you deliberately switch the embedding provider to a hosted API.
Principles
- Self-hosted first. One Docker container holds the database and the app. Your documents stay on your infrastructure.
- Local by default. The default setup makes no outbound call once the embedding model has been downloaded.
- Boring on purpose. The dashboard is vanilla HTML, CSS and ES modules with no build step; the server is TypeScript on Node.js.
- Accounts and roles. The dashboard signs people in with their own account.
rootandadminmanage everything; amembersees only the projects it is added to, reading them or editing them. - A door on each endpoint. A new project’s MCP endpoint is closed: token required is the default and asks for a bearer token you hand out — scoped to one project, shown once and revocable. Account required asks for an account of this instance, signing in over OAuth 2.1 and checked on every request; open is a setting you choose per project, deliberately.
- Honest about limits. A token is a credential for the endpoint, not an account: whoever holds it reads everything indexed in that project, and a project left open is readable by anyone who can reach its URL.
Built with
TypeScript · Node.js 22+ · Fastify 5 · PostgreSQL 16 with pgvector · Drizzle ORM ·
the MCP TypeScript SDK 2.x (@modelcontextprotocol/server) · transformers.js.
Who builds it
Contextator is designed and developed by Muhammet Şafak and published as a Tunedness production. The software is free and open source under the GNU Affero General Public License v3: anyone may use it, study it, change it and run it, and any modified version that people reach over a network has to offer its source in turn — Contextator cannot be closed. A separate commercial licence is available for cases where those terms do not fit.
About Tunedness
Tunedness is an applied AI research and engineering lab under the Centvix umbrella. It tunes frontier models into systems that teams can operate in production. The products and projects under Tunedness are built on the same research, to Centvix’s shared standards with Tunedness’s own standards layered on top. Each one is designed to be measured before it is trusted and to stay maintainable after it ships.
About the founder
Muhammet Şafak is the founder of Centvix: a software engineer, systems architect and engineering researcher who has been building software since 2008. The current focus is the architecture, scalability and reliability of high-traffic distributed systems. That work includes independent research examining system behavior through reproducible measurements, always choosing technology by the problem rather than the language. The rest of the time goes into open-source tools and infrastructure software under the Centvix umbrella.