知识图谱记忆服务

Mnemosyne MCP 是一个为AI代理提供持久记忆的知识图谱服务,支持本地语义搜索和零API成本。

  • by zhadyz
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 zhadyz/mnemosyne-mcp

使用说明

Mnemosyne MCP

用于具有局部语义搜索的AI代理的知识图内存。API成本为零。

以希腊记忆女神、缪斯之母姆涅莫辛尼的名字命名。

概述

Mnemosyne使用Neo4j知识图和局部向量嵌入为AI代理提供持久内存。与需要付费API访问的传统解决方案不同,Mnemosyne通过ONNX Runtime本地运行嵌入。

主要特点:

  • 基于BGE嵌入的局部语义搜索
  • 没有API密钥或外部依赖项
  • 初始设置后脱机工作
  • 与模型上下文协议(MCP)兼容
  • 直接替代基于云的解决方案

性能比较

度量 云服务 Mnemosyne
成本 约0.02美元/百万代币 免费
API密钥 必需 无
网络 始终需要 仅限初始下载
隐私 外部 本地
延迟 ~100ms ~200-500ms

安装

先决条件

  • Node.js>=20.0.0
  • Neo4j数据库(下载)

快速入门(NPM)

npx @zhadyz/mnemosyne-mcp

来源

git clone https://github.com/zhadyz/mnemosyne-mcp.git
cd mnemosyne-mcp
npm install
npm run build

Neo4j设置

  1. 安装Neo4j桌面
  2. 创建数据库实例
  3. 设置凭据(默认密码: neo4j)
  4. 启动数据库(默认端口:7687)

环境配置

创建 .env 在项目根目录中:

EMBEDDING_PROVIDER=local
LOCAL_EMBEDDING_MODEL=Xenova/bge-base-en-v1.5

NEO4J_URI=bolt://127.0.0.1:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=neo4j
# NEO4J_DATABASE - Automatically set by router based on project config

多项目数据库路由

Mnemosyne包括 内置动态数据库路由 它会根据您当前的项目自动选择正确的Neo4j数据库。

为什么要使用多数据库架构?

规模绩效:

  • 问题10⁴ 实体而不是10⁵+ 单片架构
  • 通过数据库分区实现O(log n)查询复杂性
  • 线性项目添加而不降低性能

项目隔离:

  • 命名空间分离可防止知识图的交叉污染
  • 每个项目都有自己的独立数据库
  • 用于跨项目学习的全球模式数据库

设置

1.在Neo4j中创建项目数据库:

CREATE DATABASE my_project_db IF NOT EXISTS;
CREATE DATABASE another_project_db IF NOT EXISTS;

2.添加 .mnemosyne 文件到每个项目根目录:

# Project-specific database name (required)
MNEMOSYNE_DATABASE=my_project_db

# Optional metadata
PROJECT_NAME=My Project
RETENTION_DAYS=90
AUTO_CLEANUP=true
ISOLATION_LEVEL=project

3.路由器自动检测数据库:

Your Projects:
├─ project-alpha/
│  └─ .mnemosyne          → MNEMOSYNE_DATABASE=alpha_db
│     Routes to "alpha_db" database ✓
│
├─ project-beta/
│  └─ .mnemosyne          → MNEMOSYNE_DATABASE=beta_db
│     Routes to "beta_db" database ✓
│
└─ unconfigured-project/
   No .mnemosyne → Routes to "neo4j" (global patterns) ✓

路由器从您当前的工作目录向上遍历目录树,找到 .mnemosyne 或 .env,并路由到指定的数据库。如果找不到配置,则默认为 neo4j (全球模式数据库)。

模板: 将包含的模板复制到您的项目中:

cp node_modules/@zhadyz/mnemosyne-mcp/.mnemosyne.template .mnemosyne
# Edit MNEMOSYNE_DATABASE to your database name

克劳德集成

克劳德代码(推荐)

使用一个命令将Mnemosyne添加到Claude Code中:

claude mcp add --scope user mnemosyne -- npx -y @zhadyz/mnemosyne-mcp

验证是否已安装:

claude mcp list

你应该看看 mnemosyne: npx -y @zhadyz/mnemosyne-mcp - ✓ Connected

默认配置:

  • Neo4j URI: bolt://localhost:7687
  • 用户名/密码: neo4j / neo4j
  • 数据库:自动(通过路由器- neo4j 如果不 .mnemosyne 文件已找到)
  • 嵌入:局部(BGE base-en-v1.5768尺寸)

自定义Neo4j设置: 如果您使用不同的凭据,请编辑 ~/.claude.json 并添加环境变量:

claude mcp add --scope user mnemosyne \
  -e NEO4J_PASSWORD=your_password \
  -- npx -y @zhadyz/mnemosyne-mcp

双MCP实例设置(项目+全局内存)

对于高级工作流,请运行 两个独立的Mnemosyne实例 -一个用于项目特定知识,一个用于跨项目模式。

架构:

  • 工程实例:使用自动路由(查找 .mnemosyne 在您的项目中)
  • 全局实例:始终路由到 neo4j 数据库(强制覆盖)

设置:

# Project-specific knowledge (automatic routing)
claude mcp add --scope user mnemosyne-project -- npx -y @zhadyz/mnemosyne-mcp

# Global cross-project patterns (forced to neo4j database)
claude mcp add --scope user mnemosyne-global \
  -e MNEMOSYNE_FORCE_DATABASE=neo4j \
  -- npx -y @zhadyz/mnemosyne-mcp

