Token导航 LogoToken导航TokenDH.com
Memory MCP Rs logo
数据服务未说明官方级别未说明来源级核验

Memory MCP Rs

MCP Server

高性能的Rust实现的知识图谱内存服务器,支持SQLite后端、全文搜索和自动去重,适用于需要持久化存储和高效查询的场景。

工具数

0

提示词数

0

GitHub Stars

2

资源数

0
知识图谱高性能RustClaude全文搜索Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ssoj13

提供方

ssoj13

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

内存MCP服务器(Rust+SQLite)

MCP内存服务器的高性能Rust实现——持久克劳德内存的知识图。

原始项目

特性

  • SQLite后端: 快速、可靠、符合ACID标准的存储
  • 全文搜索: FTS5用于跨名称、类型和观察值进行高效搜索
  • 自动重复数据删除: SQLite约束可防止重复的实体和关系
  • 级联删除: 外键约束会自动清理孤立关系
  • 异步I/O: 基于东京的非阻塞操作
  • 索引查询: O(log n)查找而不是O(n)扫描
  • 符合MCP标准: 通过rmcp SDK完全支持MCP协议
  • 类型安全: Rust的类型系统可以防止常见的bug

安装

cd rust/memory-mcp-rs
cargo build --release

二进制文件将位于 target/release/memory-mcp-rs (或 .exe 在Windows上)。

运输方式

服务器支持两种传输模式:

stdio模式(默认)

  • 使用案例: 本地MCP客户端(克劳德桌面、克劳德代码、Codex)
  • 协议: 标准输入/标准输出上的JSON-RPC
  • 登录中: 默认情况下为静音(防止MCP握手问题),可选文件日志记录 --log
  • 命令: memory-mcp-rsmemory-mcp-rs --log server.log

HTTP流模式

  • 使用案例: 远程访问、web应用程序、调试、测试
  • 协议: HTTP与服务器发送事件(SSE)
  • 终点:

- /mcp -MCP协议端点 - /health -健康检查(返回“OK”)

  • 登录中: 始终启用stderr,可选文件日志记录 --log
  • 命令: memory-mcp-rs --stream --port 8000

用法

搜索语义(FTS)

  • 搜索使用SQLite FTS5,但每个术语都会被屏蔽:不支持FTS运算符(or/near/\*)。
  • 行为:查询中的所有单词都以逻辑和方式组合。短语只作为一组单词工作。
  • 原因:避免语法错误和用户查询中的注册表。

CLI选项

Usage: memory-mcp-rs [OPTIONS]

Options:
      --db-path     Database file path (default: system data dir or MEMORY_FILE_PATH env)
  -s, --stream               Enable streamable HTTP mode (default: stdio)
  -p, --port 
          HTTP port for stream mode [default: 8000]
  -b, --bind           Bind address for stream mode [default: 127.0.0.1]
  -l, --log []         Enable file logging [default: memory-mcp-rs.log]
  -h, --help                 Print help
  -V, --version              Print version

stdio模式示例

# Default path: %LOCALAPPDATA%/mcp-memory/knowledge_graph.db (Windows)
# or ~/.local/share/mcp-memory/knowledge_graph.db (Linux/Mac)
memory-mcp-rs

# Custom database path (CLI flag)
memory-mcp-rs --db-path /path/to/graph.db

# Custom database path (environment variable)
MEMORY_FILE_PATH=/path/to/graph.db memory-mcp-rs

# With file logging (for debugging)
memory-mcp-rs --log debug.log

HTTP流模式示例

# Start HTTP server on default port 8000
memory-mcp-rs --stream

# Custom port and bind address
memory-mcp-rs --stream --port 9000 --bind 0.0.0.0

# With logging to both console and file
memory-mcp-rs --stream --log server.log

# Health check
curl http://localhost:8000/health
# Returns: OK

使用克劳德桌面

stdio模式 -添加到MCP配置:

视窗 (%APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "memory": {
      "command": "C:\\path\\to\\memory-mcp-rs.exe"
    }
  }
}

macOS/Linux (~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "memory": {
      "command": "/path/to/memory-mcp-rs"
    }
  }
}

使用克劳德代码

stdio模式 -添加到 .claude/mcp.json:

{
  "mcpServers": {
    "memory": {
      "command": "memory-mcp-rs",
      "args": []
    }
  }
}

HTTP流模式 -单独启动服务器,然后配置:

# Terminal 1: Start HTTP server
memory-mcp-rs --stream --port 8000

