Neo4j MCP服务器

Neo4j MCP服务器是一个支持通过OAuth2或基本认证执行Cypher查询的数据库服务。

  • by dittertp
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 dittertp/neo4j-mcp

使用说明

Neo4j MCP服务器

此模型上下文协议 (MCP) 服务器允许在Neo4j数据库上执行密码查询。它支持通过OAuth2(客户端凭据流)或经典用户名和密码进行身份验证。

特性

  • execute_cypher: 执行密码查询,并以 JSON 格式返回结果。
  • 验证:
    • OAuth2支持使用 Bearer Token 对 Neo4j 进行身份验证。
    • 基本身份验证支持使用用户名和密码进行身份验证。

安装

  1. 存储库klonen
  2. 安装依赖关系:
    npm install
    
  3. 编译 TypeScript :
    npm run build
    

配置

服务器使用混合身份验证模型:

  1. **OAuth2(代理级别)**MCP 服务器在启动时向身份提供程序授权。这将作为代理访问服务器的安全层。
  2. 基本身份验证(数据库级别):与真正的联系 Neo4j社区版 用户名和密码。

环境变量(.env)

# Neo4j Verbindung (Basic Auth für Community Edition)
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=ihr-passwort

# Agenten-Autorisierung (OAuth2 Client Credentials via OIDC Discovery)
OAUTH_ISSUER_URL=https://deine-subdomain.onelogin.com/oidc/2
OAUTH_CLIENT_ID=ihr-client-id
OAUTH_CLIENT_SECRET=ihr-client-secret
OAUTH_SCOPE=neo4j

OIDC发现

服务器现在使用 OpenID连接发现你只需要 OAUTH_ISSUER_URL 指定 。服务器将自动查找令牌端点 {OAUTH_ISSUER_URL}/.well-known/openid-configuration.

实例 OAUTH_ISSUER_URL:

  • 一次登录: https://deine-subdomain.onelogin.com/oidc/2
  • 身份验证0: https://deine-domain.auth0.com/
  • Azure AD: https://login.microsoftonline.com/{tenant}/v2.0

远程使用(HTTP REST)

服务器现在通过标准的 HTTP 接口(通过 POST 的 JSON-RPC)作为远程服务运行。SSE被删除。

启动服务器

  1. 构建 build: npm run build
  2. 服务器启动 : node build/index.js

默认情况下,服务器监听端口 3000 (可通过环境变量进行配置) PORT).

API 终端

MCP 兼容的终端是: http://localhost:3000/mcp

OIDC发现支持

服务器现在会自动设置一个发现端点 http://localhost:3000/.well-known/openid-configuration 准备好了这反映了您的身份提供程序 (OneLogin) 的配置。这有助于现代代理自动检测服务器的身份验证需求。

通过调用工具的例子 curl (包括承运人代币):

# Holen Sie sich zuerst ein Token (Beispiel via curl vom IdP)
# TOKEN=$(curl -X POST OAUTH_TOKEN_URL -d "grant_type=client_credentials&client_id=...&client_secret=..." | jq -r .access_token)

curl -X POST http://localhost:3000/mcp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer DEIN_ACCESS_TOKEN" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "call_tool",
    "params": {
      "name": "execute_cypher",
      "arguments": {
        "query": "MATCH (n) RETURN count(n) as count"
      }
    }
  }'

工具

get_neo4j_schema

返回数据库结构(节点标签、关系类型及其属性)。这有助于代理更好地了解数据库。

execute_cypher

执行任何密码查询(读写)。

read_neo4j_cypher

执行写保护的密码查询。

write_neo4j_cypher

执行书面 cipher 查询。

密码工具参数:

  • query (string, required):要执行的密码查询。
  • parameters (object, optional):查询的参数。

GitHub操作

该项目包含一个GitHub工作流,每次推送 main分支会自动构建一个新的 Docker 映像并将其上传到 GitHub 容器注册表 (GHCR)。

图像名称

图像以以下名称提供: ghcr.io/<DEIN_GITHUB_USERNAME>/neo4j-mcp:latest

码头工人

您还可以将 MCP 服务器作为 Docker 容器运行。

1. 形象建设

docker build -t neo4j-mcp-server .

2. 容器启动

由于服务器需要环境变量,您应该在启动时传递这些变量,或者 .env使用文件。

用一个 .env文件 :

docker run -p 3000:3000 --env-file .env neo4j-mcp-server

直接通过命令行:

docker run -p 3000:3000 \
  -e NEO4J_URI=bolt://host.docker.internal:7687 \
  -e NEO4J_USER=neo4j \
  -e NEO4J_PASSWORD=ihr-passwort \
  -e OAUTH_ISSUER_URL=https://deine-subdomain.onelogin.com/oidc/2 \
  -e OAUTH_CLIENT_ID=ihr-client-id \
  -e OAUTH_CLIENT_SECRET=ihr-client-secret \
  neo4j-mcp-server

3.微Docker作曲(Empfohlen)

使用 Docker Compose 启动服务器最简单,因为 .env文件将自动加载。

docker-compose up -d

这将创建映像(如果尚未创建)并在后台启动容器。端口将自动从 .env (变量 PORT) 采用或使用标准 3000.

注意:如果Neo4j在您的主机上本地运行,请使用 host.docker.internal 而不是 localhost 为了 .env从容器中获取数据库。