关于 Mcp Knowledge Graph
MCP Knowledge Graph 是一个基于本地知识图谱的 MCP 服务,为 Claude 等 AI 模型提供跨会话的持久记忆。它以实体、关系和观察项存储信息,适合需要本地记忆管理的开发者。
主要功能
- 01通过实体、关系和观察项存储记忆
- 02按关键词搜索与按名称精确获取记忆
- 03支持默认主数据库与多个命名数据库
- 04项目级 .aim 目录自动识别
- 05写入前校验 _aim 安全标记,防止误覆盖
适用场景
- 01在多次对话之间保留项目背景与用户偏好
- 02按工作、个人等主题拆分独立的记忆库
- 03在项目目录中维护仅属于该项目的记忆
MCP 相关
该项目是 MCP 服务,向 MCP 客户端提供 aim_memory_store、aim_memory_search 等记忆操作工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
10收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| context | string | 否 | 可选的记忆上下文。如果未指定,则默认为主数据库。使用任意描述性名称('work'、'personal'、'health'、'basket-weaving' 等);新上下文会自动创建。 |
| location | enum | 否 | 可选的存储位置覆盖项。'project' 强制使用项目本地 .aim 目录,'global' 强制使用全局目录。未指定时使用自动检测。project | global |
| entities | array | 是 |
详细介绍
MCP Knowledge Graph
通过本地知识图谱,为 AI 模型提供持久化记忆。
使用实体、关系和观察信息,跨对话存储和检索信息。适用于 Claude Code/Desktop 以及任何兼容 MCP 的 AI 平台。
为什么使用“.aim”和“aim_”前缀?
AIM 代表 AI Memory(AI 记忆)——这是本系统的核心概念。三个 AIM 元素提供了清晰的组织方式和安全保障:
.aim目录:让 AI 记忆文件井然有序、易于识别aim_工具前缀:在多工具设置中将相关记忆功能归为一组_aim安全标记:每个记忆文件都以{"type":"_aim","source":"mcp-knowledge-graph"}开头,防止意外覆盖无关的 JSONL 文件
统一的 AIM 命名方式让人一目了然,哪些目录、工具和文件属于 AI 记忆系统。
重要:了解 .aim 目录与 _aim 文件标记的区别
两个名称相似但含义不同的东西:
.aim= 项目本地目录名(必须准确命名为.aim,项目检测才能正常工作)_aim= 文件安全标记(出现在 JSONL 文件中:{"type":"_aim","source":"mcp-knowledge-graph"})
项目本地存储:
- 项目根目录中的目录必须命名为
.aim - 示例:
my-project/.aim/memory.jsonl - 系统会专门查找这个确切的名称
全局存储(--memory-path):
- 可以使用任意目录
- 示例:
~/yourusername/.aim/、~/memories/、~/Dropbox/ai-memory/、~/Documents/ai-data/ - 完全灵活——选择最适合你的存储位置
存储逻辑
文件位置优先级:
- 有
.aim的项目 - 使用.aim/memory.jsonl(项目本地) - 没有项目/没有 .aim - 使用已配置的全局目录
- 上下文 - 添加后缀:
memory-work.jsonl、memory-personal.jsonl
安全系统:
- 每个记忆文件都以
{"type":"_aim","source":"mcp-knowledge-graph"}开头 - 系统拒绝写入不含此标记的文件
- 防止意外覆盖无关的 JSONL 文件
主数据库概念
主数据库是你的主要记忆存储——未指定特定数据库时默认使用。它在列表中始终命名为 default,并存储为 memory.jsonl。
- 默认行为:除非指定其他数据库,否则所有记忆操作都使用主数据库
- 始终可用:项目本地和全局位置中都存在
- 主要存储:你的主知识图谱,可在所有对话中持久保存
- 命名数据库:可选的其他数据库(
work、personal、health),用于整理特定主题
主要功能
- 主数据库:所有操作默认使用的主要记忆存储
- 多个数据库:可选的命名数据库,用于按主题整理记忆
- 项目检测:通过
.aim目录自动使用项目本地记忆 - 位置覆盖:强制操作使用项目本地或全局存储
- 安全操作:内置保护,防止覆盖无关文件
- 数据库发现:列出两个位置中的所有可用数据库
快速开始
全局记忆(推荐)
添加到 claude_desktop_config.json 或 .claude.json。有两种常见方法:
选项 1:默认 .aim 目录(简单)
{
"mcpServers": {
"Aim-Memory-Bank": {
"command": "npx",
"args": [
"-y",
"mcp-knowledge-graph",
"--memory-path",
"/Users/yourusername/.aim"
]
}
}
}
选项 2:Dropbox/云同步(便于携带)
如需在多台设备间访问记忆,请使用同步文件夹。这也是此 MCP 服务的作者保存个人记忆的方式:
{
"mcpServers": {
"Aim-Memory-Bank": {
"command": "npx",
"args": [
"-y",
"mcp-knowledge-graph",
"--memory-path",
"/Users/yourusername/Dropbox/ai-memory"
]
}
}
}
这会在指定目录中创建记忆文件:
memory.jsonl- 主数据库(所有操作的默认数据库)memory-work.jsonl- 工作数据库memory-personal.jsonl- 个人数据库- 等等
项目本地记忆
在任意项目中创建一个 .aim 目录:
mkdir .aim
现在,在此项目中运行时,记忆工具会自动使用 .aim/memory.jsonl(项目本地主数据库),而不是全局存储。
AI 如何使用数据库
配置完成后,AI 模型默认使用主数据库,也可以通过 context 参数指定命名数据库。新数据库会自动创建,无需设置:
// Master Database (default - no context needed)
aim_memory_store({
entities: [{
name: "John_Doe",
entityType: "person",
observations: ["Met at conference"]
}]
})
// Work database
aim_memory_store({
context: "work",
entities: [{
name: "Q4_Project",
entityType: "project",
observations: ["Due December 2024"]
}]
})
// Personal database
aim_memory_store({
context: "personal",
entities: [{
name: "Mom",
entityType: "person",
observations: ["Birthday March 15th"]
}]
})
// Master database in specific location
aim_memory_store({
location: "global",
entities: [{
name: "Important_Info",
entityType: "reference",
observations: ["Stored in global master database"]
}]
})
文件组织
全局设置:
/Users/yourusername/.aim/
├── memory.jsonl # Master Database (default)
├── memory-work.jsonl # Work database
├── memory-personal.jsonl # Personal database
└── memory-health.jsonl # Health database
项目设置:
my-project/
├── .aim/
│ ├── memory.jsonl # Project Master Database (default)
│ └── memory-work.jsonl # Project Work database
└── src/
可用工具
aim_memory_store- 存储新记忆(人物、项目、概念)aim_memory_add_facts- 向现有记忆添加事实aim_memory_link- 链接两条记忆aim_memory_search- 按关键词搜索记忆aim_memory_get- 按确切名称检索特定记忆aim_memory_read_all- 读取数据库中的所有记忆aim_memory_list_stores- 列出可用数据库aim_memory_forget- 忘记记忆aim_memory_remove_facts- 从记忆中移除特定事实aim_memory_unlink- 移除记忆之间的链接
参数
context(可选)- 指定命名数据库(work、personal等)。默认为主数据库location(可选)- 强制使用project或global存储位置。默认为自动检测
数据库发现
使用 aim_memory_list_stores 查看所有可用数据库:
{
"project_databases": [
"default", // Master Database (project-local)
"project-work" // Named database
],
"global_databases": [
"default", // Master Database (global)
"work",
"personal",
"health"
],
"current_location": "project (.aim directory detected)"
}
要点:
- "default" = 两个位置中的主数据库
- 当前位置显示你正在使用项目存储还是全局存储
- 主数据库无处不在 - 它是你的主要记忆库
- 命名数据库是针对特定主题的可选附加项
配置示例
**重要提示:**始终指定 --memory-path,以控制记忆文件的存储位置。
自动批准读取操作(推荐):
{
"mcpServers": {
"Aim-Memory-Bank": {
"command": "npx",
"args": [
"-y",
"mcp-knowledge-graph",
"--memory-path",
"/Users/yourusername/.aim"
],
"autoapprove": [
"aim_memory_search",
"aim_memory_get",
"aim_memory_read_all",
"aim_memory_list_stores"
]
}
}
}
故障排除
出现“File does not contain required _aim safety marker”错误:
- 该文件可能不属于此系统
- 手动创建的 JSONL 文件需要将
{"type":"_aim","source":"mcp-knowledge-graph"}作为第一行 - 如果你是手动创建该文件,请添加
_aim标记,或删除该文件并让系统重新创建
记忆被存储到意外位置:
- 检查你是否位于包含
.aim文件夹的项目目录中(使用项目本地存储) - 否则会使用已配置的全局
--memory-path目录 - 使用
aim_memory_list_stores查看所有可用数据库和当前位置 - 使用
ls .aim/或ls /Users/yourusername/.aim/查看记忆文件
相似数据库过多:
- AI 模型会尝试使用一致的名称,但可能会创建名称变体
- 如有需要,可手动删除不需要的数据库文件
- 引导 AI 使用简单、一致的数据库名称
- 请记住:主数据库始终可作为默认数据库使用,命名数据库是可选的
要求
- Node.js 22+
- 兼容 MCP 的 AI 平台
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。