Memory MCP Server (Go)

Memory MCP Server (Go)

一个提供知识图谱管理功能的模型上下文协议服务器。

okooo5km

研究与数据
访问服务器

README

Memory MCP Server (Go)

一个模型上下文协议服务器,提供知识图谱管理能力。该服务器使 LLM 能够在持久化的知识图谱中创建、读取、更新和删除实体和关系,帮助 AI 助手在对话中保持记忆。这是官方 TypeScript Memory MCP Server 的 Go 实现。

Go Platform License

✨ 特性

  • 知识图谱存储: 维护实体及其关系的持久化图谱
  • 实体管理: 创建、检索、更新和删除具有自定义类型的实体
  • 关系追踪: 定义和管理实体之间的主动语态关系
  • 观察系统: 随时间推移添加和删除关于实体的观察
  • 强大的搜索: 通过名称、类型或观察内容查找相关节点
  • 持久化存储: 数据以简单的 JSON 格式在会话之间保持不变
  • 灵活的传输模式: 支持 stdio (标准输入/输出) 和 SSE (服务器发送事件) 传输模式
  • 跨平台: 适用于 Linux、macOS 和 Windows

可用工具

  • create_entities - 在知识图谱中创建多个新实体

    • entities (数组, 必需): 要创建的实体对象数组
      • name (字符串): 实体的名称
      • entityType (字符串): 实体的类型
      • observations (字符串数组): 与实体相关的观察
  • create_relations - 在实体之间创建多个新关系

    • relations (数组, 必需): 关系对象数组
      • from (字符串): 关系开始的实体的名称
      • to (字符串): 关系结束的实体的名称
      • relationType (字符串): 关系的类型 (主动语态)
  • add_observations - 向现有实体添加新观察

    • observations (数组, 必需): 观察添加数组
      • entityName (字符串): 要添加观察的实体的名称
      • contents (字符串数组): 要添加的观察
  • delete_entities - 删除多个实体及其关联关系

    • entityNames (数组, 必需): 要删除的实体名称数组
  • delete_observations - 从实体中删除特定观察

    • deletions (数组, 必需): 观察删除数组
      • entityName (字符串): 包含观察的实体的名称
      • observations (字符串数组): 要删除的观察
  • delete_relations - 从知识图谱中删除多个关系

    • relations (数组, 必需): 要删除的关系对象数组
      • from (字符串): 源实体名称
      • to (字符串): 目标实体名称
      • relationType (字符串): 关系类型
  • read_graph - 读取整个知识图谱

    • 无需参数
  • search_nodes - 根据查询在知识图谱中搜索节点

    • query (字符串, 必需): 用于匹配实体名称、类型和观察的搜索查询
  • open_nodes - 通过名称打开知识图谱中的特定节点

    • names (数组, 必需): 要检索的实体名称数组

安装

选项 1: 下载预构建的二进制文件

GitHub Releases 页面下载适用于您平台的最新预构建二进制文件:

GitHub Releases 页面下载适用于您平台的二进制文件,并按照下面的安装说明进行操作。

<details> <summary><b>macOS 安装</b></summary>

macOS with Apple Silicon (M1/M2/M3):

# 下载 arm64 版本
curl -L https://github.com/okooo5km/memory-mcp-server-go/releases/latest/download/memory-mcp-server-go-macos-arm64.zip -o memory-mcp-server.zip
unzip memory-mcp-server.zip
chmod +x memory-mcp-server-go

# 删除隔离属性以避免安全警告
xattr -d com.apple.quarantine memory-mcp-server-go

# 安装到您的本地 bin 目录
mkdir -p ~/.local/bin
mv memory-mcp-server-go ~/.local/bin/
rm memory-mcp-server.zip

macOS with Intel Processor:

# 下载 x86_64 版本
curl -L https://github.com/okooo5km/memory-mcp-server-go/releases/latest/download/memory-mcp-server-go-macos-x86_64.zip -o memory-mcp-server.zip
unzip memory-mcp-server.zip
chmod +x memory-mcp-server-go

# 删除隔离属性以避免安全警告
xattr -d com.apple.quarantine memory-mcp-server-go

# 安装到您的本地 bin 目录
mkdir -p ~/.local/bin
mv memory-mcp-server-go ~/.local/bin/
rm memory-mcp-server.zip

macOS Universal Binary (适用于 Apple Silicon 和 Intel):

