MCP Neo4j Knowledge Graph Memory Server について
AI アシスタントとユーザーのやり取りから得た情報を、Neo4j グラフデータベースに保存して検索する MCP メモリサーバーです。公式の Knowledge Graph Memory Server を拡張したもので、複雑なナレッジグラフを扱うアプリケーションに適しています。
主な機能
- 01Neo4j によるグラフデータベースでの保存
- 02エンティティ、リレーション、オブザベーションの作成・参照・更新・削除
- 03あいまい検索と完全一致検索
- 04Cypher によるグラフクエリとトラバーサル
- 05Docker を使ったデプロイ
活用シーン
- 01セッションをまたいだ AI アシスタントの長期記憶の保持
- 02複雑な関係性を扱うナレッジグラフの構築
- 03Claude Desktop とグラフデータベースの記憶の接続
MCP 対応
MCP プロトコルに対応したメモリサーバーです。MCP クライアントから、エンティティ、リレーション、オブザベーションの読み書きを呼び出せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Neo4j ナレッジグラフメモリーサーバー
概要
MCP Neo4j Knowledge Graph Memory Serverは、Neo4jグラフデータベースを基盤とするナレッジグラフメモリーサーバーです。AI アシスタントとユーザーとのやり取りから得られる情報を保存、検索します。このプロジェクトは、公式のKnowledge Graph Memory Serverを強化したバージョンで、バックエンドのストレージエンジンとしてNeo4jを使用します。
Neo4jをストレージバックエンドとして使用することで、より強力なグラフクエリ機能、優れたパフォーマンスと拡張性を実現します。特に、複雑なナレッジグラフアプリケーションの構築に適しています。
特長
- 🚀 Neo4jを基盤とする高性能なグラフデータベースストレージ
- 🔍 強力なあいまい検索と完全一致機能
- 🔄 エンティティ、関係、観察の完全なCRUD操作
- 🌐 MCPプロトコルと完全互換
- 📊 複雑なグラフクエリとトラバーサルに対応
- 🐳 デプロイしやすいDocker対応
インストール
前提条件
- Node.js >= 22.0.0
- Neo4jデータベース(ローカルまたはリモート)
npmでインストール
# 全局安装
npm install -g @jovanhsu/mcp-neo4j-memory-server
# 或作为项目依赖安装
npm install @jovanhsu/mcp-neo4j-memory-server
Dockerを使用
# 使用docker-compose启动Neo4j和Memory Server
git clone https://github.com/JovanHsu/mcp-neo4j-memory-server.git
cd mcp-neo4j-memory-server
docker-compose up -d
環境変数の設定
サーバーは以下の環境変数で設定します。
| 環境変数 | 説明 | デフォルト値 |
|---|---|---|
| NEO4J_URI | Neo4jデータベースのURI | bolt://localhost:7687 |
| NEO4J_USER | Neo4jのユーザー名 | neo4j |
| NEO4J_PASSWORD | Neo4jのパスワード | password |
| NEO4J_DATABASE | Neo4jデータベース名 | neo4j |
Claudeとの連携
Claude Desktopでの設定
claude_desktop_config.jsonに以下の設定を追加します。
{
"mcpServers": {
"graph-memory": {
"command": "npx",
"args": [
"-y",
"@izumisy/mcp-neo4j-memory-server"
],
"env": {
"NEO4J_URI": "neo4j://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "password",
"NEO4J_DATABASE": "memory"
}
}
}
}
Claude WebでMCP Inspectorを使用
- MCP Inspectorをインストールします
- Neo4j Memory Serverを起動します。
npx @jovanhsu/mcp-neo4j-memory-server - 別のターミナルでMCP Inspectorを起動します。
npx @modelcontextprotocol/inspector npx @jovanhsu/mcp-neo4j-memory-server - ブラウザーでMCP Inspectorのインターフェースにアクセスします
使用方法
Claudeのカスタム指示
Claudeのカスタム指示に以下の内容を追加します。
Follow these steps for each interaction:
1. User Identification:
- You should assume that you are interacting with default_user
- If you have not identified default_user, proactively try to do so.
2. Memory Retrieval:
- Always begin your chat by saying only "Remembering..." and search relevant information from your knowledge graph
- Create a search query from user words, and search things from "memory". If nothing matches, try to break down words in the query at first ("A B" to "A" and "B" for example).
- Always refer to your knowledge graph as your "memory"
3. Memory
- While conversing with the user, be attentive to any new information that falls into these categories:
a) Basic Identity (age, gender, location, job title, education level, etc.)
b) Behaviors (interests, habits, etc.)
c) Preferences (communication style, preferred language, etc.)
d) Goals (goals, targets, aspirations, etc.)
e) Relationships (personal and professional relationships up to 3 degrees of separation)
4. Memory Update:
- If any new information was gathered during the interaction, update your memory as follows:
a) Create entities for recurring organizations, people, and significant events
b) Connect them to the current entities using relations
b) Store facts about them as observations
APIの例
独自のアプリケーションでこのサーバーを使用する場合は、MCPプロトコルを介して通信できます。
import { McpClient } from '@modelcontextprotocol/sdk/client/mcp.js';
import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
// 创建客户端
const transport = new StdioClientTransport({
command: 'npx',
args: ['-y', '@izumisy/mcp-neo4j-memory-server'],
env: {
NEO4J_URI: 'bolt://localhost:7687',
NEO4J_USER: 'neo4j',
NEO4J_PASSWORD: 'password',
NEO4J_DATABASE: 'neo4j'
}
});
const client = new McpClient();
await client.connect(transport);
// 创建实体
const result = await client.callTool('create_entities', {
entities: [
{
name: '用户',
entityType: '人物',
observations: ['喜欢编程', '使用TypeScript']
}
]
});
console.log(result);
Neo4jを選ぶ理由
元のバージョンで使用されていたJSONファイルストレージやDuckDBバージョンと比較すると、Neo4jには以下の利点があります。
- ネイティブなグラフデータベース:Neo4jはグラフデータ専用に設計されたデータベースであり、ナレッジグラフの保存とクエリに最適です
- 高性能なクエリ:Cypherクエリ言語を使用して、複雑なグラフトラバーサルやパターンマッチングを効率的に実行できます
- 関係を優先:Neo4jでは関係が第一級の要素として扱われるため、エンティティ間の関係を効率的にクエリできます
- 可視化機能:Neo4jには組み込みの可視化ツールがあり、ナレッジグラフのデバッグや理解に役立ちます
- 拡張性:クラスターでのデプロイに対応しており、大規模なナレッジグラフを処理できます
実装の詳細
データモデル
Neo4jにおけるナレッジグラフのストレージモデルは以下のとおりです。
(Entity:EntityType {name: "实体名称"})
(Entity)-[:HAS_OBSERVATION]->(Observation {content: "观察内容"})
(Entity1)-[:RELATION_TYPE]->(Entity2)
あいまい検索の実装
この実装では、Neo4jの全文検索機能とFuse.jsを組み合わせ、柔軟なエンティティ検索を実現しています。
- Neo4jの全文検索インデックスを使用して初期検索を行います
- Fuse.jsであいまいマッチング機能を追加します
- 検索結果には完全一致と部分一致が含まれ、関連性順に並べ替えられます
開発
環境設定
# 克隆仓库
git clone https://github.com/JovanHsu/mcp-neo4j-memory-server.git
cd mcp-neo4j-memory-server
# 安装依赖
pnpm install
# 构建项目
pnpm build
# 开发模式(使用MCP Inspector)
pnpm dev
テスト
# 运行测试
pnpm test
リリース
# 准备发布
npm version [patch|minor|major]
# 发布到NPM
npm publish
貢献ガイド
コードの提供、問題の報告、改善案の提案を歓迎します。以下の手順に従ってください。
- このリポジトリをフォークします
- 特性ブランチを作成します (
git checkout -b feature/amazing-feature) - 変更をコミットします (
git commit -m 'Add some amazing feature') - ブランチにプッシュします (
git push origin feature/amazing-feature) - Pull Requestを作成します
関連プロジェクト
ライセンス
本プロジェクトはMITライセンスのもとで提供されています。詳しくはLICENSEファイルをご覧ください。
お問い合わせ
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。