mcpField
P
Personal Brain

Personal Brain

本地服务
zhang-liz.github.io记忆与知识14 天前更新

关于 Personal Brain

Personal Brain 是将 LinkedIn 人脉导入 FalkorDB 图数据库的 MCP 服务,供 Agent 查询关系并记录新遇见的人。它还提供可离线查看的 2D/3D 网络可视化。

主要功能

  1. 01导入 LinkedIn 人脉构建图谱
  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

一个 MCP 服务,让你的 AI Agent 记住你的职业人脉。

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 个节点组成的星系回答问题

试用在线演示。其中的所有人脉都是虚构的,公司和活动也只是示例名称。

每次参加活动后,你都会认识一些人。两周后,你就会忘记他们是谁、从事什么工作,以及谁能为你引荐他人。现在,你的 Agent 可以替你记住这些信息。你的 Agent 无法删除任何内容:只有你可以使用 personal-brain forget 删除。

所有操作都在你的笔记本电脑上运行。

快速开始:5 分钟体验示例人脉网络

你需要 uv 和 FalkorDB。uvx 会为你下载合适的 Python 版本。

这个虚构的示例人脉网络包含 241 位虚构的人物、初创公司和活动,文件格式与真实的 LinkedIn 导出数据相同。下载自己的数据之前,你可以先试用所有功能。

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 工作?”
  • “我和谁聊过 Agent 记忆?”
  • “谁能为我引荐一家资金充足的初创公司的人?”
  • “我在 Graph & RAG Meetup 上认识了 Oskar Mensah。他正在开发 Agent 记忆。”(有两位 Oskar Mensah,因此系统会询问你指的是哪一位。)

**其他 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

或者,在 ~/.personal-brain/.env 中设置 FALKORDB_URL=...。

MCP 工具

uvx personal-brain mcp 会让你的 Agent 使用同一张图中的三个工具:

工具功能
remember保存你见过的人、他们的工作单位、你们见面的地点,以及他们的职位、城市和电子邮件。要更正事实,只需说明:它会替换旧值。如果某家公司或活动名称与已知名称只差一个字母,它不会保存任何内容,并会询问你。它也会保留待办事项:“提醒我周五前把演示文稿发给 Jonas”会一直保持未完成状态,直到你说已经完成。“Kestrel”和“Kestrel Inc.”会被视为同一家公司,活动名称中的拼写错误也会匹配到同一活动。它会将姓名与图中已有的人匹配。如果不确定你指的是哪个人,就不会保存任何内容,而会询问你。新增公司会结束旧工作,并将其保留在历史记录中。如果此人目前有多份工作,它会询问你要结束哪一份。它也会记录某人离职但没有新工作的情况。同一次见面即使调用两次,也只会保存一条记录。如果不是今天见面,请说明见面时间。
find按姓名查找人物、公司和活动,支持任何文字系统,也能识别拼写错误和缺失的重音符号。使用 about 时,可根据笔记中的词语、话题、技能和简介查找人物,例如“我和谁聊过 Agent 记忆?”,并说明每个人符合条件的原因。
ask执行只读 Cypher 查询(FalkorDB 会拒绝写入),限制为 5 秒,最多返回 50 行和 40,000 个字符。它会拒绝 LOAD CSV,以免数据被发送到互联网。工具描述中包含架构。

没有任何工具能删除内容,因此,即使 LinkedIn 简介中藏有文本,也无法让你的 Agent 删除任何内容。不过,这仍可能导致 Agent 保存虚假笔记,所以每个工具都会告诉 Agent 将这类文本视为数据,而 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 节点,因此你可以追溯每条事实对应的来源笔记。再次运行 personal-brain load 并导入新的 LinkedIn 导出文件时,你的笔记及其新增内容都会保留。如果新导入的内容包含相同事实,则以导入内容为准;你保存的人如果现在也出现在导入内容中,就会合并为同一个人。--force 会删除你的笔记。load --sample 会在替换真实网络前询问你,--yes 则跳过询问。PB_GRAPH 用于选择图(默认为 network)。如果 FalkorDB 未运行,服务仍会启动,并且每个工具都会说明如何启动它。它可在 macOS 和 Linux 上运行。不支持 Windows。

