mcpField
P
Personal Brain

Personal Brain

ローカル
zhang-liz.github.ioメモリ・ナレッジ15 日前に更新

Personal Brain について

Personal Brainは、LinkedInのつながりをFalkorDBのグラフに取り込み、エージェントが検索や面会記録に使えるMCPサーバーです。オフライン対応の2D・3Dネットワークビューアーも備えています。

主な機能

  1. 01LinkedInデータからグラフを構築
  2. 02面会、メモ、フォローアップを記録
  3. 03名前やトピックで連絡先を検索
  4. 04読み取り専用のCypherクエリを実行
  5. 05オフラインで2D・3D表示

活用シーン

  1. 01紹介を頼める人を探す
  2. 02イベントで会った人や話題を思い出す
  3. 03面会を記録して次の対応を管理

MCP 対応

MCPクライアントにremember、find、askツールを提供し、面会記録の保存、ネットワーク検索、制限付きの読み取り専用Cypherクエリに対応します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"zhang-liz-personal-brain": {
"command": "uvx",
"args": [
"personal-brain"
],
"env": {
"FALKORDB_URL": "<FALKORDB_URL>",
"PB_GRAPH": "<PB_GRAPH>"
}
}
}
}
起動コマンドuvx personal-brain
設定が必要な環境変数
FALKORDB_URLシークレットYour FalkorDB Cloud URL. Leave it empty to use local FalkorDB on localhost:6379.
PB_GRAPHThe name of the graph. The default is network.

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

パッケージ
pypipersonal-brain0.3.4

ツール

3

掲載時のツール一覧 · 4 日前に更新

パラメーター型必須説明
onstringいいえ
duestringいいえ
namestringいいえ
notestringいいえ
emailstringいいえ
eventstringいいえ
titlestringいいえ
companystringいいえ
locationstringいいえ
follow_upstringいいえ
new_eventbooleanいいえ
person_idstringいいえ
ended_jobsanyいいえ
new_personbooleanいいえ
follow_up_donestringいいえ

詳細

Personal Brain

AI エージェントに、あなたの仕事上のつながりを記憶させる MCP サーバーです。

PyPI Python Tests License: MIT

Personal Brain は、LinkedIn のつながりを FalkorDB のグラフに読み込みます。Claude Code やその他の MCP クライアントから、知り合いを調べたり、誰が誰を紹介できるかを探したり、会った人を記憶したりできます。3D ビューアーでは、グラフを銀河のように表示します。

claude mcp add personal-brain -- uvx personal-brain mcp

このコマンドを使うには、ネットワークのデータが入ったデータベースが必要です。クイックスタートをご覧ください。

Personal Brain のデモ:19k ノードの銀河に質問する

ライブデモを試す。デモ内のつながりはすべて架空のもので、会社名やイベント名もサンプルです。

イベントに参加するたびに人と出会います。2週間もすれば、その人が誰だったか、何に取り組んでいるか、誰が誰を紹介できるかを忘れてしまいます。これからは、エージェントがあなたに代わって記憶します。エージェントは何も削除できません。削除できるのはあなただけです。personal-brain forget を使ってください。

すべての処理はあなたのノートパソコン上で動作します。

クイックスタート:5分でサンプルネットワークを作成

uv と FalkorDB が必要です。uvx が適切な Python をダウンロードします。

架空のサンプルネットワークには、実際の LinkedIn エクスポートと同じファイル形式で、創作した人物、スタートアップ、イベントが241件含まれています。自分のデータをダウンロードする前に、すべての機能を試せます。

1. FalkorDB を起動します。 Docker で実行するか、FalkorDB Cloudをご覧ください。

docker run -p 6379:6379 -p 3000:3000 -v falkordb_data:/var/lib/falkordb/data -it --rm falkordb/falkordb:v4.22.2

2. サンプルを読み込み、サーバーを Claude Code に追加します。

uvx personal-brain load --sample
claude mcp add personal-brain -- uvx personal-brain mcp

