Conference overview talk. The arc runs from why connected data matters, through
how Neo4j and AWS fit together, into the details of the integration patterns:
data connectors, agent frameworks, memory, and GraphRAG.
Source material: the original AWS Agentic AI Conference deck, plus slides
pulled from the Neo4j hotel booking agent workshop (agent, memory,
architecture, business-case, GraphRAG, and knowledge-graph decks), rewritten
here in plain language for a general conference audience, then adapted from
the hotel booking domain to a finance and fraud-investigation domain for this
deck.
These are separate connection patterns, not one required stack. Pick EMR for
large Spark workloads, Glue for managed ETL, MSK for event streams, a driver
for direct application requests, and MCP when an agent needs graph tools.
Use this path for large batch loads from S3 or Iceberg into the graph, and for
pulling graph results back into Spark for analytics. Writes are batched, and
each batch commits in its own transaction. Custom Cypher works for both reads
and writes when the label and key options are not enough. Check the connector
version against the EMR release's Spark version: connector 5.x targets Spark
3.4 and 3.5, and connector 6.x targets Spark 4.
Setup: upload the connector JAR to S3 and create a Glue custom connector with
driver class org.neo4j.jdbc.Neo4jDriver. The JDBC URL adds
enableSQLTranslation=true. Neo4j credentials live in Secrets Manager. Only
supported SQL constructs are translated. Pick Glue for managed, visual ETL.
Pick Spark on EMR when the job needs custom Cypher or very large batches.
This is a production pattern for teams who already have a lakehouse. The graph
does not replace it. It adds the connected layer the lakehouse does not model
well: relationships, rules, and provenance.
Sources: https://neo4j.com/blog/auradb/neo4j-virtual-graph-is-now-in-public-preview/,
https://docs.aws.amazon.com/athena/latest/ug/gdc-register-s3-table-bucket-cat.html,
and https://docs.aws.amazon.com/glue/latest/dg/enable-s3-tables-catalog-integration.html
The client never holds Neo4j credentials. Cognito exchanges a client ID and
secret for a JWT. The Gateway validates the JWT and routes each tool call to
the runtime. The runtime hosts the read-only Neo4j MCP Server over Streamable
HTTP. Secrets Manager stores the Neo4j password, and the runtime receives it
at deploy time. Deployment code lives in neo4j-mcp-server/.
./deploy.py builds the ARM64 image, pushes it to ECR, and deploys the CDK
stack. ./deploy.py credentials writes the Gateway URL, client ID, client
secret, and token URL that the Quick connection slide uses. The Gateway also
exchanges its own OAuth token with the runtime, so callers see one endpoint.
Amazon Quick is the rebrand of the Amazon Q Business enterprise assistant.
Amazon QuickSight is now Quick Sight, the BI part of Quick. Amazon Q Developer
is a separate product and is unaffected. The point for this audience: Quick is
where business users already ask questions, so it is the natural front door
for graph context. MCP is the door Neo4j comes through.
The Neo4j MCP server from the deployment slide works here unchanged. Point
Quick at the AgentCore Gateway URL. The credentials file from
./deploy.py credentials already holds the client ID, client secret, and token
URL that Quick's service authentication asks for. The Quick setup is done in
the console. This repository does not script it.
Limits to plan for:
- MCP integration needs a Quick Enterprise subscription.
- Quick supports remote servers only. Streamable HTTP is preferred over SSE.
- Each MCP operation has a fixed 60-second timeout. Keep Cypher tools bounded.
- Quick registers at most 100 tools per MCP server.
- Custom HTTP headers are not sent. Auth must go through OAuth.
- Custom connectors do not pick up new tools automatically. The owner chooses
Sync after the server changes.
This closes the loop with the dual-architecture slides. Athena and Quick Sight
cover the "counting things" side. The Neo4j MCP tools cover the "following
connections" side. The analyst never leaves Quick, and never needs Neo4j
credentials, because the Gateway and MCP server own database access.
Source: demos/fraud-amazon-quick/README.md.
A surprising finding. When RAG retrieves chunks that are similar but not truly
relevant, the context window fills with tangentially related information and
the model gets confused or misled. The retrieved context actively rots the
quality of the answer. This motivates GraphRAG, previewed on the next slide:
traversal reaches connected facts instead of just more similar-looking text.
The audience already knows Strands. The point here is that everything in this
section becomes a tool: the vector search plus traversal from the previous
image, text-to-Cypher, or a GDS-backed query. "Focused results" closes the loop
on context rot from the start of the section.
Short-term state is what lets an agent resolve "what's the current balance?"
after an account was already named. Long-term knowledge holds durable facts
and preferences that should outlive one conversation, plus a record of what
changed and when. Reasoning memory keeps the tool calls, decisions, and
outcomes an agent produced, which is evidence for debugging and review. Most
agents are stateless until memory is designed on purpose.
Sources: https://neo4j.com/blog/agentic-ai/what-is-context-graph/,
https://neo4j.com/blog/agentic-ai/context-graph-ai-agent-memory/, and
https://neo4j.com/blog/agentic-ai/hands-on-with-context-graphs-and-neo4j/
This demo captures memory. It does not inject recalled memory back into
prompts, which keeps a shared NAMS workspace safe for synthetic multi-user
load runs. Recall is a library capability, not something this demo shows.
Source: demos/fraud-amazon-quick/fraud-memory-agent/README.md and
server/runtime_app.py.
Sources: https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway.html
and https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-target-MCPservers.html