brain-mcp

brain-mcp

Enables AI agents to securely read and write to an Obsidian-compatible Markdown vault with per-agent access control, audit logging, and conflict resolution.

Category
访问服务器

README

brain-mcp

Company 2nd Brain, by Sentient Labs — open source, Apache-2.0

A Dockerized FastMCP service that is the sole controlled writer to an Obsidian-compatible Markdown vault, letting any number of AI agents (Hermes, Claude, anything MCP-capable — all external clients over HTTPS) share company knowledge safely.

One generic image, zero client-specific content. Per-client installs are thin private brain-deploy-<client> repos instantiated from deploy-template/, which ships the compose stack (Traefik-aware), the ./brain terminal console, agent onboarding, and docs. Self-host freely; Sentient Labs sells the managed install, updates, weekly review ritual, and agent onboarding.

What it enforces

  • Per-agent bearer tokens — server stores sha256 hashes only, constant-time comparison, tokens identified in logs/audit by prefix only.
  • Glob-based role ACLs — default-deny, deny > write > read precedence, {client} interpolation, exactly one admin client. Authorization happens in the server before any tool executes.
  • Vault-root jail — rejects absolute paths, .. traversal, escaping symlinks, dot-files (.git, .obsidian, .env), and non-text extensions.
  • Safe concurrent writes — per-file locks, read-latest-before-write, temp-file + atomic rename, hash-conditional section updates that return a structured CONFLICT instead of overwriting.
  • Append-only audit — every write (allowed or denied) becomes a JSONL event (UTC time, client, role, tool, path, before/after hash) in a directory the MCP tools can't reach; size-based rotation.
  • In-app rate limiting per token (local agents bypass Traefik, so edge limits aren't enough).
  • No hard delete — archive_note moves to _Archive/; restore_note brings it back.
  • Log redaction — bearer headers and token-shaped strings never reach any log.

Tools

health_check (unauthenticated), search_notes, read_note, read_note_section, list_directory, list_recent_changes, create_note, append_to_note, update_note_section (requires expected_hash), add_inbox_item, move_note, and admin-only rename_note, archive_note, restore_note, set_note_status (promote unverified → canonical).

A plain GET /health route serves Docker/Traefik health checks.

Install — ./brain setup (the TUI does everything)

On the server (needs Docker + Compose v2, python3, openssl):

git clone https://github.com/kaeldominion/brain-mcp
cp -r brain-mcp/deploy-template 2nd-brain
cd 2nd-brain
./brain setup

That's the whole install. The guided wizard runs preflight checks, detects an existing Traefik (Hostinger boxes ship one) or deploys the bundled one, asks for your domain/email, generates hashed agent tokens, seeds the vault (including _System/ — agent instructions, note templates, entity index, and the onboarding interview protocol), starts the stack, and runs the acceptance suite.

Then onboard each AI agent with:

./brain add-agent

which prints one copyable block — MCP URL + bearer token (shown once) + the company-brain skill text. Paste it into the agent's config; that's the entire integration. Agents connect to https://brain-mcp.<domain>/mcp with Authorization: Bearer <token>.

Day-2 admin: just run ./brain — an interactive console with everything (status, agents, tokens, offsite backup to your own private repo, verify, one-command update). Full details in deploy-template/README.md and deploy-template/docs/.

Multiple brains on one server: each brain is one folder — copy the template again, run ./brain setup with a different prefix/domain, and it shares the existing reverse proxy while staying fully isolated (own containers, vault, tokens, backups). See deploy-template/README.md.

Personal brains — no server needed

One human + one agent doesn't need tokens, locking, or Docker: a personal 2nd Brain is the same vault template as local files next to your agent, with the same templates, entity index, and onboarding interview. See PERSONAL.md — including the zero-conversion upgrade path to a full server install when a second agent or machine ever needs it. Company plans typically pair one shared server brain with a local personal brain per person.

Manual / headless install (no TUI)

Everything the TUI does is plain scripts: cp .env.example .env, edit it, then scripts/bootstrap.sh — or wire the image yourself from examples/brain.config.example.yaml + examples/docker-compose.example.yml (vault at /vault, audit at /audit, config read-only at /config/brain.config.yaml; token hashes are sha256 of <deploy>_<client>_$(openssl rand -hex 16) in the MCP_TOKEN_HASH_* env vars; the vault template is baked into the image at /opt/vault-template).

The config is validated at boot; the server refuses to start on any error. Adding a client or role is a config change + restart — never a code change.

Development

uv sync
uv run pytest          # 110 tests incl. end-to-end streamable HTTP
docker build -t brain-mcp .

Releases: tag vX.Y.Z → CI runs tests, builds the image, and pushes ghcr.io/kaeldominion/brain-mcp:X.Y.Z. VPSs only ever pull images; they never see source.

Layout

src/brain_mcp/    server.py config.py auth.py permissions.py paths.py
                  locking.py notes.py search.py audit.py ratelimit.py errors.py
tests/            full acceptance suite (auth, authz, jail, concurrency, HTTP e2e)
vault-template/   default Obsidian taxonomy + _System (instructions, templates,
                  Entity Index, Onboarding Protocol)
examples/         config + compose examples

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选