次のように試してみてください。

  • 「ネットワーク内で Kestrel Graph に勤めているのは誰ですか?」
  • 「エージェントのメモリについて、誰と話しましたか?」
  • 「資金調達が十分なスタートアップの人を紹介してくれそうなのは誰ですか?」
  • 「Graph & RAG Meetup で Oskar Mensah に会いました。彼はエージェントのメモリを開発しています。」(Oskar Mensah は2人いるため、どちらかを尋ねられます。)

その他の MCP クライアント: サーバーは stdio 経由で動作します。ほとんどのクライアントでは、次の設定を使用します。

{
  "mcpServers": {
    "personal-brain": { "command": "uvx", "args": ["personal-brain", "mcp"] }
  }
}
FalkorDB Cloud

無料の FalkorDB Cloud インスタンスは Docker なしで利用できます。URL をサーバーに渡し、load と export に --cloud を追加します。

export FALKORDB_URL='falkors://user:password@host:port'
uvx personal-brain load --sample --cloud
claude mcp add personal-brain -e FALKORDB_URL="$FALKORDB_URL" -- uvx personal-brain mcp

または、FALKORDB_URL=... を ~/.personal-brain/.env に設定します。

MCP ツール

uvx personal-brain mcp を実行すると、エージェントは1つのグラフ上で3つのツールを利用できます。

ツール機能
remember会った人、勤務先、会った場所、役職、都市、メールアドレスを保存します。事実を訂正する場合は、その旨を伝えてください。古い値が置き換えられます。会社名やイベント名が、既知のものと1文字違いの場合は何も保存せず、エージェントが確認します。フォローアップも管理します。「金曜日までにJonasに資料を送るようリマインドして」と伝えると、完了したと伝えるまで未完了のままです。「Kestrel」と「Kestrel Inc.」は同じ会社として扱われ、イベント名のタイプミスでも同じイベントが見つかります。名前をグラフ内の既存の人物と照合します。対象の人物を特定できない場合は、何も保存せず確認します。新しい会社を登録すると、以前の仕事が終了し、職歴に残ります。その人に現在の仕事が複数ある場合は、どれが終了したのか確認します。新しい仕事がなく、誰かが仕事を辞めたことも記録します。同じ呼び出しを2回行っても、会合は1件だけ保存されます。今日ではない場合は、会った日を伝えてください。
find人物、会社、イベントを名前で検索します。どの文字体系でも、タイプミスやアクセント記号の欠落があっても見つけます。about を指定すると、メモ内の言葉、トピック、スキル、見出しをもとに人物を検索します。たとえば「エージェントのメモリーについて話したのは誰?」のように尋ねると、一致した理由も示します。
ask読み取り専用の Cypher クエリを実行します(FalkorDB は書き込みを拒否します)。制限時間は5秒、結果は最大50行、最大40,000文字です。データをインターネットに送信する可能性がある LOAD CSV は拒否します。ツールの説明にはスキーマが含まれています。

どのツールも削除は行わないため、LinkedIn の見出しに隠されたテキストによってエージェントが何かを削除することはありません。ただし、エージェントが偽のメモを保存する可能性はあります。そのため、各ツールではそのようなテキストをデータとして扱うようエージェントに指示しています。また、personal-brain notes を実行すると、保存された内容を新しい順に確認できます。どのような指示でも、これを完全に防ぐことはできません。削除するには、自分でコマンドを実行してください。--yes を追加しない限り、実行前に確認を求めます。ビューアーのファイルがある場合は、それらも更新されます。

uvx personal-brain forget note <id>         # one note and everything it added. remember's reply gives this command
uvx personal-brain forget person "Name"     # a person and every note about them. They stay out of future rebuilds
uvx personal-brain forget all-notes         # every note and everything they added, to clear a live demo