每次导入新的 LinkedIn 导出文件时,也会告知你发生了哪些变化。personal-brain load 会列出自上次导入以来更换工作的人,你之后也可以让 Agent 查询。如果导出文件包含消息日期,Agent 可以回答“我和谁失去了联系”。它只读取日期,不读取消息内容。personal-brain followups 会列出你仍需完成的事项。

3D 查看器

运行 personal-brain export,然后运行 personal-brain view,并打开 http://127.0.0.1:8765。它可以离线运行,因为其中包含 three.js。

  • 在 WebGL 中将整个关系网络显示为一座银河(已使用 19k 个节点和 117k 条边测试),并可切换 2D / 3D。
  • 时间回放:看着你的关系网络逐条连接、不断增长,同时弹出你的活动。
  • 向图提问:问题会自动输入,接着显示对应的 Cypher 查询,然后答案会沿着路径以光脉冲的形式亮起。示例问题:
    • 过去一年里,我在活动上见过哪些创始人?
    • 我的关系网络里有哪些人在大型科技公司工作?
    • 谁能帮我引荐资金充足的初创公司里的人?
    • 哪些初创公司会举办 AI 活动?我在那里认识谁?
    • 我应该邀请谁来参加我的 Agent 和记忆主题播客?
    • 通过我认识的人,我可以去哪些即将举行的 Agent 活动演讲?
  • 记忆:输入“在 AI Engineer Summit 认识了来自 Supabase 的 Maya,她负责开发者活动”,系统就会将其实时写入 FalkorDB,并显示在银河中。
  • 实时视图:在你的 Agent 工作时保持 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 个月,且时间重合(大型学校仅要求入学年份相同),则在两者之间建立 KNOWS;如果没有工作经历数据,则在目前就职于同一家公司的人之间建立 KNOWS;同一群聊中的人之间也会建立 KNOWS。
    • Event 节点:你在某一天新增了 5 位或更多人脉,那天可能举办过活动。请在 my_brain.json 中为活动命名。
    • 根据个人简介和技能推断 Topic 兴趣(AI Agent、Agent 记忆、知识图谱、创始人、投资者、播客等)。
    • 仅使用补充文件时:
      • 根据职位名称和描述,计算每种技术的工作年限。
      • well_funded 初创公司:非上市、仍在运营、员工人数不超过 5,000,且获得过一轮 Series 融资或有 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。 有两种选择:

  • 仅限联系人:通常约 10 分钟就能准备好。你会获得联系人、他们当前的公司和职位,以及你们建立联系的日期。这些数据足以构建关系图、活动和 Agent 工具。
  • 下载较大的数据档案:约一天后准备好。还会包含你的消息(仅使用数量)、帖子、职位和学校。

将其解压到 ~/.personal-brain(文件夹名称中包含 LinkedInDataExport)。如果有多个,load 会读取最新的那个。personal-brain --help 会显示你的数据文件夹。若要使用其他文件夹,请设置 PB_HOME。

或者从空白开始。 跳过导入。MCP 服务会在空关系图中创建你的节点,并随着你告诉 Agent 认识了谁,让关系图逐步扩展。

可选:将 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.py构建 FalkorDB 图谱及所有推断出的链接
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.py为 Claude Code 和其他 Agent 提供的 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告诉查看器你的 Agent 刚刚做了什么
src/personal_brain/companies.py判断两个公司名称是否指同一家公司
.mcp.json告诉 Claude Code 如何在克隆版本中启动 MCP 服务
tests/在临时图谱上端到端检查记忆工具、MCP 服务和构建后的软件包
src/personal_brain/sample_data/虚构的示例关系网络
scripts/make_sample_data.py写入 sample_data/
src/personal_brain/viewer/index.htmlWebGL 查看器(three.js r170,MIT,随项目附带)
docs/demo_queries.cypher可粘贴到 FalkorDB Browser 中的查询

这是一个早期项目。它有测试和 CI,但在 1.0 版本发布前,命令和工具仍可能发生变化。

贡献

请参阅 CONTRIBUTING.md。如需报告安全问题,请参阅 SECURITY.md。

许可证

MIT,详见 LICENSE。src/personal_brain/viewer/vendor/ 中的 three.js 也采用 MIT 许可证(其自身的 LICENSE 文件)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。