代理使用:

工具在Claude中带有前缀:

  • mcp__mnemosyne-project__create_entities → 存储在项目数据库中
  • mcp__mnemosyne-global__create_entities → 全球门店 neo4j 数据库

Agent的决策启发式:

存储于 项目数据库 当知识是:

  • 项目特定代码:类、函数、API、模型
  • 项目背景:依赖关系、架构决策、当地惯例
  • 临时学习:当前的冲刺模式、调试见解

存储于 全局数据库 当知识是:

  • 可重用模式:错误处理策略、设计模式
  • 框架最佳实践:Next.js优化、React模式
  • 安全模式:身份验证流程、输入验证
  • 元学习:跨多个项目的有效方法

默认规则:不确定时,存储在项目数据库中。验证后手动将经过验证的模式提升到全局数据库。

克劳德桌面

基本设置:

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "mnemosyne": {
      "command": "npx",
      "args": ["-y", "@zhadyz/mnemosyne-mcp"],
      "env": {
        "NEO4J_URI": "bolt://127.0.0.1:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "neo4j",
        "EMBEDDING_PROVIDER": "local",
        "LOCAL_EMBEDDING_MODEL": "Xenova/bge-base-en-v1.5"
      }
    }
  }
}

双实例设置(项目+全局):

{
  "mcpServers": {
    "mnemosyne-project": {
      "command": "npx",
      "args": ["-y", "@zhadyz/mnemosyne-mcp"],
      "env": {
        "NEO4J_URI": "bolt://127.0.0.1:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "neo4j",
        "EMBEDDING_PROVIDER": "local",
        "LOCAL_EMBEDDING_MODEL": "Xenova/bge-base-en-v1.5"
      }
    },
    "mnemosyne-global": {
      "command": "npx",
      "args": ["-y", "@zhadyz/mnemosyne-mcp"],
      "env": {
        "NEO4J_URI": "bolt://127.0.0.1:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "neo4j",
        "EMBEDDING_PROVIDER": "local",
        "LOCAL_EMBEDDING_MODEL": "Xenova/bge-base-en-v1.5",
        "MNEMOSYNE_FORCE_DATABASE": "neo4j"
      }
    }
  }
}

地方发展

{
  "mcpServers": {
    "mnemosyne": {
      "command": "node",
      "args": ["/absolute/path/to/mnemosyne-mcp/dist/router.js"],
      "env": {
        "NEO4J_URI": "bolt://127.0.0.1:7687",
        "NEO4J_USERNAME": "neo4j",
        "NEO4J_PASSWORD": "neo4j",
        "EMBEDDING_PROVIDER": "local",
        "LOCAL_EMBEDDING_MODEL": "Xenova/bge-base-en-v1.5"
      }
    }
  }
}

嵌入模型

Mnemosyne支持多种BGE模型:

型号 尺寸 大小 用例
bge-base-en-v1.5 768 90MB 平衡(默认)
bge-small-en-v1.5 384 30MB 资源受限
bge-large-en-v1.5 1024 200MB 最大精度
bge-m3 1024 200MB 多语言

模型在首次使用时自动下载并缓存到 ~/.cache/huggingface/.

用法

创建实体

{
  "name": "create_entities",
  "arguments": {
    "entities": [{
      "name": "TypeScript",
      "entityType": "programming_language",
      "observations": [
        "Strongly typed superset of JavaScript",
        "Compiles to JavaScript",
        "Static type checking"
      ]
    }]
  }
}

语义搜索

{
  "name": "semantic_search",
  "arguments": {
    "query": "type-safe languages for web development",
    "limit": 5
  }
}

建立关系

{
  "name": "create_relations",
  "arguments": {
    "relations": [{
      "from": "TypeScript",
      "to": "JavaScript",
      "relationType": "compiles_to"
    }]
  }
}

建筑

EmbeddingServiceFactory
├── DefaultEmbeddingService (testing)
├── OpenAIEmbeddingService (cloud)
└── LocalEmbeddingService (ONNX)

所有服务均已实施 IEmbeddingService,实现无缝的提供商交换。

本地嵌入堆栈

  • ONNX运行时: 优化的机器学习推理
  • Transformers.js: JavaScript机器学习库
  • BGE模型: BAAI通用嵌入
  • L2标准化: 向量相似性搜索

发展

npm test              # Run tests
npm run test:watch    # Watch mode
npm run build         # Build
npm run dev           # Development mode
npm run fix           # Lint and format

配置

变量 选项 描述
EMBEDDING_PROVIDER auto, local, openai 供应商选择
LOCAL_EMBEDDING_MODEL BGE型号名称 本地型号选择
NEO4J_URI bolt://... 数据库连接
NEO4J_USERNAME string 数据库用户
NEO4J_PASSWORD string 数据库密码
NEO4J_DATABASE string 数据库名称

提供商选择:

  • auto:如果存在API密钥,则为OpenAI,否则为本地
  • local:始终使用本地嵌入
  • openai:始终使用OpenAI(需要API密钥)

鸣谢

分叉自 纪念mcp 甘农大厅。

附加内容:

  • 本地ONNX嵌入支持
  • BGE模型集成
  • 自动回退配置
  • 零依赖操作

许可证

MIT许可证-请参阅 许可证 文件。

贡献

欢迎拉取请求。


建造于 扎兹 由ONNX Runtime+Transformers.js+BGE嵌入提供支持