書き込み内容はすべて Note ノードにひも付けられるため、各事実がどのメモに基づいているかを追跡できます。新しい LinkedIn エクスポートを使って personal-brain load を再実行しても、メモとメモから追加された内容は保持されます。新しいインポートに同じ事実が含まれている場合は、インポート内容が優先されます。また、保存した人物がインポートにも含まれている場合は、1人の人物として統合されます。--force を指定すると、メモが削除されます。load --sample は実際のネットワークを置き換える前に確認を求め、--yes を指定すると確認を省略します。PB_GRAPH でグラフを選択します(デフォルトは network です)。FalkorDB が起動していなくてもサーバーは起動し、各ツールが起動方法を案内します。macOS と Linux で動作します。Windows はサポートされていません。

新しい LinkedIn エクスポートを読み込むたびに、変更点も通知されます。personal-brain load は前回の読み込み以降に転職した人を表示し、エージェントに後から尋ねることもできます。エクスポートにメッセージの日付が含まれている場合、エージェントは「連絡が途絶えたのは誰?」という質問に答えられます。読み取るのは日付だけで、メッセージの内容は読み取りません。personal-brain followups を実行すると、未完了のタスクが一覧表示されます。

3D ビューアー

personal-brain export を実行し、続けて personal-brain view を実行して、http://127.0.0.1:8765 を開きます。three.js が含まれているため、オフラインで動作します。

  • WebGL でネットワーク全体を銀河として表示します(19k ノード、117k エッジでテスト済み)。2D/3D を切り替えられます。
  • タイムラプス:イベントが次々と表示されるなか、つながりが一つずつ増えていく様子を確認できます。
  • グラフに質問:質問が自動で入力され、続いて Cypher クエリが表示され、最後に経路に沿って光が走り、回答が強調表示されます。質問例:
    • 過去1年間のイベントで会った創業者は誰ですか?
    • 私のネットワークで大手テック企業に勤めている人は誰ですか?
    • 資金調達が順調なスタートアップの人を紹介してくれそうなのは誰ですか?
    • AI イベントを開催しているスタートアップはどこで、そこに知り合いはいますか?
    • エージェントとメモリーに関するポッドキャストに招待すべき人は誰ですか?
    • 知り合いを通じて登壇できる、今後のエージェント関連イベントはどれですか?
  • 記憶する:「AI Engineer Summit で Supabase の Maya に会った。開発者向けイベントを運営している」と入力すると、FalkorDB にリアルタイムで書き込まれ、銀河に表示されます。
  • ライブビュー:エージェントの作業中に personal-brain view を開いたままにします。エージェントが調べたり保存したりした人が、銀河で光ります。
  • デモモード:デモ全体をハンズフリーで実行します(D を押してください)。

仕組み

LinkedIn data export ──┐
                       ├─> load_graph.py ──> FalkorDB ──┬─> mcp_server.py ──> your agent
