AWS Marketplace: AgentCore 上的 Neo4j MCP
简介
本指南介绍了如何使用 AWS CLI 将 AWS Marketplace 中的 Neo4j MCP 服务器部署到 Amazon Bedrock AgentCore。仅需一个 shell 脚本即可创建所需的 IAM 角色和 AgentCore 运行时——无需 CDK 或基础设施即代码 (IaC)。
核心功能
-
AWS Marketplace 镜像:使用发布在 AWS Marketplace 上的官方 Neo4j MCP 容器
-
仅需 CLI 部署:单个
deploy.sh脚本即可完成——无需 CDK、CloudFormation 或 Docker 构建 -
IAM 身份验证:通过 AWS IAM 实现安全、公共的运行时访问
-
基于 Header 的 Neo4j 身份验证:Neo4j 凭据通过自定义授权标头按请求传递
应用场景
-
快速概念验证 (PoC) 部署,设置极其简单
-
无法使用 CDK 或 CloudFormation 的环境
-
在采用基础设施即代码之前探索 Neo4j MCP 的功能
|
若需基于 CDK 的部署,请参阅 示例 1:MCP 运行时 - Docker。 |
架构设计
组件
-
AWS AgentCore 运行时
-
托管代理执行环境
-
运行来自 AWS Marketplace 的 Neo4j MCP 容器
-
带有 IAM 身份验证的公共网络模式
-
-
Neo4j MCP 容器 (AWS Marketplace)
-
官方 Neo4j MCP 服务器镜像:
709825985650.dkr.ecr.us-east-1.amazonaws.com/neo4j/mcp:v0.1.7 -
端口 8000 上的无状态 HTTP MCP 服务器
-
提供用于模式检查、Cypher 执行和图探索的 MCP 工具
-
-
IAM 角色
-
针对
bedrock-agentcore.amazonaws.com的信任策略 -
用于 ECR 镜像拉取、CloudWatch 日志、X-Ray 和 CloudWatch 指标的权限
-
-
自定义授权标头
-
X-Amzn-Bedrock-AgentCore-Runtime-Custom-Authorization标头 -
Neo4j 凭据由调用代理在每次请求中转发
-
容器环境中不存储任何凭据
-
-
Neo4j 数据库
-
任何可达的 Neo4j 实例(Aura、Desktop 或自托管)
-
默认演示:
neo4j+s://demo.neo4jlabs.com:7687(公司数据库)
-
深度分析
身份验证流程
User/Agent Request
|
[AWS IAM Authentication + Neo4j credentials via X-Amzn-Bedrock-AgentCore-Runtime-Custom-Authorization header]
|
AgentCore Runtime (Public)
|
Neo4j MCP Server (HTTP mode)
|
[Extract Basic Auth from custom header]
|
Neo4j Database
安全层
-
IAM 身份验证:控制谁可以调用运行时
-
公共运行时:可通过 IAM 访问,无需 VPC
-
按请求认证:Neo4j 凭据通过自定义标头以
Basic <base64(user:password)>格式传递 -
TLS 加密:通过
neo4j+s://安全连接至 Neo4j
环境变量
| 变量 | 必填 | 默认 | 目的 |
|---|---|---|---|
|
是 |
- |
Neo4j 连接 URI |
|
否 |
|
目标数据库名称 |
|
否 |
|
限制为只读操作 |
|
否 |
- |
Neo4j 凭据的自定义标头名称 |
|
否 |
|
允许未经身份验证的健康检查 |
|
否 |
|
日志详细程度 |
|
否 |
|
日志格式 ( |
可用的 MCP 工具
| Tool | 只读 | 目的 |
|---|---|---|
|
是 |
内省标签、关系类型和属性键 |
|
是 |
执行只读 Cypher 查询 |
|
否 |
执行写入 Cypher 查询(需启用写入访问权限) |
|
是 |
列出可用的图数据科学 (GDS) 过程 |
有关完整工具参考,请参阅 官方 Neo4j MCP 服务器文档。
如何使用此示例
第一步:配置
编辑 deploy.sh 顶部的配置变量
REGION="us-east-1"
RUNTIME_NAME="neo4j_mcp"
CONTAINER_URI="709825985650.dkr.ecr.us-east-1.amazonaws.com/neo4j/mcp:v0.1.7"
NEO4J_URI="neo4j+s://demo.neo4jlabs.com:7687"
NEO4J_DATABASE="companies"
NEO4J_READ_ONLY="true"
默认值指向公共 Neo4j 公司演示数据库。若要使用您自己的实例,请替换 NEO4J_URI 和 NEO4J_DATABASE。
第二步:部署
chmod +x deploy.sh
./deploy.sh
脚本将:
-
使用所需的信任策略和权限创建一个 IAM 角色 (
Neo4jMCPRole) -
使用市场容器镜像创建一个 AgentCore 运行时
-
打印
AgentRuntimeId以便在后续步骤中使用
第三步:检查运行时状态
aws bedrock-agentcore-control get-agent-runtime \
--agent-runtime-id <AGENT_RUNTIME_ID>
在调用之前,请等待运行时状态变为 ACTIVE。
第四步:测试运行时
安装 Python 客户端依赖项
pip install mcp-proxy-for-aws strands-agents boto3
连接并调用工具
from urllib.parse import quote
from mcp_proxy_for_aws.client import aws_iam_streamablehttp_client
from strands.tools.mcp import MCPClient
import base64
import boto3
arn = "<AGENT_RUNTIME_ARN>"
neo4j_user = "companies"
neo4j_password = "companies"
ENCODED_ARN = quote(arn, safe="")
credentials = base64.b64encode(f"{neo4j_user}:{neo4j_password}".encode()).decode()
region = boto3.Session().region_name
mcp_client = MCPClient(lambda: aws_iam_streamablehttp_client(
endpoint=f"https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ENCODED_ARN}/invocations?qualifier=DEFAULT",
aws_region=region,
aws_service="bedrock-agentcore",
headers={
"X-Amzn-Bedrock-AgentCore-Runtime-Custom-Authorization": f"Basic {credentials}",
},
))
mcp_client.start()
# List available tools
result = mcp_client.list_tools_sync()
for t in result:
print(f"- {t.tool_name}: {t.tool_spec.get('description')}")
# Get schema
result = mcp_client.call_tool_sync("1", "get-schema")
print(result)
# Run a Cypher query
result = mcp_client.call_tool_sync(
"2",
"read-cypher",
tool_input={"query": "MATCH (n) RETURN labels(n) AS labels, count(*) AS count ORDER BY count DESC LIMIT 10"},
)
print(result)
第五步:清理
# Delete the AgentCore runtime
aws bedrock-agentcore-control delete-agent-runtime \
--agent-runtime-id <AGENT_RUNTIME_ID>
# Remove the IAM role policy and role (use the role name printed by deploy.sh)
aws iam delete-role-policy --role-name <ROLE_NAME> --policy-name Neo4jMCPRuntimePolicy
aws iam delete-role --role-name <ROLE_NAME>
CDK 替代方案
如果您更喜欢基础设施即代码,示例 1:MCP 运行时 - Docker 提供了完整的 AWS CDK 部署方案。