mcpField
B
Brainy

Brainy

ローカル
github.com/memokarメモリ・ナレッジ03 週間前に更新

Brainy について

Brainyは、AIエージェントと人が協働するチーム向けのセルフホスト型ナレッジ・タスクサービスです。Git管理のMarkdownに、タスクの取得、領域ごとの権限、承認、監査ログを組み合わせています。

主な機能

  1. 01Git管理のMarkdownナレッジ
  2. 02アトミックな取得とリース付きタスク
  3. 03領域ごとのロールとアクセス制御
  4. 04変更提案への人による承認
  5. 05追記専用の監査ログ
  6. 06ウェブ管理画面

活用シーン

  1. 01エージェント間でタスクを引き継ぐ
  2. 02複数エージェントで管理されたナレッジを共有する
  3. 03採用前にエージェントの変更を確認する
  4. 04タスクやリソースの重複作業を防ぐ

MCP 対応

BrainyはMCPエンドポイントを通じて、ナレッジ、タスク、リソース取得の操作を提供します。MCPクライアントはHTTPまたはローカルのstdioプロセスで接続でき、リモートコネクターではOAuth 2.1を利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"memokar-brainy": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/memokar/brainy:0.2.0"
]
}
}
}
起動コマンドdocker run -i --rm ghcr.io/memokar/brainy:0.2.0

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/memokar/brainy:0.2.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Brainy

CI License: AGPL-3.0 Dependencies: none

AI エージェントと、エージェントと働く人間のための共有ブレインです。

Brainy はセルフホスト可能なナレッジおよびタスクの基盤です。Claude、ChatGPT、その他の MCP対応 AI は、1 つの管理されたエンドポイントを通じて接続します。 すべてのエージェントが同じナレッジを読み、同じタスクリストを使い、監査証跡を残します。 そのため、AI は別々のチャットの中に閉じこもるのではなく、互いに作業を引き継げます。

   ChatGPT ─┐                                   ┌─ Git-versioned knowledge (Markdown)
   Claude  ─┼──►  MCP endpoint  ──►  Brainy  ───┼─ Tasks with atomic claim/lease
   Your bot ┘     (OAuth / tokens)   ACL+Audit  └─ Spaces, roles, append-only audit log
                                       ▲
                          Humans: web admin UI (+ optional Telegram approvals)

Brainy を選ぶ理由

  • AI 同士が協力できます。 ChatGPT がタスクを作成し、Claude が引き受けて作業し、結果を書き戻し、人間がレビューします。調整はタスクを通じて行われ、エージェント間で隠れた処理が行われることはありません。
  • 信頼できる唯一の情報源です。 ナレッジは Git リポジトリ内のプレーンな Markdown として保存されます。書き込みはすべてコミットになるため、履歴、差分、ロールバックをすぐに利用できます。
  • デフォルトで安全です。 MCP 経由のシェル、ファイルシステム、eval はありません。パスの許可リスト、スペースごとの ACL、書き込み時のシークレット検出、レート制限、ハッシュ化されたトークン、追記専用の監査ログを備えています。
  • 二重作業を防ぎます。 リースとクレームトークンを使ったアトミックなタスクの取得により、2 つのエージェントが同じタスクを同時に処理することはありません。
  • 人間がプロセスに参加できます。 エージェントはナレッジの変更を提案できます。人間が(ウェブ UI または Telegram で)承認または却下します。タスクは完了と見なされる前に、レビューまたは承認を必須にすることもできます。
  • 依存関係はゼロです。 Python 標準ライブラリと SQLite のみを使用します。pip install は不要で、攻撃対象領域も小さくなっています。

Markdown ファイルだけでは不十分な理由

Git リポジトリ内の共有メモファイルは、ナレッジの保存先として優れています。Brainy は意図的にその部分を維持しています。ナレッジは Git 内のプレーンな Markdown で、履歴、差分、ロールバックを利用できます。問題は、複数のエージェントが触れるようになると、単独のファイルでは対応できないことです。

  • 2 つのエージェントが互いの変更を上書きします。 同じファイルへの並行書き込みを直列化する仕組みがありません。Brainy の書き込みでは楽観的同時実行制御(expected_git_commit)とサーバー側の書き込みロックを使用します。コミットできるのは書き込み元のうち 1 つだけで、それ以外には Conflict が返され、再読み込みが必要になります。編集が失われることはありません。
  • タスクを引き継げません。 ファイルに TODO を列挙することはできますが、2 つのエージェントが同じタスクを取得するのを防ぐことはできません。Brainy のタスクではアトミックな取得(UPDATE ... WHERE status='READY'、1 行)を使います。1 つのエージェントだけが取得に成功し、それ以外には競合が返され、次に進みます。
  • 領域ごとの権限がありません。 ファイルへのアクセスは全か無かです。Brainy にはスペースごとの ACL を設定できるスペースがあり、エージェントには許可した領域のみを読み書きさせることができます。
  • 承認ステップがありません。 エージェントが信頼できる唯一の情報源に直接書き込む代わりに、人間が承認する変更を提案できます(ウェブ UI または Telegram)。
  • git blame だけでは「誰が何を変更したか」がわかりません。 タスク状態の読み取り、取得、書き込み、却下など、すべてのアクションが、DB トリガーによって強制される追記専用の監査ログに記録されます。

