简介
Neo4j MCP 为 AI 助手和基于大语言模型的工具提供对您的 Neo4j 图数据库的直接、结构化访问。通过实现模型上下文协议(Model Context Protocol,MCP),它充当任意兼容 MCP 的客户端(如 Claude、Cursor 或带有 MCP 支持的 VS Code)与您的 Neo4j 实例之间的桥梁。
Neo4j MCP 适用于
-
在开发期间希望以对话方式查询 Neo4j 的图驱动 AI 应用的开发者或原型构建者。
-
希望在不具备深度 Cypher® 专业知识的情况下探索图数据的数据科学家和分析师。
-
部署共享 AI 工具的平台和基础设施团队,这些工具需要对 Neo4j 实例进行结构化、可审计的访问。
-
在多代理系统中将 Neo4j 作为知识源或推理后端进行集成的 AI 应用构建者。
Neo4j MCP 使 AI 代理能够
-
探索图模式——发现节点标签、关系类型和属性键,让 AI 在不了解数据模型的前提下能够进行推理。
-
运行 Cypher 查询——根据自然语言提示执行、读取和写入数据库查询。
-
检查和分析数据——检索节点、关系和路径,以回答问题、生成摘要或供其他工作流使用。
先决条件
-
一个已运行的 Neo4j 数据库实例。可选项包括 Aura、neo4j-desktop 或自行托管。
-
Neo4j 实例中已安装的 APOC 插件。
-
任意兼容 MCP 的客户端,例如带有 MCP 支持的 VSCode。
使用示例
快速开始(Shell)
运行服务器的最小代码片段。
STDIO 模式
# STDIO mode
export NEO4J_URI="bolt://:7687"
export NEO4J_USERNAME="neo4j"
export NEO4J_PASSWORD="password"
# Optional: read-only mode
export NEO4J_READ_ONLY="true"
neo4j-mcp
HTTP 模式
# HTTP mode (no username/password env vars)
export NEO4J_URI="bolt://:7687"
export NEO4J_MCP_TRANSPORT="http"
export NEO4J_MCP_HTTP_HOST="127.0.0.1"
export NEO4J_MCP_HTTP_PORT="8080"
neo4j-mcp
STDIO 模式示例
仅使用环境变量运行(在 MCP 客户端中配置)
neo4j-mcp
使用命令行标志运行
neo4j-mcp --neo4j-uri bolt://:7687 \
--neo4j-username neo4j \
--neo4j-password mypassword \
--neo4j-database neo4j
环境变量与标志混合使用(标志会覆盖环境变量)
# Uses NEO4J_URI from environment, but overrides other parameters
neo4j-mcp --neo4j-username admin \
--neo4j-password adminpass \
--neo4j-database production
HTTP 模式示例
使用环境变量运行 HTTP 模式
export NEO4J_URI="bolt://:7687"
export NEO4J_MCP_TRANSPORT="http"
export NEO4J_MCP_HTTP_HOST="127.0.0.1"
export NEO4J_MCP_HTTP_PORT="8080"
neo4j-mcp
启用 CORS 的 HTTP 模式运行方式
export NEO4J_URI="bolt://:7687"
export NEO4J_MCP_TRANSPORT="http"
export NEO4J_MCP_HTTP_ALLOWED_ORIGINS="https://:3000,https://app.example.com"
neo4j-mcp
启用 TLS 的 HTTP 模式运行方式
neo4j-mcp --neo4j-uri bolt://:7687 \
--neo4j-transport-mode http \
--neo4j-http-tls-enabled true \
--neo4j-http-tls-cert-file /path/to/cert.pem \
--neo4j-http-tls-key-file /path/to/key.pem \
--neo4j-http-port 8443
|
在 HTTP 模式下,认证凭据通过每个请求的 Basic Authentication 头提供,而不是通过环境变量或命令行标志。每个 HTTP 请求必须包含一个 |