知识图谱服务器

一个基于Neo4j和Graphiti框架的知识图谱服务器,提供记忆存储、实体搜索和关系查询功能。

  • by alankyshum
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 alankyshum/graphiti-memory

使用说明

Graphiti内存MCP服务器

A. 模型上下文协议(MCP) 使用Neo4j和Graphiti框架提供内存和知识图操作的服务器。

特性

  • 📝 添加记忆:通过自动实体提取将事件和信息存储在知识图中
  • 🧠 搜索节点:使用自然语言查询知识图中的实体
  • 🔗 搜索事实:查找实体之间的关系和连接
  • 📚 检索剧集:获取历史事件和回忆
  • 🗑️ 管理工具:删除剧集、边缘并清除图表
  • 🤖 AI驱动:可选的OpenAI集成,用于增强实体提取
  • 📊 实时数据:直接连接到您的Neo4j数据库
  • 🛠️ 内装式诊断器:全面的错误消息和故障排除

安装

先决条件

  1. Neo4j数据库:您需要一个正在运行的Neo4j实例

    # Install Neo4j (via Homebrew on macOS)
    brew install neo4j
    
    # Start Neo4j
    neo4j start
    
  2. Python 3.10+:MCP服务器需要

从 PyPI 安装

pip install graphiti-memory

从源代码安装

git clone https://github.com/alankyshum/graphiti-memory.git
cd graphiti-memory
pip install -e .

配置

MCP配置

添加到您的MCP客户端配置文件中(例如,Claude Desktop配置):

{
  "mcpServers": {
    "graphiti-memory": {
      "command": "graphiti-mcp-server",
      "env": {
        "NEO4J_URI": "neo4j://127.0.0.1:7687",
        "NEO4J_USER": "neo4j",
        "NEO4J_PASSWORD": "your-password-here",
        "OPENAI_API_KEY": "your-openai-key-here",
        "GRAPHITI_GROUP_ID": "default"
      }
    }
  }
}

Neo4j设置

  1. 设置密码 (首次设置):

    neo4j-admin dbms set-initial-password YOUR_PASSWORD
    
  2. 测试连接:

    # HTTP interface
    curl http://127.0.0.1:7474
    
    # Bolt protocol
    nc -zv 127.0.0.1 7687
    

可用工具

1.add_memory

在知识图中添加一个事件或记忆。这是添加信息的主要方式。

示例:

{
  "name": "add_memory",
  "arguments": {
    "name": "Project Discussion",
    "episode_body": "We discussed the new AI feature roadmap for Q2. Focus on improving entity extraction.",
    "source": "text",
    "group_id": "project-alpha"
  }
}

参数:

  • name:剧集名称(必填)
  • episode_body:要存储的内容-文本、消息或JSON(必填)
  • source:内容类型-“文本”、“消息”或“json”(默认:“文本”)
  • group_id:用于组织数据的可选命名空间
  • source_description:可选描述

2.搜索_存储_节点

使用自然语言在知识图中搜索节点(实体)。

示例:

{
  "name": "search_memory_nodes",
  "arguments": {
    "query": "machine learning",
    "max_nodes": 10
  }
}

退货:具有UUID、名称、摘要、标签和时间戳的节点列表。

3.搜索_记忆_事实

在知识图中搜索实体之间的事实(关系)。

示例:

{
  "name": "search_memory_facts",
  "arguments": {
    "query": "what technologies are related to AI",
    "max_facts": 10
  }
}

退货:包含源、目标和关系详细信息的事实三元组列表。

4.get_episodes

检索特定组的最近剧集。

示例:

{
  "name": "get_episodes",
  "arguments": {
    "group_id": "project-alpha",
    "last_n": 10
  }
}

5.删除_密码

从知识图中删除一集。

示例:

{
  "name": "delete_episode",
  "arguments": {
    "uuid": "episode-uuid-here"
  }
}

6.删除_删除_边缘

从知识图中删除一个事实(实体边)。

示例:

{
  "name": "delete_entity_edge",
  "arguments": {
    "uuid": "edge-uuid-here"
  }
}

7.get_entity_edge

通过UUID检索特定实体边。

示例:

{
  "name": "get_entity_edge",
  "arguments": {
    "uuid": "edge-uuid-here"
  }
}

8.清晰的图形

清除知识图中的所有数据(销毁)。

示例:

{
  "name": "clear_graph",
  "arguments": {}
}

用法

使用克劳德桌面

在中配置 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "graphiti-memory": {
      "command": "graphiti-mcp-server",
      "env": {
        "NEO4J_URI": "neo4j://127.0.0.1:7687",
        "NEO4J_USER": "neo4j",
        "NEO4J_PASSWORD": "your-password",
        "OPENAI_API_KEY": "your-openai-key-here",
        "GRAPHITI_GROUP_ID": "default"
      }
    }
  }
}

备注: OPENAI_API_KEY 是可选的。没有它,实体提取将受到限制,但服务器仍将工作。

独立测试

直接从命令行测试服务器:

export NEO4J_URI="neo4j://127.0.0.1:7687"
export NEO4J_USER="neo4j"
export NEO4J_PASSWORD="your-password"

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | graphiti-mcp-server

故障排除

连接失败

错误: Connection refused 或 ServiceUnavailable

解决方案:

  1. 检查Neo4j是否正在运行: neo4j status
  2. 启动Neo4j: neo4j start
  3. 验证端口7687是否可访问: nc -zv 127.0.0.1 7687

认证失败

错误: Unauthorized 或 authentication failure

解决方案:

  1. 验证密码是否正确
  2. 重置密码: neo4j-admin dbms set-initial-password NEW_PASSWORD
  3. 更新MCP配置中的密码
  4. 使用测试工具验证: test_neo4j_auth

未找到包

错误: neo4j package not installed

此软件包会自动安装 neo4j 附属国。如果您看到此错误:

pip install neo4j

发展

设置开发环境

git clone https://github.com/alankyshum/graphiti-memory.git
cd graphiti-memory
pip install -e ".[dev]"

运行测试

# Test the server
python -m graphiti_memory.server << 'EOF'
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}
EOF

建筑

MCP Client (Claude Desktop / Cline / etc.)
    ↓
Graphiti-Memory Server
    ↓
Neo4j Database

服务器:

  • 在stdin上监听JSON-RPC消息
  • 将诊断记录到stderr
  • 在stdout上使用JSON-RPC进行响应
  • 保持持久的Neo4j连接

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

链接

  • GitHub: https://github.com/alankyshum/graphiti-memory
  • PyPI: https://pypi.org/project/graphiti-memory/
  • 问题: https://github.com/alankyshum/graphiti-memory/issues
  • MCP规范: https://modelcontextprotocol.io

鸣谢

专为与以下设备一起使用而构建: