语义记忆mcp
持久内存 克劳德代码带有语义搜索的知识图——由Neo4j提供支持。
快速开始
npx semantic-memory-mcp@3.0.4 init
# Restart Claude Code — done!交互式向导通过Docker Compose设置Neo4j,并允许您选择嵌入提供程序:
- 内置 --全MiniLM-L6-v2,384 dim,在CPU上运行,无额外依赖
- 奥拉玛 --通过当地Ollama提供更高质量的型号(nomic嵌入文本768 dim,mxbai嵌入大1024 dim)
在macOS上,它通过Homebrew原生安装Ollama以实现Metal GPU加速。
需求
- Node.js>=18
- Docker+Docker组合
双模式:项目+全局内存
默认情况下,所有事实都会进入一个Neo4j数据库。随着 双模式 你有两层:
| 图层 | 位置 | 包含 |
|---|---|---|
| 项目 | ./.semantic-memory/ | 当前代码库的错误、解决方法和模式 |
| 全球 | ~/.cache/claude-memory/ | 技术栈、惯例、偏好——跨项目共享 |
在初始化过程中启用(默认情况下启用):
npx semantic-memory-mcp@3.0.4 init
# → "Share knowledge between projects?" → Y自动布线
事实在写入时根据谓词路由到正确的层:
| → 全球 | → 项目(默认) |
|---|---|
uses, depends_on, deployed_on, written_in, has_version, runs_on, built_with, integrates_with, prefers, convention | blocked_by, workaround_for, todo, bug_in, fixed_by, needs_refactor, has_pattern, test_for, config_for |
未知谓词默认为项目(手动升级)。
搜索和图形查询总是同时访问这两个层——无需手动切换。
手动推广
项目范围的事实可以手动提升到全局:
npx semantic-memory-mcp promote显示一个编号列表,您可以选择要推广的事实(全部/无/按数字)。
在哪里配置
有三种方法可以将MCP服务器连接到Claude Code:
全球(建议个人使用)
由自动添加 npx semantic-memory-mcp@3.0.4 init.Config位于 ~/.claude.json:
{
"mcpServers": {
"semantic-memory": {
"type": "stdio",
"command": "npx",
"args": ["-y", "semantic-memory-mcp@3.0.4"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "memory_pass_2024"
}
}
}
}每个项目——与团队共享
创建 .mcp.json 在项目根中。致力于回购,因此团队共享设置:
{
"mcpServers": {
"semantic-memory": {
"type": "stdio",
"command": "npx",
"args": ["-y", "semantic-memory-mcp@3.0.4"],
"env": {
"CLAUDE_MEMORY_DIR": "./.semantic-memory",
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "memory_pass_2024"
}
}
}
}添加 .semantic-memory/ 到 .gitignore.
双模式(由init自动配置)
单一全球入口 ~/.claude.json 处理所有项目——不需要每个项目的配置:
{
"mcpServers": {
"semantic-memory": {
"type": "stdio",
"command": "npx",
"args": ["-y", "semantic-memory-mcp@3.0.4"],
"env": {
"CLAUDE_MEMORY_DIR": "./.semantic-memory",
"CLAUDE_MEMORY_GLOBAL_DIR": "/home/user/.cache/claude-memory",
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "memory_pass_2024"
}
}
}
}它做什么
Claude Code有5个工具可以在会话中记住事情:
memory_store--将事实保存为主题→ 谓词→ 对象三元组memory_search--按意义查找事实(向量相似性)memory_graph--探索实体周围的联系memory_list_entities--列出存储的所有内容memory_delete--按ID删除事实
> "Remember that billing-service uses PostgreSQL 16"
→ Stored: [billing-service] -[uses]-> [PostgreSQL 16]
> "What do you know about billing?"
→ [0.856] [billing-service] -[uses]-> [PostgreSQL 16]嵌入模型
| 型号 | 尺寸 | 大小 | 最适合 |
|---|---|---|---|
all-MiniLM-L6-v2 (内置) | 384 | 80 MB | 无需设置,对于大多数用例来说已经足够好了 |
nomic-embed-text | 768 | 274 MB | 质量和速度的最佳平衡(建议使用Olama) |
mxbai-embed-large | 1024 | 670 MB | 最高质量、复杂的语义关系 |
all-minilm | 384 | 45 MB | 最小的Olama型号,速度快 |
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
CLAUDE_MEMORY_DIR | ~/.cache/claude-memory | 数据目录 |
CLAUDE_MEMORY_MODEL_CACHE | /models | 嵌入模型缓存 |
EMBEDDING_PROVIDER | builtin | builtin 或 ollama |
EMBEDDING_DIM | 384 / 768 | 嵌入尺寸(由提供商自动设置) |
OLLAMA_URL | http://localhost:11434 | API终点 |
OLLAMA_MODEL | nomic-embed-text | Ollama嵌入模型 |
NEO4J_URI | bolt://localhost:7687 | Neo4j螺栓URI |
NEO4J_USER | neo4j | Neo4j用户名 |
NEO4J_PASSWORD | memory_pass_2024 | Neo4j密码 |
CLAUDE_MEMORY_GLOBAL_DIR | -- | 全局内存目录(启用双模式) |
MEMORY_TRIGGERS_STORE | -- | 额外的触发词 memory_store (逗号分隔) |
MEMORY_TRIGGERS_SEARCH | -- | 额外的触发词 memory_search (逗号分隔) |
MEMORY_TRIGGERS_GRAPH | -- | 额外的触发词 memory_graph (逗号分隔) |
MEMORY_TRIGGERS_LIST | -- | 额外的触发词 memory_list_entities (逗号分隔) |
自定义触发词
每个工具都有内置的触发词(俄语和英语),告诉Claude何时使用它。您可以通过环境变量在任何语言中添加自己的触发器。自定义触发器包括 附加 默认值,而不是替换它们。
示例——添加中文和西班牙文触发器:
{
"mcpServers": {
"semantic-memory": {
"type": "stdio",
"command": "npx",
"args": ["-y", "semantic-memory-mcp@3.0.4"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "memory_pass_2024",
"MEMORY_TRIGGERS_STORE": "记住, recuerda, guardar",
"MEMORY_TRIGGERS_SEARCH": "搜索记忆, buscar en memoria"
}
}
}
}您还可以在以下过程中交互式配置触发器 npx semantic-memory-mcp@3.0.4 init.
更新
所有命令和配置都使用固定版本(semantic-memory-mcp@3.0.4).此README在每次发布时都会自动更新,因此从这里复制任何命令都会为您提供最新版本。
许可证
麻省理工学院
