MCP Neo4j Server について
MCP Neo4j Serverは、Neo4jグラフデータベースをClaude DesktopなどのMCPクライアントに接続し、自然言語での操作を可能にします。Neo4j Enterpriseのデータベース選択とパラメーター付きCypherクエリに対応しています。
主な機能
- 01Cypherクエリの実行
- 02プロパティ付きノードの作成
- 03方向を指定したリレーションの作成
- 04Neo4j Enterpriseデータベースの選択
- 05クエリ結果の構造化出力
活用シーン
- 01自然言語でグラフデータを検索
- 02グラフへのノードやリレーションの追加
- 03指定したNeo4j Enterpriseデータベースへの接続
MCP 対応
MCP サーバーは、Neo4jのクエリ、ノード作成、リレーション作成のツールをクライアントに公開します。クライアントはこれらのツールでグラフデータを読み書きできます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Neo4j サーバー
Neo4j グラフデータベースと Claude Desktop の間の統合を提供する MCP サーバーです。自然言語でのやり取りを通じてグラフデータベースの操作を可能にします。
クイックスタート
この MCP サーバーは npx を使用して直接実行できます:
npx @alanse/mcp-neo4j
または、Claude Desktop の設定に追加します:
{
"mcpServers": {
"neo4j": {
"command": "npx",
"args": ["@alanse/mcp-neo4j-server"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "your-password",
"NEO4J_DATABASE": "neo4j"
}
}
}
}
機能
このサーバーは、Neo4j データベースを操作するためのツールを提供します:
Neo4j Enterprise のサポート
このサーバーは、Neo4j Enterprise Edition の特定のデータベースへの接続をサポートするようになりました。デフォルトでは「neo4j」データベースに接続しますが、NEO4J_DATABASE 環境変数を使用して別のデータベースを指定できます。
ツール
-
execute_query: Neo4j データベース上で Cypher クエリを実行します- すべての種類の Cypher クエリ (READ、CREATE、UPDATE、DELETE) をサポートします
- クエリ結果を構造化された形式で返します
- インジェクション攻撃を防ぐためにパラメータを渡すことができます
-
create_node: グラフデータベースに新しいノードを作成します- ノードのラベルとプロパティを指定します
- 作成されたノードをその内部 ID とともに返します
- プロパティにはすべての Neo4j データ型をサポートします
-
create_relationship: 2 つの既存のノード間にリレーションシップを作成します- リレーションシップの種類と方向を定義します
- リレーションシップにプロパティを追加します
- ソースノードとターゲットノードのノード ID が必要です
インストール
Smithery 経由でのインストール
Smithery 経由で Claude Desktop 用の MCP Neo4j サーバーを自動的にインストールするには:
npx -y @smithery/cli install @alanse/mcp-neo4j-server --client claude
開発用
- リポジトリをクローンします:
git clone https://github.com/da-okazaki/mcp-neo4j-server.git
cd mcp-neo4j-server
- 依存関係をインストールします:
npm install
- プロジェクトをビルドします:
npm run build
設定
サーバーには以下の環境変数が必要です:
NEO4J_URI: Neo4j データベースの URI (デフォルト: bolt://localhost:7687)NEO4J_USERNAME: Neo4j のユーザー名 (デフォルト: neo4j)NEO4J_PASSWORD: Neo4j のパスワード (必須)NEO4J_DATABASE: Neo4j データベース名 (デフォルト: neo4j) - Neo4j Enterprise の特定のデータベースに接続するにはこれを使用します
使用例
自然言語を使用して Neo4j データベースを操作する方法の例を以下に示します:
特定のデータベースへの接続
複数のデータベースを持つ Neo4j Enterprise ユーザーの場合、接続するデータベースを指定できます:
{
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "your-password",
"NEO4J_DATABASE": "myCustomDatabase"
}
}
これは、デフォルトの「neo4j」データベースではなく「myCustomDatabase」に接続します。
データのクエリ
次のような質問ができます:
- 「Sales 部門のすべての従業員を表示して」
- 「最も古い顧客トップ 5 を見つけて」
- 「過去 1 か月に 3 つ以上の製品を購入したのは誰?」
例:
User: "Show me all employees in the Sales department"
Claude: Let me query the database for Sales department employees.
[Executes query internally: MATCH (e:Employee)-[:WORKS_IN]->(d:Department {name: 'Sales'}) RETURN e.name, e.position]
Result:
- John Smith (Sales Manager)
- Sarah Johnson (Sales Representative)
- Mike Brown (Account Executive)
データの作成
次のような指示を出すことができます:
- 「John Doe という名前の 30 歳の新しい人物を追加して」
- 「'Premium Coffee' という名前で価格 $24.99 の製品を作成して」
- 「'Research & Development' という名前の新しい部門を追加して」
例:
User: "Add a new person named John Doe who is 30 years old"
Claude: I'll create a new Person node with the provided information.
[Creates node internally with label 'Person' and properties {name: 'John Doe', age: 30}]
Result: Created new person node with ID: 123
リレーションシップの作成
次のようなリレーションシップを要求できます:
- 「John Doe と Jane Smith を友達にして」
- 「製品 A を製品 B のコンポーネントとして設定して」
- 「John Doe を Sales 部門に割り当てて」
例:
User: "Make John Doe friends with Jane Smith"
Claude: I'll create a friendship relationship between these two people.
[Creates relationship internally: MATCH (a:Person {name: 'John Doe'}), (b:Person {name: 'Jane Smith'})
CREATE (a)-[:FRIENDS_WITH {since: '2024-01-05'}]->(b)]
Result: Created friendship relationship between John Doe and Jane Smith
複雑な操作
自然言語でより複雑な操作を実行できます:
- 「ニューヨークに住む顧客が購入したすべての製品を見つけて」
- 「John Doe の友達の友達を表示して」
- 「各部門の従業員の平均年齢を計算して」
例:
User: "Find all products purchased by customers who live in New York"
Claude: I'll query the database for this information.
[Executes query internally:
MATCH (c:Customer {city: 'New York'})-[:PURCHASED]->(p:Product)
RETURN c.name, collect(p.name) as products]
Result:
- Alice Wilson: [Premium Coffee, Tea Set, Cookies]
- Bob Miller: [Premium Coffee, Water Bottle]
テスト
テストスイートを実行します:
npm test
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。