知识图谱存储服务

MCP知识图谱为AI模型提供持久化内存,通过本地知识图谱存储和检索跨对话信息,适用于Claude Code/Desktop及任何MCP兼容的AI平台。

作者 By shaneholloman
本地部署 AI内存 知识图谱
GitHub

MCP知识图

通过局部知识图为AI模型提供持久内存。

使用实体、关系和观察在对话中存储和检索信息。适用于克劳德代码/桌面和任何兼容MCP的AI平台。

为什么使用“.aim”和“aim_”前缀?

AIM代表 AI内存 -该系统的核心概念。AIM的三个要素提供了清晰的组织和安全性:

  • .aim 目录:保持AI内存文件的有序性和易识别性
  • aim_ 工具前缀:在多工具设置中将相关内存功能组合在一起
  • _aim 安全标志:每个内存文件都以开头 {"type":"_aim","source":"mcp-knowledge-graph"} 防止意外覆盖无关的JSONL文件

这种一致的AIM命名使哪些目录、工具和文件属于AI存储系统变得显而易见。

关键:理解 .aim dir vs _aim 文件标记

两个名字相似的东西:

  • .aim = 项目本地目录名称 (必须准确命名 .aim 项目检测工作)
  • _aim = 文件安全标记 (出现在JSONL文件中: {"type":"_aim","source":"mcp-knowledge-graph"})

对于项目本地存储:

  • 目录必须命名 .aim 在项目根目录中
  • 例子: my-project/.aim/memory.jsonl
  • 系统专门寻找这个确切的名称

对于全局存储(–内存路径):

  • 可以是您想要的任何目录
  • 示例: ~/yourusername/.aim/, ~/memories/, ~/Dropbox/ai-memory/, ~/Documents/ai-data/
  • 完全灵活-选择适合您的任何位置

存储逻辑

文件位置优先级:

  1. 项目与 .aim -用途 .aim/memory.jsonl (项目本地)
  2. 无项目/无目标 -使用配置的全局目录
  3. 语境 -添加后缀: 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 目录(简单)

JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13{ “mcpServers”: { “Aim-Memory-Bank”: { “command”: “npx”, “args”: [ “-y”, “mcp-knowledge-graph”, “—memory-path”, “/Users/yourusername/.aim” ] } } }


**选项2:Dropbox/云同步(便携式)**


要跨多台机器访问内存,请使用同步文件夹。这是此MCP服务器的作者保存自己记忆的方式:


JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13{
  "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 目录:

BASH``` 1mkdir .aim


现在记忆工具自动使用 `.aim/memory.jsonl` (项目本地 **主数据库**)而不是从该项目运行时的全局存储。


## AI如何使用数据库


配置后,AI模型使用 **默认情况下为主数据库** 或者可以使用 `context` 参数。新数据库是自动创建的,无需设置:


JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35// 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"]
  }]
})

文件组织

全局设置:

TREE``` 1 2 3 4 5/Users/yourusername/.aim/ ├── memory.jsonl # Master Database (default) ├── memory-work.jsonl # Work database ├── memory-personal.jsonl # Personal database └── memory-health.jsonl # Health database


**项目设置:**


TREE```
1
2
3
4
5my-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 (可选)-强制 projectglobal 存储位置。默认为自动检测

数据库发现

使用 aim_memory_list_stores 查看所有可用数据库:

JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13{ “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)” }


**要点:**


- **“默认”** =两个位置的主数据库
- **当前位置** 显示您是使用项目存储还是全局存储
- **主数据库无处不在** -这是你的主要记忆库
- **命名数据库** 是特定主题的可选添加


## 配置示例


**重要提示:** 始终指定 `--memory-path` 控制内存文件的存储位置。


**自动批准读取操作(推荐):**


JSON```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19{
  "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"
      ]
    }
  }
}

故障排除

“文件不包含必需的_aim安全标记”错误:

  • 该文件可能不属于此系统
  • 需要手动JSONL文件 {"type":"_aim","source":"mcp-knowledge-graph"} 作为第一行
  • 如果是手动创建文件,请添加 _aim 标记或删除,然后让系统重新创建它

记忆去了意想不到的地方:

  • 检查您是否位于项目目录中 .aim 文件夹(使用项目本地存储)
  • 否则使用配置的全局 --memory-path 目录
  • 使用 aim_memory_list_stores 查看所有可用数据库和当前位置
  • 使用 ls .aim/ls /Users/yourusername/.aim/ 查看您的内存文件

类似数据库太多:

  • 人工智能模型试图使用一致的名称,但可能会产生变化
  • 如果需要,手动删除不需要的数据库文件
  • 鼓励人工智能使用简单、一致的数据库名称
  • 记住:主数据库始终可用,因为默认命名数据库是可选的

需求

  • Node.js 18+
  • MCP兼容AI平台

许可证

麻省理工学院