data/enriched/ ────────┘   (graph "network")            ├─> export_graph.py ──> layout_graph.py ──> viewer
(optional)                                              ├─> export_stories.py ──> viewer
                                                        └─> server.py (live "Remember" API) ──> viewer
  1. LinkedIn のエクスポートデータには、つながり(つながった日付を含む)、メッセージ(本文は使わず、件数のみを使用)、投稿、職歴、学歴が含まれます。
  2. data/enriched/ の任意ファイルを使うと、各つながりの詳しい職歴、学歴、スキル、企業の資金調達状況、今後のイベントを追加できます。これらのファイルには sample_data/enriched/ の JSON 形式を使用します。このリポジトリにはデータを収集するツールはありませんが、これらのファイルがなくてもすべて動作します。
  3. load_graph.py はグラフを構築し、以下を推定します。
    • 同じ企業で働いた、または同じ学校に同時期に3か月以上在籍した2人のつながり(大規模校では、同じ入学年の場合のみ)、職歴がない場合に現在同じ企業で働いている人同士、または同じグループチャットに参加している人同士を、KNOWS でつなぎます。
    • Event ノード:5人以上のつながりを追加した日は、イベントだった可能性があります。my_brain.json で名前を付けてください。
    • 見出しやスキルから、興味のある Topic(AI エージェント、エージェントメモリー、ナレッジグラフ、創業者、投資家、ポッドキャストなど)を抽出します。
    • 拡張ファイルがある場合のみ:
      • 職種名と説明から、テクノロジーごとの経験年数を算出します。
      • well_funded スタートアップ:非公開企業で、事業を継続中、従業員数が最大5,000人で、シリーズラウンドを実施済み、または投資家が8人以上の企業です。
      • 各プロフィールの所在地から、都市圏レベルで City を判定します(「Berlin Metropolitan Area」と「Berlin」は同じ都市、「Palo Alto」と「San Jose」は「SF Bay Area」です)。
      • 今後の各イベントの主催者:あなたのつながり(LinkedIn で一致)である主催者、または知り合いがいる企業(主催者がその企業、主催者がその企業で働いている、あるいはタイトルに「Notion x Clover」のように企業名が含まれる場合)です。
  4. export_graph.py + layout_graph.py はグラフを JSON にエクスポートし、2D レイアウト(igraph DrL)を計算します。3D では、ノードの種類ごとに別のレイヤーに配置されます。
  5. export_stories.py は、FalkorDB 上で「グラフに質問」の Cypher クエリを実行し、ビューアー用に回答と処理時間を保存します。
グラフのスキーマ
ノードエッジ
Me、Person、Company、School、Skill、Topic、Event、Investor、City、Note(Me)-[:CONNECTED]->(Person)、(Person)-[:WORKED_AT {title, start, end, current}]->(Company)、(Person)-[:STUDIED_AT]->(School)、(Person)-[:HAS_SKILL]->(Skill)、(Person)-[:HAS_EXPERIENCE {years}]->(Skill)、(Person)-[:INTO]->(Topic)、(Person)-[:KNOWS {via, place}]-(Person)、(Me)-[:ATTENDED]->(Event)、(Person)-[:MET_AT]->(Event)、(Company)-[:FUNDED_BY {lead, round}]->(Investor)、(Person)-[:LIVES_IN]->(City)、(Event {upcoming})-[:HOSTED_BY {via}]->(Person or Company)、(Event)-[:ABOUT]->(Topic)、(Event)-[:HELD_IN]->(City)、(Me)-[:MET]->(Person)、(Me)-[:WROTE]->(Note)-[:ABOUT]->(Person)(「記憶する」から)

独自に構築する

1. LinkedIn のデータを取得します。 LinkedIn > Settings > Data privacy > Get a copy of your data。 次の 2 つから選べます。

  • Connections only:通常、約 10 分で準備できます。人物、現在の勤務先と役職、つながった日付を取得できます。グラフ、イベント、エージェントツールにはこれで十分です。
  • Download larger data archive:準備には約 1 日かかります。メッセージ(使用されるのは件数のみ)、投稿、職歴、学歴が追加されます。

~/.personal-brain に解凍します(フォルダー名に LinkedInDataExport が含まれます)。複数ある場合は、load が最新のものを読み込みます。personal-brain --help でデータフォルダーを確認できます。別のフォルダーを使うには、PB_HOME を設定します。

空の状態から始めることもできます。 インポートを省略します。MCP サーバーは空のグラフにあなたを作成し、あなたが会った人をエージェントに伝えるたびに、グラフが成長していきます。

任意:my_brain.example.json を ~/.personal-brain/my_brain.json にコピーすると、イベントに名前を付けたり、会社を除外したりできます。

2. グラフとビューアーデータを構築します。 FalkorDB Cloud を使う場合は、両方のコマンドに --cloud を追加します。

uvx personal-brain load
uvx personal-brain export

3. 開きます。

uvx personal-brain view

http://127.0.0.1:8765 を開きます。キー操作:2 / 3 でビューを切り替え、T でタイムラプス、B でビッグバン、D でデモ、Esc でリセットします。

代わりに FalkorDB Browser で探索する場合は、docs/demo_queries.cypher を参照してください。