上記 2 つの保証は、並行処理のテスト(tests/test_concurrency.py)で検証されています。1 つのタスクを 20 個のスレッドが同時に処理しようとすると、成功は 1 件、競合は 19 件となります。同じファイルに 20 個のスレッドが書き込む場合も、コミットは 1 件、競合は 19 件となり、リポジトリはクリーンな状態に保たれます。

Brainy はどのように異なるのですか?

多くの人がよく話題にするツールとの、誠実な比較です。Beads は Brainy の タスク 側に最も近く、Central Brain は ナレッジ 側に最も近いものの、どちらも完全に一致するものではありません。情報は各プロジェクトのドキュメント(下記リンク)に基づいています。記載のない項目は、推測せずにその旨を示しています。

BrainyBeads 1Central Brain 2共有ノートファイル
概要ナレッジベース + タスクキューAI エージェント向けの課題/タスクトラッカーAI メモリレイヤーリポジトリ内の Markdown
ナレッジの保存先Git 内の Markdown—(課題トラッカー)プレーンファイル+ローカルのベクトルインデックスGit 内の Markdown
アトミックな取得機能を備えたタスクキュー✅✅ドキュメントに記載なし❌
領域ごとの権限(ACL)✅ スペース/ロール❌❌❌
追記専用の監査ログ✅(DB で強制)一部対応(Git/DB の履歴)❌git blame のみ
書き込みに対する人間の承認✅(Web/Telegram)❌❌❌
MCP サーバー✅✅✅❌
マルチエージェントの同時実行制御✅ 取得+書き込みロック✅ 取得+同時書き込みドキュメントに記載なし❌
依存関係なし(標準ライブラリ+SQLite)Dolt(Go)を同梱埋め込みモデルを同梱該当なし
セルフホスト可能✅✅✅(クラウドは任意)✅
ライセンスAGPL-3.0(+商用)MITプロプライエタリ該当なし

機能

領域利用できる機能
ナレッジlist_documents、get_document、search_knowledge、write_document(Git コミットによる楽観的同時実行制御)、append_document、propose_write
タスクcreate_task、claim_task、renew_claim、complete_task、fail_task、release_task、依存関係、優先度、レビュー/承認/却下
リソースの取得claim_resource、renew_resource、release_resource、list_resource_claims — アトミックなリースを使って任意のリソース(スペースごとの自由形式のキー。例:ファイルパスや領域)を予約します。タスクの取得と同じ方式です
アクセススペース(テナント/領域)、ロール ADMIN/EDITOR/AGENT/READER、スペースごとの ACL、サービストークン、OAuth 2.1(Claude/ChatGPT のリモートコネクター用)
運用Web 管理 UI、監査ログ、エージェントレジストリ+ディスパッチャーフレームワーク、バックアップおよび検証済み復元用スクリプト

クイックスタート(Docker)

1 つのコマンドで試せます。クローンもセットアップも不要です。MCP stdio サーバーとして、一時的なデータベースとサンプルのナレッジを使う使い捨てデモを実行します(終了時に削除されます)。

docker run --rm -i ghcr.io/memokar/brainy:latest --demo

本番環境にインストールする場合は、サーバーを実行してください(リリースごとに公開されるビルド済みイメージを使用します)。

docker run -d --name brainy -p 127.0.0.1:8765:8765 -v brainy-data:/data ghcr.io/memokar/brainy:latest
docker logs brainy   # prints your one-time ADMIN token on first start

または、Compose を使って自分でビルドできます。

git clone https://github.com/memokar/brainy.git
cd brainy
docker compose up -d
docker compose logs brainy   # prints your one-time ADMIN token on first start

Brainy は http://127.0.0.1:8765 で待ち受けを開始します(MCP エンドポイント:/mcp、管理 UI:/admin — トークンでログインしてください)。リモート AI コネクターを使う場合は HTTPS の背後に配置し(deploy/nginx-brainy.conf.example を参照)、BRAINY_PUBLIC_BASE_URL を設定してください。

クイックスタート(Linux のベアメタル、Python ≥ 3.10)

export BRAINY_DB_PATH=$PWD/data/brainy.db
export BRAINY_KNOWLEDGE_ROOT=$PWD/data/knowledge
export BRAINY_WEB_SESSION_KEY=$PWD/data/web_session.key

cp -r examples/knowledge "$BRAINY_KNOWLEDGE_ROOT"
git -C "$BRAINY_KNOWLEDGE_ROOT" init -q && git -C "$BRAINY_KNOWLEDGE_ROOT" add -A \
  && git -C "$BRAINY_KNOWLEDGE_ROOT" commit -qm "initial knowledge"

python3 scripts/bootstrap.py "$BRAINY_DB_PATH" --with-token   # prints ADMIN token once
python3 scripts/init_prod_db.py "$BRAINY_DB_PATH"             # seeds default spaces
python3 scripts/serve.py