# 下载 universal 版本
curl -L https://github.com/okooo5km/memory-mcp-server-go/releases/latest/download/memory-mcp-server-go-macos-universal.zip -o memory-mcp-server.zip
unzip memory-mcp-server.zip
chmod +x memory-mcp-server-go

# 删除隔离属性以避免安全警告
xattr -d com.apple.quarantine memory-mcp-server-go

# 安装到您的本地 bin 目录
mkdir -p ~/.local/bin
mv memory-mcp-server-go ~/.local/bin/
rm memory-mcp-server.zip

</details>

<details> <summary><b>Linux 安装</b></summary>

Linux on x86_64 (最常见):

# 下载 amd64 版本
curl -L https://github.com/okooo5km/memory-mcp-server-go/releases/latest/download/memory-mcp-server-go-linux-amd64.tar.gz -o memory-mcp-server.tar.gz
tar -xzf memory-mcp-server.tar.gz
chmod +x memory-mcp-server-go

# 安装到您的本地 bin 目录
mkdir -p ~/.local/bin
mv memory-mcp-server-go ~/.local/bin/
rm memory-mcp-server.tar.gz

Linux on ARM64 (例如, Raspberry Pi 4, AWS Graviton):

# 下载 arm64 版本
curl -L https://github.com/okooo5km/memory-mcp-server-go/releases/latest/download/memory-mcp-server-go-linux-arm64.tar.gz -o memory-mcp-server.tar.gz
tar -xzf memory-mcp-server.tar.gz
chmod +x memory-mcp-server-go

# 安装到您的本地 bin 目录
mkdir -p ~/.local/bin
mv memory-mcp-server-go ~/.local/bin/
rm memory-mcp-server.tar.gz

</details>

<details> <summary><b>Windows 安装</b></summary>

Windows on x86_64 (最常见):

  • 下载 Windows AMD64 版本
  • 解压 ZIP 文件
  • memory-mcp-server-go.exe 移动到 PATH 中的某个位置

Windows on ARM64 (例如, Windows on ARM 设备):

  • 下载 Windows ARM64 版本
  • 解压 ZIP 文件
  • memory-mcp-server-go.exe 移动到 PATH 中的某个位置 </details>

确保安装目录在您的 PATH 中:

  • macOS/Linux: 将 export PATH="$HOME/.local/bin:$PATH" 添加到您的 shell 配置文件 (.bashrc, .zshrc 等)
  • Windows: 通过系统属性 > 环境变量对话框将目录添加到您的系统 PATH

选项 2: 从源代码构建

  1. 克隆存储库:

    git clone https://github.com/okooo5km/memory-mcp-server-go.git
    cd memory-mcp-server-go
    
  2. 构建项目:

    使用 Make (推荐):

    # 为当前平台构建
    make
    
    # 或者为特定平台构建
    make build-darwin-universal    # macOS Universal Binary
    make build-darwin-arm64        # macOS Apple Silicon
    make build-darwin-amd64        # macOS Intel
    make build-linux-amd64         # Linux x86_64
    make build-linux-arm64         # Linux ARM64
    make build-windows-amd64       # Windows x86_64
    
    # 或者一次构建所有平台
    make build-all
    
    # 为所有平台创建分发包
    make dist
    

    二进制文件将放置在 .build 目录中。

    直接使用 Go:

    go build
    
  3. 安装二进制文件:

    # 安装到用户目录 (推荐, 无需 sudo)
    mkdir -p ~/.local/bin
    cp memory-mcp-server-go ~/.local/bin/
    

    通过添加到您的 shell 配置文件来确保 ~/.local/bin 在您的 PATH 中:

    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc  # 或 ~/.bashrc
    source ~/.zshrc  # 或 source ~/.bashrc
    

命令行参数

该服务器支持以下命令行参数:

  • -t, --transport: 指定传输类型 (stdio 或 sse, 默认为 stdio)
  • -m, --memory: 存储知识图谱的自定义路径 (可选)
  • -p, --port: SSE 传输的端口号 (默认为 8080)

用法示例:

# 使用默认设置 (stdio 传输, 默认内存文件)
memory-mcp-server-go

# 指定自定义内存文件位置
memory-mcp-server-go --memory /path/to/your/memory.json

# 在特定端口上使用 SSE 传输
memory-mcp-server-go --transport sse --port 9000

内存文件存储路径