コードに取り組む

Python 3.10 以降、uv、Docker が必要です。クローンでは、クローン自体がデータフォルダーとなり、Claude Code はその中のどのフォルダーからでも .mcp.json を読み込みます。

git clone https://github.com/zhang-liz/personal-brain && cd personal-brain
python3 -m venv .venv && .venv/bin/pip install -e ".[test]"
docker run -p 6379:6379 -p 3000:3000 -v falkordb_data:/var/lib/falkordb/data -it --rm falkordb/falkordb:v4.22.2

その後、別のターミナルでテストを実行します。テストでは使い捨てのグラフを使用します。

PATH="$PWD/.venv/bin:$PATH" .venv/bin/python -m pytest          # everything, on local FalkorDB
.venv/bin/python tests/test_memory.py --cloud                    # the memory tools on FALKORDB_URL

データは自分のものです

  • データはパッケージの外にある ~/.personal-brain に保管されます。このフォルダーを開けるのはあなただけです。クローンでは、エクスポートデータ、data/、.env、my_brain.json は .gitignore に含まれています。絶対にコミットしないでください。
  • メッセージの本文がグラフに読み込まれることはありません。各人とやり取りしたメッセージの件数と、最後のメッセージの日付のみが読み込まれます。
  • データフォルダー内の data/viewer/graph.json には実名が含まれています。そのファイルではなく、スクリーンショットを共有してください。
  • ローカルサーバーは 127.0.0.1 のみで待ち受け、data/viewer/ のみを提供します。

ファイル

パス内容
src/personal_brain/cli.pypersonal-brain コマンド
src/personal_brain/paths.pyデータフォルダーの場所
src/personal_brain/load_graph.pyFalkorDB グラフと推論されたすべてのリンクを構築します
src/personal_brain/export_graph.pyすべてのノードとエッジを data/viewer/graph.json にエクスポートします
src/personal_brain/layout_graph.pyレイアウトを事前計算します
src/personal_brain/export_stories.py「グラフに質問する」の質問とその Cypher
src/personal_brain/server.pyビューアーとライブ Remember API を、ビューアー自身のページにのみ提供します
src/personal_brain/memory.pyメモリーそのものです。remember、find、ask、forget を扱います(MCP サーバー、ビューアー、forget コマンドで使用)
src/personal_brain/mcp_server.pyClaude Code やその他のエージェント向けの MCP サーバー
src/personal_brain/forget.pypersonal-brain forget コマンド
src/personal_brain/notes.pypersonal-brain notes コマンド
src/personal_brain/notes_backup.py再構築後もノートを保持します
src/personal_brain/job_changes.py読み込みのたびに、転職した人を報告します
src/personal_brain/followups.pypersonal-brain followups コマンド
src/personal_brain/activity.pyエージェントが直前に行ったことをビューアーに伝えます
src/personal_brain/companies.py2つの会社名が同じ会社を指すかどうかを判定します
.mcp.jsonクローン内で MCP サーバーを起動する方法を Claude Code に伝えます
tests/使い捨てグラフを使用して、メモリーツール、MCP サーバー、ビルド済みパッケージをエンドツーエンドでテストします
src/personal_brain/sample_data/架空のサンプルネットワーク
scripts/make_sample_data.pysample_data/ を生成します
src/personal_brain/viewer/index.htmlWebGL ビューアー(three.js r170、MIT、同梱)
docs/demo_queries.cypherFalkorDB Browser に貼り付けるクエリ

これは初期段階のプロジェクトです。テストと CI はありますが、1.0 より前にコマンドやツールが変更される可能性があります。

貢献

CONTRIBUTING.md を参照してください。セキュリティ上の問題を報告するには、SECURITY.md を参照してください。

ライセンス

MIT ライセンスです。LICENSE を参照してください。src/personal_brain/viewer/vendor/ 内の three.js も MIT ライセンスです(独自の LICENSE ファイルがあります)。

コメント

MCP は初めてですか?

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

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