personal-context-mcp
🧠 personal-context-mcp
把「你是谁」存一次,让每个 AI 都记得你。 Store who you are once — let every AI remember you.
▲ 接入后对任意 AI 说「调用 who_am_i」,它一次就读到你完整的上下文
🇨🇳 中文
✨ 这是什么
换一个新 AI、新开一个聊天框,你是不是又得从头交代一遍「我是谁、我喜欢什么风格、我做过什么」?
personal-context-mcp 把这些存成 markdown,通过 MCP(Model Context Protocol) 暴露成一组工具。任何支持 MCP 的 AI(Claude Code、Claude Desktop、Cursor…)接上后,调用一次 who_am_i 就「认识你」,不用再自我介绍。
📦 数据一份,插头随时加 · ☁️ 放 GitHub 永久免费 · 🔌 本地 stdio 零托管 · 🔐 分层可见
⏱️ 30 秒看效果
同样一句「帮我改简历」,接入前后 AI 的反应完全不同:
❌ 没有它(每次都从头认识你)
你 :帮我改简历
AI :好的,先了解一下你——你是做什么方向的?
常用哪些技术栈?想投什么岗位?偏好什么写作风格?
你 :(又要把背景、技术栈、风格偏好从头敲一遍……)✅ 有了它(一句话,AI 秒懂你是谁)
你 :先调用 who_am_i 了解我,然后帮我改简历
AI :〔调用 who_am_i〕
好的,已了解你的背景(LLM 预训练 / 长文本 / 分布式)、
偏好(中文、先定风格再动手)和写作习惯。
基于这些,我把「书籍数据 SFT」项目改写得更突出你的贡献……差别就在于:上下文只需存一次,之后每个新 AI、每个新对话都直接读,不用再自我介绍。
💡 核心理念
说明 | |
📦 数据与服务分离 | 你的资料是 |
☁️ 永久留存、不吃算力 | 跟 GPU 无关。数据放 GitHub 永久免费,server 本地跑、断网可用。哪天没有任何服务器,光靠这个 git 仓库你依然拥有全部资料。 |
🔐 分层可见(tier) |
|
📁 目录结构
personal-context-mcp/
├── server.py # 🔌 MCP server(stdio)
├── context/ # ★ 数据层:你的资料,改这里
│ ├── style.md # 🎨 风格习惯
│ ├── preferences.md # ⚙️ 偏好设置
│ ├── skills.md # 🧰 用过的 skill
│ ├── background.md # 📖 人生背景(可公开)
│ └── private.md # 🔒 私密信息(gitignore,仅本地 tier=private 可见)
├── ingest/import_file.py # 📄 简历/文件 → 纯文本(供 AI 解析)
└── pyproject.toml🚀 快速开始
# 1) 装依赖(mcp / pyyaml / pypdf / python-docx)
cd personal-context-mcp
uv sync
# 2) 本地可视化调试(打开 MCP Inspector,逐个点工具试)
uv run mcp dev server.py
# 3) 接入 Claude Code / Cursor
uv run mcp install server.py --name personal-context或手动在 AI 的 MCP 配置里加一段(注意换成绝对路径):
{
"mcpServers": {
"personal-context": {
"command": "uv",
"args": ["--directory", "/绝对路径/personal-context-mcp", "run", "python", "server.py"]
}
}
}接入后,对 AI 说一句 「调用 who_am_i 了解我」 就行 ✅
🔄 它是怎么工作的
flowchart LR
A["📝 context/*.md<br/>你的资料"] --> B["🔌 MCP Server<br/>server.py (stdio)"]
B -->|"who_am_i / search…"| C["🤖 任意 AI<br/>Claude / Cursor…"]
C -->|"save_context 写回"| A
D["📄 简历 / 文件"] -->|"extract_file"| C🧰 提供的工具
工具 | 作用 |
🙋 | 一次性返回该 tier 下全部可见内容,换新 AI 时用它「一键认识你」 |
📋 | 列出所有板块 |
📖 | 读某个板块全文 |
🔍 | 关键词搜索 |
💾 | 写入/更新板块(AI 整理完经历后存回来) |
📄 | 抽取 pdf/docx/txt/md 文本,供 AI 解析简历 |
📄 上传简历 / 文件,自动整理进知识库
不用写死解析逻辑 —— 让 AI 来做:
让 AI
extract_file("我的简历.pdf")拿到纯文本;AI 解析、优化成结构化内容;
AI
save_context(slug="background", …)写回context/。
命令行也能单独抽文本:
uv run python ingest/import_file.py 我的简历.pdf
🧪 测试
核心逻辑(tier 权限过滤、搜索、写回、非法 slug 拦截)都有单测:
uv run pytest # 或 .venv/bin/python -m pytest🔐 分层可见(tier)
每个 .md 头部的 tier 字段决定谁能看到:
public ⊂ recruiter ⊂ friend ⊂ private
陌生人 招聘方 朋友 只有自己调用时传 viewer_tier,server 只返回该层级及以下的内容。私密信息(如内网路径、身份细节)建议单独放 context/private.md 并加进 .gitignore,这样它永不进入 GitHub,只在本地 tier=private 时可见。
☁️ 留存到 GitHub
cd personal-context-mcp
git add . && git commit -m "update my context"
git push💡
context/private.md已在.gitignore里;其余板块默认可公开。若想全部私有,直接用私有仓库即可。
🇬🇧 English
✨ What is this
Every time you switch to a new AI or open a fresh chat, you re-explain who you are, what style you like, what you've built. 😮💨
personal-context-mcp stores all of that as markdown and exposes it through the Model Context Protocol (MCP). Any MCP-capable AI (Claude Code, Claude Desktop, Cursor…) plugs in, calls who_am_i once, and instantly knows you — no more re-onboarding.
📦 One data source, plug in anytime · ☁️ Free forever on GitHub · 🔌 Local stdio, zero hosting · 🔐 Tiered visibility
⏱️ See it in 30 seconds
Same prompt — "help me polish my resume" — a world of difference before vs. after:
❌ Without it (re-onboarding every time)
You : Help me polish my resume.
AI : Sure — first, what field are you in? Which tech stack do you
use? What roles are you targeting? Any writing-style preferences?
You : (typing out my background, stack and style preferences… again.)✅ With it (one line, and the AI just knows you)
You : Call who_am_i to learn about me, then polish my resume.
AI : 〔calls who_am_i〕
Got it — I know your background (LLM pretraining / long-context /
distributed), your preferences and writing style. Based on that,
I've rewritten the "book-data SFT" project to highlight your impact…The point: store your context once, and every new AI and every new chat reads it directly — no more self-introductions.
💡 Core ideas
📦 Data ≠ server | Your data is plain markdown under |
☁️ Permanent, compute-free | No GPU involved. Data lives on GitHub for free; the server runs locally and works offline. Even with no server anywhere, the git repo alone keeps all your data. |
🔐 Tiered visibility |
|
📁 Layout
personal-context-mcp/
├── server.py # 🔌 MCP server (stdio)
├── context/ # ★ data layer — edit these
│ ├── style.md # 🎨 style & habits
│ ├── preferences.md # ⚙️ preferences
│ ├── skills.md # 🧰 skills used
│ ├── background.md # 📖 background (public-safe)
│ └── private.md # 🔒 private (gitignored, tier=private only)
├── ingest/import_file.py # 📄 resume/file → plain text (for the AI to parse)
└── pyproject.toml🚀 Quick start
# 1) install deps
cd personal-context-mcp
uv sync
# 2) local visual debugging (MCP Inspector)
uv run mcp dev server.py
# 3) install into Claude Code / Cursor
uv run mcp install server.py --name personal-contextOr add this to your AI's MCP config (use an absolute path):
{
"mcpServers": {
"personal-context": {
"command": "uv",
"args": ["--directory", "/abs/path/personal-context-mcp", "run", "python", "server.py"]
}
}
}Then just tell the AI: "Call who_am_i to learn about me." ✅
🧰 Tools
Tool | Purpose |
🙋 | Return everything visible at that tier in one shot — "know me instantly" |
📋 | List all sections |
📖 | Read one section |
🔍 | Keyword search |
💾 | Write/update a section |
📄 | Extract text from pdf/docx/txt/md for the AI to parse |
📄 Import a resume, let the AI organize it
No hard-coded parsing — let the AI do it:
AI calls
extract_file("resume.pdf")to get plain text;AI parses and structures it;
AI calls
save_context(slug="background", …)to write it back.
CLI also works:
uv run python ingest/import_file.py resume.pdf
🧪 Tests
The core logic (tier filtering, search, write-back, illegal-slug rejection) is covered by unit tests:
uv run pytest # or: .venv/bin/python -m pytest🔐 Tiered visibility
The tier field in each .md front-matter controls who sees it. The server returns only content at or below the requested viewer_tier. Keep private data (internal paths, identity details) in context/private.md and gitignore it — it never reaches GitHub and shows only at local tier=private.
☁️ Persist to GitHub
git add . && git commit -m "update my context"
git pushMade with 🧠 by KrystalJin1 · MIT License
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KrystalJin1/personal-context-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server