io.github.neo4j-labs/neo4j-mcp-canary
OfficialNeo4j MCP Canary — カナリアが最初に飛び込むので、私たちは何が来るのかを知ることができる
Neo4j MCP Canary は、公式サーバーへの採用が検討される前に、新たに登場する機能を試したいお客様向けの、迅速に更新される実験的リリースです。
Neo4j 用の公式 Model Context Protocol (MCP) サーバーのソースをベースに構築されたこのバリアントは、実験を通じて潜在的な新機能を探求するためのものです。
ラボプロジェクトであるため、以下の点に注意してください:
サポート対象外です。
自身のリリース間や、公式の Neo4j MCP サーバーとの間で破壊的な変更が含まれる可能性があります。
使用前にテストする必要があります。
貢献は歓迎します — 特にこのカナリアチャンネルでは、常に新しいアイデアを受け付けています。
カナリアがお客様の環境で動作するとは想定しないでください。まずテストしてください。
前提条件
稼働中の Neo4j データベースインスタンス。選択肢には Aura、Neo4j Desktop、セルフマネージド があります。
Neo4j インスタンスに APOC プラグインがインストールされていること(必須 —
get-schemaはapoc.meta.schemaを使用します)。
⚠️ 既知の問題: Neo4j 5.26.18 には APOC のバグがあり、
get-schemaツールが失敗します。これは 5.26.19 以降で修正されています。5.26.18 を使用している場合は、アップグレードしてください。詳細は #136 を参照してください。
Related MCP server: FastMCP Production-Ready Server
起動時チェックと適応動作
サーバーは起動時に、環境が正しく構成されていることを確認するための事前チェックをいくつか実行します。
STDIO モード — 必須要件
STDIO モードでは、サーバーは以下を検証します。いずれかのチェックが失敗した場合(例:無効な設定、誤った認証情報、APOC の欠落)、サーバーは起動しません:
Neo4j インスタンスへの有効な接続。
クエリを実行できること。
APOC プラグインが存在すること。
HTTP モード — 検証はスキップ
HTTP モードでは、認証情報がリクエストごとの認証ヘッダーから取得されるため、起動時の検証チェックはスキップされます。サーバーは Neo4j に接続せずにすぐに起動します。唯一の例外は Query API モード です。このモードの最小バージョンチェックは、認証不要の GET のみを必要とし、リクエストごとの認証情報に依存しないため、両方のトランスポートモードで起動時に実行されます。
オプションの要件
オプションの依存関係が欠落している場合、サーバーは適応モードで起動します。たとえば、Graph Data Science (GDS) ライブラリが検出されない場合、サーバーは起動しますが、list-gds-procedures などの GDS に依存するツールは自動的に無効化されます。他のすべてのツールは引き続き利用可能です。
インストール(バイナリ)
リリース: https://github.com/neo4j-labs/neo4j-mcp-canary/releases
お使いの OS/アーキテクチャ用のアーカイブをダウンロードします。
解凍して、
neo4j-mcp-canaryをPATHに配置します。
Mac / Linux:
Mac では、バイナリを初めて実行しようとしたときに警告が表示される場合があります。その場合は、システム設定 → プライバシーとセキュリティ から承認してください。
chmod +x neo4j-mcp-canary
sudo mv neo4j-mcp-canary /usr/local/bin/Windows(PowerShell / cmd):
move neo4j-mcp-canary.exe C:\Windows\System32インストールを確認します:
neo4j-mcp-canary -vインストールされたバージョンが表示されます。
ソースからのビルド
Go 1.25.3+ が必要です(go.mod を参照)。
Task を使用して現在のプラットフォーム用にビルドします:
task buildこれにより bin/neo4j-mcp-canary が生成されます。Task を使用しない場合の同等のコマンドは次のとおりです:
go build -C cmd/neo4j-mcp -o ../../bin/macOS / Linux 向けのクロスコンパイル
GOOS/GOARCH を設定し、cgo を無効にしてクロスコンパイルします(コードベースは純粋な Go であるため、CGO_ENABLED=0 はターゲットマシン上で実行時依存関係のない完全に静的なバイナリを生成します):
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary_darwin_amd64
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary_darwin_arm64
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary_linux_amd64
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary_linux_arm64バイナリにバージョンを刻印するには(-v / --version)、ldflags のオーバーライドを渡します。これはリリースパイプラインがタグ付きビルドに対して行う処理です:
go build -C cmd/neo4j-mcp -o ../../dist/neo4j-mcp-canary \
-ldflags "-X 'main.Version=$(git rev-parse --short HEAD)'"これがない場合、Version は "development" にデフォルト設定され、NEO4J_TELEMETRY に関係なくテレメトリも無効になります(テレメトリ を参照)。
公式のマルチプラットフォームリリースアーカイブ(Windows を含む)は、.goreleaser.yaml に従って GoReleaser によってビルドされます。ローカルでビルドする代わりにこれらをダウンロードするには、インストール(バイナリ) を参照してください。
トランスポートモード
Neo4j MCP Canary サーバーは 2 つのトランスポートモードをサポートしています:
STDIO(デフォルト):デスクトップクライアント(Claude Desktop、VSCode)向けの、stdin/stdout を介した標準的な MCP 通信。
HTTP:Web ベースのクライアントやマルチテナントシナリオ向けに、リクエストごとの Bearer トークンまたは Basic 認証を備えた RESTful HTTP サーバー。標準の
Authorizationヘッダーを使用できない場合は、カスタムヘッダー名を設定できます。
主な違い
項目 | STDIO | HTTP |
起動時検証 | 必須 — サーバーは APOC、接続、クエリを検証 | スキップ — サーバーはすぐに起動 |
認証情報 | 環境変数で設定 | リクエストごとに Bearer トークンまたは Basic 認証ヘッダーで指定 |
テレメトリ | 起動時に Neo4j のバージョン、エディション、Cypher バージョンを収集 |
|
両モードの設定手順については、クライアントセットアップガイド を参照してください。
認証不要の MCP クライアントリクエスト
デフォルトでは、HTTP(S) トランスポートを使用する場合、MCP クライアントが認証なしで送信できるリクエストが 4 つあります。一部の統合(AWS AgentCore、AWS Gateway など)は、これを初期ヘルスチェックメカニズムとして利用しています:
pinginitializetools/listnotifications/initialize
これらが不要な場合は、以下の変数を使用して個別に認証を強制できます。
環境変数 | CLI フラグ | デフォルト | 目的 |
|
|
| 認証不要の ping ヘルスチェックを許可 |
|
|
| 認証不要のツール一覧取得を許可 |
|
|
| 認証不要の initialize を許可 |
|
|
| 認証不要の |
TLS/HTTPS 設定
HTTP トランスポートを使用する場合、以下の変数を使用して安全な通信のための TLS を有効にします。
環境変数 | CLI フラグ | デフォルト | 目的 |
|
|
| TLS/HTTPS を有効にする |
|
| — | TLS 証明書へのパス(TLS 使用時に必須) |
|
| — | TLS 秘密鍵へのパス(TLS 使用時に必須) |
|
| TLS 有効時は | HTTP サーバーのポート |
|
|
| 認証情報を読み取るヘッダー名 |
セキュリティ設定
最小 TLS バージョン: TLS 1.2(利用可能な場合は TLS 1.3 がネゴシエーションされます)
暗号スイート: Go の安全なデフォルト暗号スイート
デフォルトポート: TLS が有効な場合は自動的に 443 を使用
例
export NEO4J_URI="bolt://localhost:7687"
export NEO4J_TRANSPORT_MODE="http"
export NEO4J_MCP_HTTP_TLS_ENABLED="true"
export NEO4J_MCP_HTTP_TLS_CERT_FILE="/path/to/cert.pem"
export NEO4J_MCP_HTTP_TLS_KEY_FILE="/path/to/key.pem"
neo4j-mcp-canary
# Server listens on https://127.0.0.1:443 by default本番環境での使用: 本番環境へのデプロイには、信頼できる CA(Let's Encrypt、組織の CA など)の証明書を使用してください。
証明書の生成、TLS テスト、本番環境へのデプロイの詳細な手順については、CONTRIBUTING.md を参照してください。
設定オプション
neo4j-mcp-canary サーバーは、環境変数、CLI フラグ、および/またはオプションの設定ファイルで構成されます。CLI フラグは環境変数よりも優先され、環境変数はオプションの設定ファイルよりも優先されます。
環境変数
コアの接続と動作:
環境変数 | デフォルト | 目的 |
| — | Neo4j 接続 URI(必須) |
| — | データベースのユーザー名(STDIO モードでは必須。HTTP モードでは未設定である必要があります) |
| — | データベースのパスワード(STDIO モードでは必須。HTTP モードでは未設定である必要があります) |
|
| データベース名 |
|
|
|
|
| 匿名テレメトリを有効/無効にする |
|
| スキーマ推論時に APOC が検査するラベルあたりのノード数 |
|
|
|
|
|
|
|
| LLM クライアントに送信されるツール応答形式: |
|
|
|
Bolt の代わりに Query API 経由で接続する
NEO4J_URI のスキームによって、サーバーが Neo4j との通信に使用するワイヤプロトコルが決まります。別途フラグは必要ありません:
bolt://、bolt+s://、neo4j://、neo4j+s://など → Bolt ドライバー(デフォルト、動作は変更なし)。http://またはhttps://→ Neo4j Query API、Neo4j の HTTP ベースのクエリインターフェース。HTTP のみを公開するデプロイや、Bolt を使用しない方がよい場合に便利です。
Query API モードには、Neo4j 2026.07 以降(カレンダーバージョン形式のリリース)、または 5.27-aura 以降(クラシックバージョン形式の Aura リリースのみ。-aura 接尾辞のない素のクラシックバージョンはサポートされません)が必要です。この下限は、Query API 自体の一般提供開始(2026.06)より 1 リリース先です。read-cypher の書き込みクエリ拒否は、クエリ応答内の queryType フィールドに依存しますが、Neo4j がこれを導入したのは 2026.07 になってからです。2026.06 のサーバーには、クエリを実行前に読み取り専用として分類するための信頼できるシグナルがありません。サーバーは起動時に、接続先インスタンスが報告するバージョンをこの下限と照合し(ベース URI への未認証 GET 経由)、古すぎる場合は、検出したバージョンと必要な最小バージョンを示すエラーとともに起動を拒否します。
NEO4J_USERNAME/NEO4J_PASSWORD とリクエストごとの Basic/Bearer 認証情報は、Query API モードでも Bolt の場合と同様に機能します。トランスポートモードと認証方法(HTTP モード)を参照してください。
Cypher 実行の保護機能(Cypher 実行の保護機能を参照):
環境変数 | デフォルト | 目的 |
|
|
|
|
| 応答エンベロープの呼び出しごとのバイト上限(~900 KB)。 |
|
| 実行タイムアウト(秒)。 |
|
| EXPLAIN 時のプランナー見積もりがこの値を超えると |
HTTP トランスポート、TLS、認証(上記の表を参照)。
CLI フラグ
CLI フラグを使用して、任意の環境変数を上書きできます:
neo4j-mcp-canary \
--neo4j-uri "bolt://localhost:7687" \
--neo4j-username "neo4j" \
--neo4j-password "password" \
--neo4j-database "neo4j" \
--neo4j-read-only false \
--neo4j-telemetry true利用可能なフラグ:
接続と動作
--neo4j-uri—NEO4J_URIを上書き--neo4j-username—NEO4J_USERNAMEを上書き--neo4j-password—NEO4J_PASSWORDを上書き--neo4j-database—NEO4J_DATABASEを上書き--neo4j-read-only—NEO4J_READ_ONLYを上書き(true/false)--neo4j-telemetry—NEO4J_TELEMETRYを上書き(true/false)--neo4j-schema-sample-size—NEO4J_SCHEMA_SAMPLE_SIZEを上書き--neo4j-output-format—NEO4J_OUTPUT_FORMATを上書き(json/toon)
Cypher 実行の保護機能
--neo4j-cypher-max-rows—NEO4J_CYPHER_MAX_ROWSを上書き(0で無効)--neo4j-cypher-max-bytes—NEO4J_CYPHER_MAX_BYTESを上書き(0で無効)--neo4j-cypher-timeout—NEO4J_CYPHER_TIMEOUTを上書き(秒。0で無効)--neo4j-cypher-max-estimated-rows—NEO4J_CYPHER_MAX_ESTIMATED_ROWSを上書き(0で無効)
トランスポート / HTTP
--neo4j-transport-mode—stdioまたはhttp--neo4j-http-host—NEO4J_MCP_HTTP_HOSTを上書き--neo4j-http-port—NEO4J_MCP_HTTP_PORTを上書き--neo4j-http-allowed-origins—NEO4J_MCP_HTTP_ALLOWED_ORIGINSを上書き(カンマ区切りの CORS オリジン)--neo4j-http-tls-enabled—NEO4J_MCP_HTTP_TLS_ENABLEDを上書き--neo4j-http-tls-cert-file—NEO4J_MCP_HTTP_TLS_CERT_FILEを上書き--neo4j-http-tls-key-file—NEO4J_MCP_HTTP_TLS_KEY_FILEを上書き--neo4j-http-auth-header-name—NEO4J_HTTP_AUTH_HEADER_NAMEを上書き--neo4j-http-allow-unauthenticated-ping—NEO4J_HTTP_ALLOW_UNAUTHENTICATED_PINGを上書き--neo4j-http-allow-unauthenticated-tools-list—NEO4J_HTTP_ALLOW_UNAUTHENTICATED_TOOLS_LISTを上書き--neo4j-http-allow-unauthenticated-initialize—NEO4J_HTTP_ALLOW_UNAUTHENTICATED_INITIALIZEを上書き--neo4j-http-allow-unauthenticated-notifications-initialize—NEO4J_HTTP_ALLOW_UNAUTHENTICATED_NOTIFICATIONS_INITIALIZEを上書き
説明付きの完全な一覧を表示するには、neo4j-mcp-canary --help を実行してください。
設定ファイル
環境変数に対する優先度が最も低い代替手段として、neo4j-mcp-canary はオプションの JSON または YAML ファイルから設定を読み取ることができます:
neo4j-mcp-canary --config-file /etc/neo4j-mcp/config.yaml
# or
NEO4J_CONFIG_FILE=/etc/neo4j-mcp/config.yaml neo4j-mcp-canaryキーは、対応する環境変数を小文字にした形式です:
neo4j_uri: bolt://localhost:7687
neo4j_username: neo4j
neo4j_password: password
neo4j_read_only: false
neo4j_transport_mode: http
neo4j_http_tls_enabled: true
neo4j_cypher_max_rows: 500同等の JSON も受け付けられます(.json 拡張子)。サポートされるのはスカラー値(文字列、数値、ブール値)のみで、ネストしたオブジェクトやリストは起動エラーになります。CLI フラグまたは環境変数の値は常に設定ファイルより優先されます。読み取りまたは解析に失敗した --config-file は起動エラーになります。
サーバーに新しい設定パラメータを追加する(環境変数 + CLI フラグ + 設定ファイルのキーを一度に)には、internal/config/schema.go の fields スライスに 1 エントリを追加します。形式については、そのファイルの doc コメントを参照してください。
応答形式(JSON と TOON)
ツールの応答(read-cypher、write-cypher、get-schema、list-gds-procedures)は、デフォルトでは JSON でレンダリングされます。NEO4J_OUTPUT_FORMAT(または --neo4j-output-format)を toon に設定すると、代わりに TOON(Token-Oriented Object Notation)でレンダリングされます。これは、JSON と比較して LLM のトークン使用量を削減する、コンパクトでありながら人間が読める形式で、特にこれらのツールが返す表形式の行形状に適しています:
neo4j-mcp-canary --neo4j-output-format toon
# or
NEO4J_OUTPUT_FORMAT=toon neo4j-mcp-canaryread-cypher の結果を JSON で表したもの:
{
"rows": [
{ "name": "Alice", "age": 30 },
{ "name": "Bob", "age": 25 }
],
"rowCount": 2,
"truncated": false
}同じ結果を TOON で表したもの:
rowCount: 2
rows[2]{age,name}:
30,Alice
25,Bob
truncated: false無効な値は、NEO4J_LOG_FORMAT と同様に、stderr への警告とともに json にフォールバックします。
Cypher 実行の保護機能
read-cypher と write-cypher は、4 層の保護機能によって守られており、これらが連携して、過剰に実行しようとする LLM が MCP トランスポートをハングさせたり、データベースを枯渇させたりするのを防ぎます。各層は異なる障害モードを捕捉し、全体として多層防御として機能します。
層 | 設定 | デフォルト | 発動タイミング |
プランナー見積もり |
|
| 実行前 — プランナーのルート |
実行タイムアウト |
|
| 実行中 — 期限を過ぎるとクエリをキャンセル |
行数上限 |
|
| ストリーミング中 — 行数制限で応答を切り詰め |
バイト上限 |
|
| ストリーミング中 — エンベロープが ~900 KB を超えると応答を切り詰め |
任意の値を 0 に設定すると、その特定の層が無効になります。
切り詰めエンベロープ
行数上限またはバイト上限のいずれかが発動すると、ツールはすでに収集した行と切り詰めエンベロープを返します:
{
"rows": [ /* ... */ ],
"rowCount": 1000,
"truncated": true,
"truncationReason": "rows",
"maxRows": 1000,
"hint": "Results were truncated at 1000 rows. Add a LIMIT clause or a more selective filter and retry for a complete result."
}呼び出し元(LLM エージェントを含む)は、truncated / truncationReason / hint をプログラムで読み取り、不透明なトランスポートレベルの失敗を見る代わりに、より厳密なクエリで再試行できます。
タイムアウトとキャンセルのエラー
NEO4J_CYPHER_TIMEOUT が発動すると、ツールは設定された制限を明示し、ツール固有の対処法を提示する分類済みエラーを返します(read-cypher では可変長パターンのバインド、WHERE フィルターの追加、または LIMIT。write-cypher ではバッチサイズの削減、MATCH の絞り込み、または apoc.periodic.iterate の使用)。呼び出し元によるキャンセル(タイムアウトとは区別)は、対処法のガイダンスなしに簡潔な cancelled メッセージとして表面化します。
プランナー見積もりによる拒否
プランナー見積もりガードは、クエリの実行前に EXPLAIN プランのルート EstimatedRows を読み取ります。Neo4j は LIMIT をルート見積もりに組み込むため、正当な MATCH ... LIMIT 100 クエリは ~100 の見積もりで問題なく通過しますが、数百万行のラベルに対する素の MATCH は、開始前に拒否されます。
認証方法(HTTP モード)
HTTP トランスポートモードを使用する場合、Neo4j MCP Canary サーバーは、さまざまなデプロイシナリオに対応するために 2 つの認証方法をサポートしています。
Bearer トークン認証
Bearer トークン認証により、ID 管理に SSO/OAuth/OIDC を使用する Neo4j Enterprise Edition および Neo4j Aura 環境とのシームレスな統合が可能になります。この方法は、以下に最適です:
一元化された ID プロバイダー(Okta、Azure AD など)を使用するエンタープライズデプロイ
SSO が設定された Neo4j Aura データベース
OAuth 2.0 準拠を必要とする組織
多要素認証のシナリオ
例:
curl -X POST http://localhost:8080/mcp \
-H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'Bearer トークンは ID プロバイダーから取得され、認証のために Neo4j に渡されます。MCP サーバーはパススルーとして機能し、トークンを Neo4j の認証システムに転送します。
Basic 認証
従来のユーザー名/パスワード認証で、以下に適しています:
Neo4j Community Edition
開発環境およびテスト環境
SSO を使用しない直接のデータベース認証情報
例:
curl -X POST http://localhost:8080/mcp \
-u neo4j:password \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'クライアント設定
MCP クライアント(VSCode、Claude Desktop など)で Neo4j MCP Canary サーバーを使用するように設定するには、以下を参照してください:
📘 クライアントセットアップガイド – STDIO モードと HTTP モードの完全な設定。
ツールと使用方法
提供されるツール:
ツール | ReadOnly | 目的 | 備考 |
|
| ラベル、リレーションシップタイプ、プロパティキーをイントロスペクト |
|
|
| 任意の読み取り専用 Cypher を実行 | 書き込み、スキーマ/管理 DDL、 |
|
| 任意の Cypher を実行(書き込みモード) | 注意: LLM が生成したクエリは害を及ぼす可能性があります。開発環境でのみ使用してください。 |
|
| Neo4j インスタンスで利用可能な GDS プロシージャを一覧表示 | GDS がインストールされていない場合は自動的に無効になります。 |
|
| MCP サーバー自体に関する自由記述のフィードバックを送信 | サーバー(ツール、動作、ドキュメント)に関するフィードバック用。Cypher/データベースの問題は対象外。300 文字まで。フィードバックを参照。 |
読み取り専用モードフラグ
NEO4J_READ_ONLY=true を設定すると読み取り専用モードが有効になります(受け入れられる値: true / false。デフォルト: false)。
CLI フラグを使用することもできます:
neo4j-mcp-canary \
--neo4j-uri "bolt://localhost:7687" \
--neo4j-username "neo4j" \
--neo4j-password "password" \
--neo4j-read-only true有効にすると、書き込みツール(例: write-cypher)はクライアントに公開されません。
クエリの分類
read-cypher は、実行前に呼び出し元のクエリを読み取りまたは書き込みとして分類するために、クエリの先頭に EXPLAIN を付加します。結果:
書き込み操作(
CREATE、MERGE、DELETE、SET、REMOVEなど)—write-cypherへの誘導メッセージ付きで拒否されます。スキーマ/DDL操作(
CREATE INDEX、DROP CONSTRAINTなど)— 同じメッセージで拒否されます。管理コマンド(
SHOW USERS、SHOW DATABASESなど)— 同じメッセージで拒否されます。EXPLAINプレフィックス — プランナー見積もりガードと実行タイムアウトによって暴走クエリ保護がすでに提供されていること、およびプロファイリングされたプランについてはwrite-cypherを参照することを示す専用メッセージ付きで拒否されます。PROFILEプレフィックス —write-cypherへの誘導メッセージ付きで拒否されます。読み取り専用の
SHOWコマンド(SHOW INDEXES、SHOW CONSTRAINTS、SHOW PROCEDURES、SHOW FUNCTIONS)— 許可されます。
ラップされたクエリが構文エラーを生成した場合、サーバーは返却前にエラーテキスト、列オフセット、キャレットの位置合わせから内部の EXPLAIN プレフィックスを除去します。これにより、呼び出し元の元のクエリが直接送信されたかのようにエラーが読み取れます。
read-cypher / write-cypher のレスポンス形式
ドライバーの型は、Cypher の慣例に合わせた camelCase の JSON 形式でラップされます:
ノード:
{ "elementId": "...", "labels": [...], "properties": {...} }リレーションシップ:
{ "elementId": "...", "startElementId": "...", "endElementId": "...", "type": "...", "properties": {...} }パス:
{ "nodes": [...], "relationships": [...] }ポイント:
{ "x": ..., "y": ..., "srid": ... }(3D の場合はzも含む)Date / Time / DateTime / LocalTime / LocalDateTime / Duration: ISO 8601 文字列
非推奨の数値型 id / startId / endId 識別子は返却されません — elementId / startElementId / endElementId のみが返される識別子です。
フィードバック
give-feedback を使用すると、エージェントは MCP サーバー自体に関する自由形式のフィードバック(肯定的または否定的)を、単一の feedback 文字列引数として送信できます。文字数は 300 文字に制限されています(公開されているツールスキーマとハンドラーの両方で強制されます。クライアントが送信前にスキーマを検証しない場合に備えています)。これはサーバーのツール、動作、またはドキュメントに関するフィードバック用であり、Cypher/データベースエラーの報告用ではありません。
フィードバックはサーバーの他のテレメトリとともに Mixpanel イベントとして送信されるため、テレメトリが有効な場合にのみ記録されます(テレメトリ を参照)— いずれの場合もツール呼び出し自体は常に成功します。
使用ガイダンス
カナリアテストから得られた、LLM(または人間)が read-cypher を最大限に活用するための教訓:
データベース内で集約する。
count、sum、avg、collect、reduce、percentileCont、stDevなどの集約関数は 1 行に集約され、行数上限の影響を受けません。UNWIND range(1, 50000) AS i RETURN sum(i)のようなクエリは問題なく実行されます。同じ範囲を 1 行ずつストリーミングすると、行数上限で切り詰められます。探索的なクエリには常に
LIMITを使用する。 行数上限は裸のMATCHの戻り値を切り詰めます。切り詰めエンベロープのhintフィールドは、呼び出し元にLIMITの追加を指示します。サーバーが課すものよりも、自分で選んだLIMITを優先してください。幅広いノードでは
RETURNプロジェクションを絞り込む。 レコードが多くのプロパティを持つ場合(例: 19 フィールドを持つ完全な Company ノード)、行数上限の前にバイト上限が発動します。ノード全体ではなく、必要なフィールドのみを返してください(RETURN c.name, c.companyNumber)。ネストされたマップを含むパラメータを使用する。 パラメータプレースホルダー(
$name)はparamsオブジェクトからバインドされます。ネストされたアクセスも機能します($config.thresholds.pr)。必須パラメータが欠落している場合は明確なParameterMissingエラーが生成され、余分なパラメータは黙って無視されます。比較では型を明示する。
t.amount > "foo"のような型をまたぐ比較は null と評価され、すべてを黙ってフィルタリングします — エラーは発生せず、空の結果セットになるだけです。結果の形状に驚いた場合は、呼び出し側で受信パラメータの型を検証してください。SHOW INDEXES/SHOW CONSTRAINTSは許可されています。 インデックスに依存するクエリを書く前や、マッチが遅い理由のデバッグに役立ちます。EXPLAINとPROFILEはread-cypherでは公開されていません。 暴走クエリ保護はプランナー見積もりガードと実行タイムアウトによってすでに処理されています。実行時統計を含むプロファイリングされたプランが必要な場合は、PROFILEを付けてwrite-cypherを使用してください。パスを返すときはペイロードの重複に注意する。
RETURN p, nodes(p), relationships(p)はシリアライズされたペイロードを 3 倍にします。パスまたはその構成要素のいずれかを返し、両方は返さないでください。長時間実行クエリは分類されたエラーを返します。
NEO4J_CYPHER_TIMEOUTが発動すると、エラーはタイムアウト値を示し、ドライバーからの生のcontext deadline exceededの代わりに改善策(可変長パターンのバインド、WHEREフィルターの追加、LIMITの使用)を提案します。欠落データには
OPTIONAL MATCHを使用する。 一部の ID が存在しない可能性がある ID による検索では、OPTIONAL MATCHは行を落とす代わりに欠落に対して null を返します — バッチルックアップに適しています。デフォルト値は調整済みであり、恣意的ではありません。
1000行 /約900 KB/30秒/1Mのプランナー見積もりは、圧倒的多数の探索的および本番クエリをカバーします。バルクエクスポートのワークロードでは増やし、高トラフィックのエージェントデプロイメントにサービスを提供する場合は減らしてください。
自然言語プロンプトの例
Copilot またはその他の MCP クライアントで試すプロンプト:
「私の Neo4j インスタンスには何が含まれていますか?すべてのノードラベル、リレーションシップタイプ、プロパティキーを一覧表示してください。」
「すべての Person ノードを検索し、それらの上位リレーションシップを 50 件に制限して表示してください。」
「データベースに存在するインデックスと制約は何ですか?」
「トランザクショングラフを要約してください: 総数、平均金額、PageRank による上位 5 顧客。」
セキュリティのヒント
探索には制限付きの Neo4j ユーザーを使用してください。
本番データベースで実行する前に、LLM が生成した Cypher をレビューしてください。
グラフを変更すべきでないデプロイメントでは、
NEO4J_READ_ONLY=trueを維持してください。変更する具体的な理由がない限り、Cypher の安全装置はデフォルトのままにしてください。
ロギング
サーバーは、複数のログレベルと出力形式をサポートする構造化ロギングを使用します。
設定
ログレベル(NEO4J_LOG_LEVEL、デフォルト: info)
詳細度を制御します。すべての MCP ログレベル をサポートします: debug、info、notice、warning、error、critical、alert、emergency。
ログ形式(NEO4J_LOG_FORMAT、デフォルト: text)
text— 人間が読み取り可能(デフォルト)json— 構造化 JSON(ログ集約に便利)
テレメトリ
デフォルトでは、neo4j-mcp-canary は製品改善のために匿名の使用データを収集します。これには、使用されているツール、オペレーティングシステム、CPU アーキテクチャなどの情報が含まれます。個人情報や機密情報は収集されません。
テレメトリを無効にするには、NEO4J_TELEMETRY=false を設定します(受け入れ値: true / false。デフォルト: true)。--neo4j-telemetry CLI フラグも使用できます。
ドキュメント
📘 クライアントセットアップガイド – VSCode、Claude Desktop、その他の MCP クライアント(STDIO および HTTP モード)の設定 📚 コントリビューティングガイド – コントリビューションのワークフロー、開発環境、モックとテスト
問題 / フィードバック: 再現の詳細を含む GitHub イシューを開いてください(機密データは省略してください)。
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
A MCP server built for developers enabling Git based project management with project and personal…
MCP server for Appcircle mobile CI/CD platform.
MCP server for Product Management
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server that enables LLMs to perform semantic and fulltext searches within Neo4j while executing complex, search-augmented Cypher queries for GraphRAG applications. It provides tools for database schema discovery and supports multi-provider embeddings to facilitate advanced graph traversals.52MIT
- FlicenseNot gradedqualityDmaintenanceA production-ready MCP server that enables users to interact with Neo4j databases through health checks and Cypher query tools. It features a structured, containerized architecture with built-in support for Azure deployments and environment-driven configuration.-
- AlicenseNot gradedqualityCmaintenanceMCP server for Neo4j graph database operations, enabling Cypher queries, node/relationship management, and schema discovery.1BSD 3-Clause
- AlicenseNot gradedqualityCmaintenanceProduction-ready MCP server for Neo4j graph databases, enabling natural language to Cypher query translation with enterprise security and async performance.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/neo4j-labs/neo4j-mcp-canary'
If you have feedback or need assistance with the MCP directory API, please join our Discord server