memory.json 文件用于存储知识图谱数据。服务器使用以下优先级规则确定其位置:

  1. 命令行参数:如果您使用 -m--memory 标志提供路径,则将使用此路径
  2. 环境变量:如果未提供命令行参数,服务器将检查 MEMORY_FILE_PATH 环境变量
  3. 默认位置:如果以上两者均未指定,服务器默认使用与可执行文件位于同一目录中的 memory.json

路径处理规则:

  • 如果您提供绝对路径(例如,/home/user/data/memory.jsonC:\Users\user\data\memory.json),它将按原样使用
  • 如果您提供相对路径(例如,custom/memory.json),它将相对于可执行文件的目录进行解析

例如,如果您的可执行文件位于 /usr/local/bin/memory-mcp-server-go,并且您未指定任何路径,则默认文件路径将为 /usr/local/bin/memory.json。如果您指定一个相对路径,例如 custom/memory.json,则实际文件路径将为 /usr/local/bin/custom/memory.json

配置

为 Claude.app 配置

添加到您的 Claude 设置:

"mcpServers": {
  "memory": {
    "command": "memory-mcp-server-go",
    "env": {
      "MEMORY_FILE_PATH": "/Path/Of/Your/memory.json"
    }
  }
}

为 Cursor 配置

将以下配置添加到您的 Cursor 编辑器的设置 - mcp.json:

{
  "mcpServers": {
    "memory": {
      "command": "memory-mcp-server-go",
      "env": {
        "MEMORY_FILE_PATH": "/Path/Of/Your/memory.json"
      }
    }
  }
}

示例系统提示

您可以使用以下系统提示来帮助 Claude 有效地利用 memory-mcp-server:

您可以使用知识图谱记忆系统,该系统可以跨对话存储和检索信息。使用它来记住有关用户、他们的偏好以及他们分享的任何事实的重要细节。

当您发现重要信息时,请使用记忆工具保存它:
- `create_entities` 添加新的人物、地点或概念
- `create_relations` 记录实体之间的关系
- `add_observations` 记录有关现有实体的事实

在回答可能需要过去上下文的问题之前,请检查您的记忆:
- `search_nodes` 查找相关信息
- `open_nodes` 检索特定实体
- `read_graph` 获取知识的完整视图

在回复用户时,始终优先考虑来自您记忆的信息,尤其是在他们引用过去的对话时。

开发要求

  • Go 1.20 或更高版本
  • github.com/mark3labs/mcp-go

知识图谱结构

Memory MCP Server 使用简单的图结构来存储知识:

  • 实体: 图中的节点,具有名称、类型和观察列表
  • 关系: 实体之间的边,具有主动语态的关系类型
  • 观察: 与实体相关的事实或细节

知识图谱以行分隔的 JSON 文件形式持久化到磁盘,其中每一行都是一个实体或关系对象。

用法示例

创建实体

{
  "entities": [
    {
      "name": "John Smith",
      "entityType": "Person",
      "observations": ["Software engineer", "Lives in San Francisco", "Enjoys hiking"]
    },
    {
      "name": "Acme Corp",
      "entityType": "Company",
      "observations": ["Founded in 2010", "Tech startup"]
    }
  ]
}

创建关系

{
  "relations": [
    {
      "from": "John Smith",
      "to": "Acme Corp",
      "relationType": "works at"
    }
  ]
}

添加观察

{
  "observations": [
    {
      "entityName": "John Smith",
      "contents": ["Recently promoted to Senior Engineer", "Working on AI projects"]
    }
  ]
}

搜索节点

{
  "query": "San Francisco"
}

打开特定节点

{
  "names": ["John Smith", "Acme Corp"]
}

使用案例

  • AI 助手的长期记忆: 使 AI 助手能够记住用户偏好、过去的互动和重要事实
  • 知识管理: 组织有关人物、地点、事件和概念的信息
  • 关系追踪: 维护实体之间的关系网络
  • 上下文持久性: 在多个会话中保留重要的上下文
  • 日记和每日日志: 维护事件、活动和反思的结构化记录,以便按时间顺序轻松检索和关联过去的经历

版本历史

请参阅 GitHub Releases 以获取版本历史和变更日志。

许可证

memory-mcp-server-go 在 MIT 许可证下获得许可。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。

关于

一个用于模型上下文协议 (MCP) 的知识图谱记忆服务器的 Go 实现,为大型语言模型启用持久记忆功能。该项目基于 官方 TypeScript 实现,但使用 MCP Go SDK 在 Go 中重写。

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python