# Terminal 2: Add to .claude/mcp.json
{
  "mcpServers": {
    "memory-http": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

与Codex合作

stdio模式 -添加到Codex MCP配置:

{
  "mcpServers": {
    "memory": {
      "command": "memory-mcp-rs"
    }
  }
}

HTTP流模式 -单独启动服务器:

# Terminal 1: Start HTTP server
memory-mcp-rs --stream --port 8000 --log server.log

# Terminal 2: Configure Codex to use http://localhost:8000/mcp

MCP工具

工具说明
create_entities在知识图中创建新实体
create_relations在实体之间创建关系
add_observations向实体添加观察结果
delete_entities删除实体(级联删除关系)
delete_observations删除具体观察结果
delete_relations删除特定关系
read_graph阅读整个知识图谱
search_nodes跨实体的全文搜索
open_nodes按名称打开特定节点

建筑

src/
├── main.rs       # MCP server + tool routing + dual-mode transport
├── logging.rs    # Transport-aware logging (stdio vs HTTP)
├── graph.rs      # Data structures (Entity, Relation, KnowledgeGraph)
├── manager.rs    # Async manager wrapping storage
└── storage.rs    # SQLite implementation

SQLite架构

-- Entities
CREATE TABLE entities (
    name TEXT PRIMARY KEY,
    entity_type TEXT NOT NULL,
    observations TEXT NOT NULL  -- JSON array
);

-- Relations with cascade delete
CREATE TABLE relations (
    from_entity TEXT NOT NULL,
    to_entity TEXT NOT NULL,
    relation_type TEXT NOT NULL,
    FOREIGN KEY(from_entity) REFERENCES entities(name) ON DELETE CASCADE,
    FOREIGN KEY(to_entity) REFERENCES entities(name) ON DELETE CASCADE
);

-- FTS5 for full-text search
CREATE VIRTUAL TABLE entities_fts USING fts5(
    name, entity_type, observations,
    content=entities
);

演出

操作JSONLSQLite
搜索O(n)O(对数n) 使用FTS5
插入O(n)O(对数n)
删除O(n)O(对数n)
级联删除手动自动

测试

# Run all tests (integration + HTTP transport)
cargo test

# Run only integration tests
cargo test --test integration

# Run only HTTP transport tests
cargo test --test http_transport

测试覆盖范围:

  • 23个集成测试(SQLite、CRUD、FTS5、验证)
  • 4个HTTP传输测试(健康检查、端点、日志记录)
  • 所有测试都使用临时数据库并自动清理

示例用法

use memory_mcp_rs::{graph::Entity, manager::KnowledgeGraphManager};

#[tokio::main]
async fn main() -> anyhow::Result {
    let manager = KnowledgeGraphManager::new("graph.db".into())?;

    // Create entity
    manager.create_entities(vec![
        Entity {
            name: "Alice".to_string(),
            entity_type: "person".to_string(),
            observations: vec!["Works at Acme".to_string()],
        }
    ]).await?;

    // Search
    let results = manager.search_nodes(Some("Acme".to_string())).await?;
    println!("Found {} entities", results.entities.len());

    Ok(())
}

与TypeScript版本的差异

架构更改

AspectTypeScript(原始)Rust(此端口)
代码组织单片式(index.ts,~470 LOC)模块化(4个模块,~1200 LOC)
存储后端JSONL文本文件SQLite二进制数据库
数据模型内存数组带约束的关系表
文件结构单文件+测试graph.rs, storage.rs, manager.rs, main.rs

性能改进

操作TypeScriptRust改进
搜索O(n)线性 .filter()O(log n)SQL LIKE +索引快10-100倍
插入O(n)完整文件重写O(log n)SQL INSERT快10-100倍
删除O(n)+手动过滤器O(log n)+CASCADE快10-100倍
去重手册 .some() 检查自动(UNIQUE 约束)零开销
级联删除手动环路滤波自动(FOREIGN KEY CASCADE)零开销

数据完整性

特性TypeScriptRust
ACID事务❌ 否✅ SQLite酸
外键验证❌ 手册✅ 自动
唯一约束❌ 手册✅ 数据库级别
故障恢复❌ 文件损坏✅ WAL日志
并发访问❌ 文件锁定问题✅ WAL模式(并发读取)

类型安全和记忆

AspectTypeScriptRust
类型检查运行时(Zod模式)编译时(Rust类型)
内存安全垃圾回收器所有权+借用检查器
零安全undefined 检查Option / Result
错误处理例外情况Result + anyhow

并发模型

特性TypeScriptRust
异步运行时单线程事件循环Tokio多线程
I/O模型非阻塞(Node.js)非阻塞(async/await)
文件锁定操作系统级别(fs模块)SQLite连接池

测试

AspectTypeScriptRust
框架Vitest(2个测试文件)Cargo测试(11个集成测试)
覆盖基本CRUD完整CRUD+边缘情况+持久性
隔离共享测试文件每个测试的临时数据库

什么没有改变

  • MCP协议:相同的9个工具,具有相同的界面
  • API兼容性:替代TypeScript版本
  • 图形语义学:相同的实体/关系/观察模型
  • 工具名称:完全相同(create_entities, search_nodes等等)

迁移说明

Rust版本以SQLite格式存储数据,因此您不能直接从TypeScript JSONL文件迁移。如果您需要迁移:

  1. 使用以下命令从TypeScript版本导出图形 read_graph
  2. 使用导入到Rust版本 create_entities + create_relations

何时使用哪个版本

在以下情况下使用TypeScript版本:

  • 你需要快速原型制作
  • 文件大小\1000个实体
  • 需要ACID事务
  • 需要并发读取权限
  • 想要编译时类型安全

许可证

麻省理工学院

目录标签

目录标签

知识图谱高性能RustClaude全文搜索本地部署SQLite存储Rust实现

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP