Neo4j Aura数据库管理工具

一个用于通过Neo4j Aura API创建、监控和管理Neo4j Aura数据库实例的MCP服务器实现。

  • by neo4j-contrib
  • Python
  • 本地部署
  • 989 星标
  • 更新于
在 GitHub 查看 neo4j-contrib/mcp-neo4j

使用说明

🚀💖☁️ Neo4j Aura数据库管理器MCP服务器

mcp名称:io.github.neo4j-contrib/mcp-neo4j-aura-manager

🌟 概述

一种模型上下文协议(MCP)服务器实现,通过Neo4j Aura API提供管理Neo4j Aura数据库实例的工具。

此服务器允许您直接通过Claude创建、监视和管理Neo4j Aura实例,从而轻松配置和维护您的图形数据库基础设施。

🔑 认证

使用Neo4j Aura API进行身份验证需要:

  • 客户端ID
  • 客户端密钥

您可以从Neo4j Aura控制台获取这些凭据,请参阅 Aura API文档

这里是 API规范

📦 组件

🔧 工具

服务器提供以下核心工具:

🛠️ 实例管理

  • list_instances

    • 列出所有Neo4j Aura数据库实例
    • 无需输入
    • 返回:所有实例及其详细信息的列表
  • get_instance_details

    • 按ID获取特定实例或多个实例的详细信息
    • 输入:
      • instance_ids (字符串或数组):要检索的实例的ID,或实例ID数组
    • 返回:实例的详细信息
  • get_instance_by_name

    • 按名称查找实例
    • 输入:
      • name (string):要查找的实例的名称
    • 返回:如果找到实例详细信息
  • create_instance

    • 创建新的Neo4j Aura数据库实例
    • 输入:
      • tenant_id (string):将创建实例的租户/项目的ID
      • name (string):新实例的名称
      • memory (整数):内存分配(GB)
      • region (string):实例的区域(例如“us-east-1”)
      • version (字符串):Neo4j版本(例如“5.15”)
      • type (字符串,可选):实例类型(企业或专业)
      • vector_optimized (boolean,可选):实例是否针对向量操作进行了优化
    • 返回:已创建实例详细信息
  • update_instance_name

    • 更新实例的名称
    • 输入:
      • instance_id (string):要更新的实例的ID
      • name (string):实例的新名称
    • 返回:已更新实例详细信息
  • update_instance_memory

    • 更新实例的内存分配
    • 输入:
      • instance_id (string):要更新的实例的ID
      • memory (整数):以GB为单位的新内存分配
    • 返回:已更新实例详细信息
  • update_instance_vector_optimization

    • 更新实例的向量优化设置
    • 输入:
      • instance_id (string):要更新的实例的ID
      • vector_optimized (boolean):实例是否应针对向量操作进行优化
    • 返回:已更新实例详细信息
  • pause_instance

    • 暂停数据库实例
    • 输入:
      • instance_id (string):要暂停的实例的ID
    • 返回:实例状态信息
  • resume_instance

    • 恢复暂停的数据库实例
    • 输入:
      • instance_id (string):要恢复的实例的ID
    • 返回:实例状态信息
  • delete_instance

    • 删除数据库实例
    • 输入:
      • tenant_id (string):实例所在租户/项目的ID
      • instance_id (string):要删除的实例的ID
    • 返回:删除状态信息

🏢 租户/项目管理

  • list_tenants

    • 列出所有Neo4j Aura租户/项目
    • 无需输入
    • 退货:所有租户及其详细信息的列表
  • get_tenant_details

    • 获取特定租户/项目的详细信息
    • 输入:
      • tenant_id (string):要检索的租户/项目的ID
    • 返回:租户/项目的详细信息

🔧 使用Claude Desktop

💾 安装

pip install mcp-neo4j-aura-manager

⚙️ 配置

将服务器添加到您的 claude_desktop_config.json:

"mcpServers": {
  "neo4j-aura": {
    "command": "uvx",
    "args": [
      "mcp-neo4j-aura-manager@0.4.8",
      "--client-id",
      "<your-client-id>",
      "--client-secret",
      "<your-client-secret>"
      ]
  }
}

或者,您可以设置环境变量:

"mcpServers": {
  "neo4j-aura": {
    "command": "uvx",
    "args": [ "mcp-neo4j-aura-manager@0.4.8" ],
    "env": {
      "NEO4J_AURA_CLIENT_ID": "<your-client-id>",
      "NEO4J_AURA_CLIENT_SECRET": "<your-client-secret>"
    }
  }
}

🐳 使用Docker

"mcpServers": {
  "neo4j-aura": {
    "command": "docker",
    "args": [
      "run",
      "--rm",
      "-e", "NEO4J_AURA_CLIENT_ID=${NEO4J_AURA_CLIENT_ID}",
      "-e", "NEO4J_AURA_CLIENT_SECRET=${NEO4J_AURA_CLIENT_SECRET}",
      "mcp-neo4j-aura-manager:0.4.8"
    ]
  }
}

🏷️ 多租户部署的命名空间

服务器支持使用命名空间为多租户部署的工具名称添加前缀:

"mcpServers": {
  "neo4j-aura-app1": {
    "command": "uvx",
    "args": [
      "mcp-neo4j-aura-manager@0.4.8",
      "--client-id", "<your-client-id>",
      "--client-secret", "<your-client-secret>",
      "--namespace", "app1"
    ]
  },
  "neo4j-aura-app2": {
    "command": "uvx", 
    "args": [
      "mcp-neo4j-aura-manager@0.4.8",
      "--client-id", "<your-client-id>",
      "--client-secret", "<your-client-secret>",
      "--namespace", "app2"
    ]
  }
}

CLI使用情况

# With namespace
mcp-neo4j-aura-manager --client-id <id> --client-secret <secret> --namespace myapp

# Tools become: myapp-list_instances, myapp-create_instance, etc.

环境变量

export NEO4J_AURA_CLIENT_ID=your_client_id
export NEO4J_AURA_CLIENT_SECRET=your_client_secret  
export NEO4J_NAMESPACE=myapp
mcp-neo4j-aura-manager

带命名空间的Docker

docker run -e NEO4J_AURA_CLIENT_ID=<id> \
           -e NEO4J_AURA_CLIENT_SECRET=<secret> \
           -e NEO4J_NAMESPACE=myapp \
           mcp-neo4j-aura-manager

🌐 HTTP传输模式

服务器支持基于web的部署和微服务的HTTP传输:

# Basic HTTP mode (defaults: host=127.0.0.1, port=8000, path=/mcp/)
mcp-neo4j-aura-manager --transport http

# Custom HTTP configuration
mcp-neo4j-aura-manager --transport http --host 127.0.0.1 --port 8080 --path /api/mcp/

HTTP配置的环境变量:

export NEO4J_TRANSPORT=http
export NEO4J_MCP_SERVER_HOST=127.0.0.1
export NEO4J_MCP_SERVER_PORT=8080
export NEO4J_MCP_SERVER_PATH=/api/mcp/
export NEO4J_MCP_SERVER_ALLOWED_HOSTS="localhost,127.0.0.1"
export NEO4J_MCP_SERVER_ALLOW_ORIGINS="http://localhost:3000"
export NEO4J_NAMESPACE=myapp
mcp-neo4j-aura-manager

🔄 运输方式

服务器支持三种传输模式:

  • 工作室 (默认):本地工具和Claude Desktop的标准输入/输出
  • 上海证券交易所:基于web的部署的服务器发送事件
  • 超文本传输协议:适用于现代web部署和微服务的流式HTTP

🔒 安全保护

服务器包括全面的安全保护 安全默认值 在使用HTTP传输时,可以防止常见的基于网络的攻击,同时保留完整的MCP功能。

🛡️ DNS重新绑定保护

可信主机中间件 验证主机标头以防止DNS重新绑定攻击:

默认安全:

  • 仅 localhost 和 127.0.0.1 默认情况下允许主机
  • 恶意网站无法诱骗浏览器访问您的本地服务器

环境变量:

export NEO4J_MCP_SERVER_ALLOWED_HOSTS="example.com,www.example.com"

🌐 CORS保护

跨源资源共享(CORS) 默认情况下,保护会阻止基于浏览器的请求:

环境变量:

export NEO4J_MCP_SERVER_ALLOW_ORIGINS="https://example.com,https://example.com"

🔧 完成安全配置

开发设置:

mcp-neo4j-aura-manager --transport http \
  --allowed-hosts "localhost,127.0.0.1" \
  --allow-origins "http://localhost:3000"

生产设置:

mcp-neo4j-aura-manager --transport http \
  --allowed-hosts "example.com,www.example.com" \
  --allow-origins "https://example.com,https://example.com"

🚨 安全最佳实践

对于 allow_origins:

  • 请具体说明: ["https://example.com", "https://example.com"]
  • 从不使用 "*" 在生产中持有证书
  • 在生产中使用HTTPS源

对于 allowed_hosts:

  • 包括您的实际域名: ["example.com", "www.example.com"]
  • 仅包括用于开发的localhost
  • 从不使用 "*" 除非你了解风险

🐳 Docker部署

Neo4j Aura Manager MCP服务器可以使用Docker进行远程部署。Docker部署应该使用HTTP传输来实现web可访问性。为了将此部署与Claude Desktop等应用程序集成,您必须在MCP配置中使用代理,例如 mcp-remote.

🐳 使用Docker for Claude Desktop

在这里,我们使用Docker Hub托管的Aura Manager MCP服务器映像和stdio传输,与Claude Desktop一起使用。

配置详细信息:

  • -i:交互模式-保持STDIN打开以进行stdio传输通信
  • --rm:容器退出时自动删除(清理)
  • -p 8000:8000:端口映射-将主机端口8000映射到集装箱端口8000
  • NEO4J_TRANSPORT=stdio:使用stdio传输实现Claude Desktop兼容性
  • NEO4J_AURA_CLIENT_ID 和 NEO4J_AURA_CLIENT_SECRET:您的Aura API证书
{
  "mcpServers": {
    "neo4j-aura": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-p",
        "8000:8000",
        "-e", "NEO4J_AURA_CLIENT_ID=your-client-id",
        "-e", "NEO4J_AURA_CLIENT_SECRET=your-client-secret",
        "-e", "NEO4J_TRANSPORT=stdio",
        "mcp/neo4j-aura-manager:latest"
      ]
    }
  }
}

