ai-brain
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ai-brainsearch for notes about machine learning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI Brain
A self-hosted, web-first Markdown knowledge base that doubles as an AI brain. Documents and the links between them are stored in Postgres and exposed over both a REST API and an MCP server, so Claude, Codex, and other tooling can read, write, search, and traverse your notes. A drop-in replacement for Obsidian, built AI-native from the ground up.
Stack
Layer | Choice |
Frontend | Next.js (App Router) + Tailwind CSS v4 |
Backend | TypeScript service layer shared by the web API and the MCP server |
Database | Postgres 16 + pgvector (Drizzle ORM) |
Search | Hybrid: Postgres full-text + pgvector semantic (RRF) |
Auth | Auth.js credentials login + hashed Personal Access Tokens |
AI interface | MCP server (stdio + streamable HTTP) + REST, one shared core |
Deployment | Docker Compose |
Related MCP server: nvim-markdown-notes-memgraph
Repository layout
apps/
web/ Next.js app — UI, REST API, Auth.js
mcp/ MCP server (added in Phase 6)
packages/
core/ Domain/service layer (documents, links, search, embeddings, auth)
db/ Drizzle schema, migrations, Postgres + pgvector client
infra/
postgres/ First-boot init (enables the vector extension)Deploy with Docker Compose
The whole stack runs from one image:
cp .env.example .env # set AUTH_SECRET (openssl rand -base64 32)
docker compose up -d --build
# web → http://localhost:3002 · MCP → http://localhost:8787/mcpdocker compose brings up db (Postgres+pgvector), a one-shot migrate, then
web, mcp, and worker (async embedding + trash purge). The first registered
user becomes the admin. For a dev mail catcher (captures password-reset/verification
emails, UI on :1080): docker compose --profile mail up -d and set SMTP_HOST=maildev,
SMTP_PORT=1025.
Local development
pnpm install
cp .env.example .env # edit AUTH_SECRET etc.
docker compose up -d db # just Postgres
pnpm db:migrate # apply the schema
pnpm dev # web :3002, mcp, and worker (turbo)Connect Claude / Codex (MCP)
Generate a Personal Access Token at /settings/tokens, then point your client at the
MCP server. Tools exposed: search_documents, list_documents, get_document,
create_document, update_document, delete_document, get_backlinks, list_links,
plus a brain://documents/{id} resource.
Local (stdio) — e.g. Claude Code:
claude mcp add ai-brain \
--env AI_BRAIN_TOKEN=<your-PAT> \
-- node --import tsx /absolute/path/to/ai-brain/apps/mcp/src/stdio.tsRemote (Streamable HTTP) — run pnpm --filter @ai-brain/mcp start:http (defaults to
:8787), then:
claude mcp add --transport http ai-brain http://localhost:8787/mcp \
-H "Authorization: Bearer <your-PAT>"REST API
All endpoints accept Authorization: Bearer <PAT> (or a session cookie):
Method | Path | Scope |
GET/POST |
|
|
GET/PATCH/DELETE |
| read / write |
GET |
|
|
GET |
|
|
Build phases — all complete ✅
Scaffold — monorepo, Next.js + Tailwind, Postgres + pgvector, base schema.
Auth — login + Personal Access Tokens.
Documents — CRUD, Markdown parsing, editor.
Links —
[[wiki-links]]+ backlinks.Search — full-text + semantic (hybrid).
MCP — stdio + HTTP server over the service layer.
Each phase has a verify-phaseN*.mts script under packages/core/scripts (or
apps/mcp/scripts) demonstrating it end-to-end.
Production-readiness (added)
Async embedding via a Postgres-backed job queue + worker; real index-status badges.
Version history (coalesced snapshots) + soft-delete/Trash with retention purge.
Markdown import/export (zip) for spaces and documents.
Account hardening: password reset, email verification, admin + registration modes.
Full Docker Compose stack (db + migrate + web + mcp + worker).
Not yet done (follow-ups)
Graph view, folders/workspaces, SSO, real-time collaboration, attachments/images.
This server cannot be deployed
Maintenance
Related MCP Connectors
Personal context for every AI: search, read, and write back to your private Markdown library.
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to search, read, and traverse Markdown note vaults (Obsidian-compatible) with full-text search, backlinks, knowledge graphs, and a persistent memory system for cross-session context.168 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to query and interact with a graph database of markdown notes, extracting entities like wikilinks, mentions, and hashtags.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to read and write to a personal knowledge vault of markdown notes, projects, and tasks, with tooling for search, capture, daily logs, and project management across different AI tools.MIT
- AlicenseNot gradedqualityAmaintenanceEnables natural language interaction with a personal knowledge base stored locally on your computer, supporting semantic search, note reading, and writing through Claude Code or mobile apps.9MIT