AI を接続する

  • Claude Code:
    claude mcp add --transport http brainy http://127.0.0.1:8765/mcp --header "Authorization: Bearer <token>"
    
  • ローカルの stdio クライアント(例:Claude Desktop): Brainy をサブプロセスとして実行します。
    {"mcpServers": {"brainy": {"command": "python3", "args": ["/opt/brainy/scripts/stdio.py"],
      "env": {"BRAINY_DB_PATH": "/var/lib/brainy/brainy.db",
              "BRAINY_KNOWLEDGE_ROOT": "/opt/brainy-knowledge", "BRAINY_TOKEN": "<token>"}}}}
    
    セットアップなしで試せます:python3 scripts/stdio.py --demo(一時データを使用し、終了時に削除されます)。
  • カスタムヘッダーを使用するその他の MCP クライアント: エンドポイントは https://<your-host>/mcp、ヘッダーは Authorization: Bearer <service token> です。
  • Claude.ai/ChatGPT のリモートコネクター: OAuth 2.1 フローを使用します(/.well-known/oauth-authorization-server でディスカバリー)。BRAINY_PUBLIC_BASE_URL に HTTPS URL を設定してください。

Brainy は、公式 MCP Registry に io.github.memokar/brainy として登録されています。

各 AI に専用のプリンシパル(例:claude、chatgpt)を割り当て、ロールを AGENT に設定し、必要なスペースだけを許可してください。すべての操作は、その名前で監査ログに記録されます。

例:1つのリポジトリで2つのコーディングエージェントを使う

同じリポジトリで作業する2つのエージェントは、互いのファイルに手を加えてしまうことがあります。リソースの予約を使うと、それぞれがこれから作業する領域を予約できます。領域ごとに自由形式のキーを指定し、予約が解放されるかリースが期限切れになるまで、もう一方は作業を控えます。

// Agent A, before editing the auth code:
claim_resource   { "space": "shared", "resource_key": "repo:app/src/auth/**", "lease_seconds": 1800 }
// -> { "claim_token": "…", "lease_until": "…" }   A now owns that area

// Agent B, about to touch the same area:
claim_resource   { "space": "shared", "resource_key": "repo:app/src/auth/**" }
// -> Conflict: already claimed  → B picks a different area (e.g. "repo:app/src/api/**")

renew_resource   { "space": "shared", "resource_key": "repo:app/src/auth/**", "claim_token": "…" }   // A keeps working
release_resource { "space": "shared", "resource_key": "repo:app/src/auth/**", "claim_token": "…" }   // A done → free again
list_resource_claims { "space": "shared" }   // who holds what right now

タスクの予約と同じ保証が適用されます。一度に予約できるのは1つのエージェントだけで、期限切れのリースは自動的に解放されます(tests/test_resources.pyを参照)。リソースの予約では、タスクと同じ権限/スコープ(can_claim_tasks / brainy:tasks:write)を使用するため、タスクを予約できるエージェントはリソースも予約できます。

設定

すべての設定は環境変数から取得します。.env.exampleを参照してください。 シークレット(トークン、キー)がリポジトリやナレッジベースに保存されることはありません。

拡張機能

コアには、ワーカープラグインのインターフェースと決定論的なMockWorkerが含まれています。 エージェントがタスクを自律的に実行できるようにする実際のワーカー(Claude Code、Codexなど)は、 BRAINY_WORKER_PLUGINSを通じて読み込む別個の拡張機能です。docs/extensions.mdを参照してください。

テストの実行

for t in tests/test_*.py; do python3 "$t" || exit 1; done

ステータスとロードマップ

Brainyは作者の本番環境で稼働しています。現在の制限事項は次のとおりです。

  • コードコメントは一部まだドイツ語です。ユーザー向けのテキストはすべて英語です。
  • シングルノード設計(SQLite)です。実際に複数のライターによる負荷が発生した場合にのみ、PostgreSQLを導入します。

ライセンス

Copyright (C) 2026 Mehmet Karakolcu

Brainyはデュアルライセンスです。

  • オープンソース: GNU AGPL-3.0。企業を含むすべての人が無料で利用できます。ただし、Brainyを改変して他者に提供する場合(ネットワークサービスとしての提供も含む)、AGPLに基づいて変更内容を公開する必要があります。
  • 商用ライセンス: AGPLの義務なしでBrainyを使用または組み込みたい企業向けです。 COMMERCIAL.mdを参照してください。

コントリビューションには、コントリビューターライセンス契約への同意が必要です。

Footnotes

  1. Beads — https://github.com/steveyegge/beads(MIT、Go。課題をバージョン管理対応の SQL データベースである Dolt に保存します。以前のバージョンでは SQLite+JSONL を使用していました)。 ↩

  2. NeuroAIgent による Central Brain — https://neuroaigent.ai(ローカル優先の AI メモリ、Windows+Apple シリコン搭載 Mac、MCP 連携。執筆時点のサイト掲載価格:個人向けは月額 $12、4 ライセンスは月額 $35)。 ↩

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。