📦 使用您的内置图像

在当地建造后 docker build -t mcp-neo4j-aura-manager:latest .:

# Build the image
docker build -t mcp-neo4j-aura-manager:<version> .

# Run with http transport (default for Docker)
docker run --rm -p 8000:8000 \
  -e NEO4J_AURA_CLIENT_ID="your-client-id" \
  -e NEO4J_AURA_CLIENT_SECRET="your-client-secret" \
  -e NEO4J_TRANSPORT="http" \
  -e NEO4J_MCP_SERVER_HOST="0.0.0.0" \
  -e NEO4J_MCP_SERVER_PORT="8000" \
  -e NEO4J_MCP_SERVER_PATH="/mcp/" \
  mcp-neo4j-aura-manager:<version>

# Run with security middleware for production
docker run --rm -p 8000:8000 \
  -e NEO4J_AURA_CLIENT_ID="your-client-id" \
  -e NEO4J_AURA_CLIENT_SECRET="your-client-secret" \
  -e NEO4J_TRANSPORT="http" \
  -e NEO4J_MCP_SERVER_HOST="0.0.0.0" \
  -e NEO4J_MCP_SERVER_PORT="8000" \
  -e NEO4J_MCP_SERVER_PATH="/mcp/" \
  -e NEO4J_MCP_SERVER_ALLOWED_HOSTS="example.com,www.example.com" \
  -e NEO4J_MCP_SERVER_ALLOW_ORIGINS="https://example.com" \
  mcp-neo4j-aura-manager:<version>

🔧 环境变量

变量 默认值 描述
NEO4J_AURA_CLIENT_ID (无) Neo4j Aura API客户端ID
NEO4J_AURA_CLIENT_SECRET (无) Neo4j Aura API客户端机密
NEO4J_NAMESPACE (空-无前缀) 工具名称的命名空间前缀(例如。, myapp-list_instances)
NEO4J_TRANSPORT stdio (本地), http (远程) 传输协议(stdio, http,或 sse)
NEO4J_MCP_SERVER_HOST 127.0.0.1 (本地) 要绑定的主机
NEO4J_MCP_SERVER_PORT 8000 HTTP/SSE传输端口
NEO4J_MCP_SERVER_PATH /mcp/ 访问MCP服务器的路径
NEO4J_MCP_SERVER_ALLOW_ORIGINS (空-默认安全) 允许的CORS源的逗号分隔列表
NEO4J_MCP_SERVER_ALLOWED_HOSTS localhost,127.0.0.1 以逗号分隔的允许主机列表(DNS重新绑定保护)
NEO4J_MCP_SERVER_STATELESS false 为HTTP/SSE传输启用无状态模式(true/false,对stdio无效)

🌐 传统Web访问的SSE传输

当使用SSE传输(用于传统web客户端)时,服务器会公开一个HTTP端点:

# Start the server with SSE transport
docker run -d -p 8000:8000 \
  -e NEO4J_AURA_CLIENT_ID="your-client-id" \
  -e NEO4J_AURA_CLIENT_SECRET="your-client-secret" \
  -e NEO4J_TRANSPORT="sse" \
  -e NEO4J_MCP_SERVER_HOST="0.0.0.0" \
  -e NEO4J_MCP_SERVER_PORT="8000" \
  --name neo4j-aura-mcp-server \
  mcp-neo4j-aura-manager:latest

# Test the SSE endpoint
curl http://localhost:8000/sse

# Use with MCP Inspector
npx @modelcontextprotocol/inspector http://localhost:8000/sse

🔗 Claude桌面与Docker的集成

对于Claude Desktop与使用http传输的Docker化服务器的集成:

{
  "mcpServers": {
    "neo4j-aura-docker": {
      "command": "npx",
      "args": ["-y", "mcp-remote@latest", "http://localhost:8000/mcp/"]
    }
  }
}

备注:首先使用HTTP传输启动Docker容器,然后Claude Desktop可以通过HTTP端点和代理服务器连接到它,如 mcp-remote.

📝 使用示例

🔍 概述我的租户

🔎 按名称查找实例

📋 列出实例并查找暂停的实例

▶️ 恢复暂停的实例

➕ 创建新实例

🚀 发展

📦 先决条件

  1. 安装 uv (通用虚拟环境):
# Using pip
pip install uv

# Using Homebrew on macOS
brew install uv

# Using cargo (Rust package manager)
cargo install uv
  1. 克隆存储库并设置开发环境:
# Clone the repository
git clone https://github.com/yourusername/mcp-neo4j-aura-manager.git
cd mcp-neo4j-aura-manager

# Create and activate virtual environment using uv
uv venv
source .venv/bin/activate  # On Unix/macOS
.venv\Scripts\activate     # On Windows

# Install dependencies including dev dependencies
uv pip install -e ".[dev]"

📄 许可证

此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。