开发内存mcp
一个模型上下文协议(MCP)服务器,为Claude提供跨对话的持久内存,专为希望Claude记住会话之间的架构决策、失败方法和项目上下文的开发人员而构建。
专为Claude Desktop创建
______________________________________________________________________
问题
Claude是软件开发领域杰出的思维伙伴。但每一次对话都是从零开始的。在最初的几分钟里,你需要重新解释你的堆栈、你的限制以及你已经尝试过的东西。你两周前做出的决定已经过去了。你碰到的死胡同会被遗忘。你的架构背后的推理不存在。
dev-memory-mcp 通过为Claude提供一个驻留在您机器上的持久、可搜索的内存存储来解决这个问题。在会议开始时,Claude可以简要介绍一下你的项目。在会话期间,它会记录决策并自动标记死胡同。下一次会议,这种背景正在等待。
______________________________________________________________________
运作原理
服务器通过MCP向Claude公开了8个工具。Claude在对话中自然地调用这些工具——您不需要手动调用它们。
四种工具 写 记忆:
| 工具 | 它存储什么 |
|---|---|
remember_decision | 考虑了推理和备选方案的设计选择 |
log_dead_end | 失败的方法,失败的原因,以及何时值得重试 |
save_context | 项目状态快照——什么正在工作、正在进行、被阻止 |
add_question | 一个被推迟的问题或有待稍后重新讨论的未决问题 |
四种工具 阅读 从记忆中:
| 工具 | 它返回什么 |
|---|---|
get_session_brief | 一份完整的结构化总结,在会议开始时重新定位克劳德 |
recall | 自然语言查询的语义相关记录 |
resolve_question | 将未决问题标记为已回答 |
list_projects | 所有有内存记录的项目 |
所有数据都存储在本地SQLite数据库中。没有任何东西离开你的机器。
______________________________________________________________________
建筑
Claude Desktop
│
▼
server.py ← FastMCP entry point
│
├── tools.py ← Tool definitions and input validation (Pydantic)
├── db.py ← SQLite schema, CRUD, session brief aggregation
└── embeddings.py ← Local embedding generation + semantic search
│
└── all-MiniLM-L6-v2 (sentence-transformers, runs locally)
│
└── memory.db (SQLite — stores records + float32 vectors)关键设计决策
本地优先。 sentence-transformers 使用以下命令在您的计算机上生成嵌入 all-MiniLM-L6-v2 (约80MB,下载一次)。没有OpenAI API密钥。没有云。每次查询无成本。你的开发笔记永远不会离开你的电脑。
没有矢量数据库。 嵌入内容以原始形式存储 float32 字节直接存储在SQLite中。相似性搜索将项目向量加载到内存中,并使用矩阵点积进行排序(余弦相似性,因为向量是预归一化的)。这在个人层面上是正确且快速的——不 sqlite-vec需要FAISS或Chroma依赖性。
自由形式日志上的结构化记录类型。 四种特定的记录类型捕获了实际有用但实际上被遗忘的信息:决策(有推理)、死胡同(有失败原因)、上下文快照和开放式问题。
______________________________________________________________________
设置
先决条件
- Python 3.10+
- 克劳德桌面
安装
git clone https://github.com/Kurious-George/dev-memory-mcp
cd dev-memory-mcp
# Create a virtual environment (recommended)
python -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt # Windows
# or
.venv/bin/pip install -r requirements.txt # macOS/Linux有意将依赖性降至最低:
mcp
sentence-transformers
numpy
pydantic配置Claude桌面
打开Claude Desktop配置文件(设置→ 开发者→ 编辑配置)并添加:
{
"mcpServers": {
"dev-memory": {
"command": "C:/path/to/dev-memory-mcp/.venv/Scripts/python.exe",
"args": ["C:/path/to/dev-memory-mcp/server.py"]
}
}
}使用venv的Python可执行文件的完整绝对路径。保存后重新启动Claude Desktop。
验证它是否正常工作
首次使用时,Claude将下载 all-MiniLM-L6-v2 (~80MB)并在本地缓存。这种情况只发生一次。
要确认服务器已连接,请开始新的对话并询问:
“列出开发内存中的所有项目”
克劳德应该打电话来 list_projects 并做出响应(如果您还没有存储任何内容,则使用空列表)。
______________________________________________________________________
用法
你不需要让克劳德使用特定的工具。自然地说话——克劳德会在相关的时候调用适当的工具。
启动会话:
“给我一份FastRecov项目的会议简报”
在会话中期记录决策:
“请记住,我们选择Firecracker而不是QEMU用于FastRecov,因为它具有最小的攻击面和亚秒级的启动时间”
标记一条死胡同:
“记录我们尝试使用sqlite-vec进行向量存储,但由于Windows DLL加载很脆弱,我们不需要额外的依赖关系而放弃了它”
推迟提问:
“添加一个悬而未决的问题:当VM意外退出时,我们应该如何处理eBPF程序生命周期?”
在内存中搜索:
“我们对数据库决策了解多少?”
结束会话:
“在我结束之前为FastRecov保存上下文”
______________________________________________________________________
文件结构
dev-memory-mcp/
├── server.py ← Entry point, FastMCP initialization
├── db.py ← SQLite schema and all database operations
├── embeddings.py ← Embedding generation and semantic search
├── tools.py ← All MCP tool definitions
├── requirements.txt
├── memory.db ← Created on first run (git-ignored)
└── README.md______________________________________________________________________
微笑。
.venv/
memory.db
__pycache__/
*.pyc______________________________________________________________________
为什么选择MCP?
Claude可以在一次对话中推理、编写代码和分析复杂问题。它根本无法在对话之间持久化状态,也无法访问未粘贴到上下文窗口中的数据。
MCP提供桥梁。这个项目是专门围绕MCP独特的功能设计的——不是作为一个薄的API包装,而是作为一个解决Claude无国籍状态的结构性解决方案。测试:通过将数据粘贴到Claude对话中,你能得到这个值的80%吗?对于在几个月的会话中积累的个人开发内存存储,答案是否定的。数据太大、太动态、太私密,无法粘贴。
