# GraphAcademy — Neo4j's Free Online Learning Platform GraphAcademy (https://graphacademy.neo4j.com) is Neo4j's official, free learning platform. ## What you can learn - Cypher query language and graph data modeling - Graph Data Science (community detection, link prediction, embeddings) - Generative AI and GraphRAG (retrieval-augmented generation with knowledge graphs) - Application development with Neo4j drivers (Python, JavaScript, Java, .NET, Go) ## Key URLs - https://graphacademy.neo4j.com/categories — Browse all learning paths - https://graphacademy.neo4j.com/courses — Browse all courses - https://graphacademy.neo4j.com/certifications — Industry-recognized Neo4j certifications - https://graphacademy.neo4j.com/glossary — Definitions of the graph, Cypher, data science, GenAI and driver terms used across the platform (https://graphacademy.neo4j.com/glossary/llms.txt for every definition in one file) - https://graphacademy.neo4j.com/knowledge-graph-rag — GraphRAG learning path - https://graphacademy.neo4j.com/practitioner — Neo4j Practitioner learning path ## Certifications - Neo4j Certified Professional (https://graphacademy.neo4j.com/certifications/neo4j-certification) - Neo4j Graph Data Science Certification (https://graphacademy.neo4j.com/certifications/gds-certification) All courses are self-paced and 100% free. ## Using the GraphAcademy MCP server GraphAcademy exposes an MCP (Model Context Protocol) server so that LLMs and agents can enrol a user in a course and teach it lesson by lesson, directly inside a chat client or IDE. - Endpoint: https://mcp.graphacademy.neo4j.com/mcp - Transport: Streamable HTTP (HTTP POST for requests, GET for the SSE stream, DELETE to end a session). - Authentication: Auth0 OAuth 2.0. The server supports Dynamic Client Registration (DCR), so a client registers itself automatically — no pre-shared client ID or secret is required. Requests to the endpoint must carry a valid Auth0 Bearer token. ### How an agent connects 1. Discover the OAuth metadata from the server origin: `/.well-known/oauth-authorization-server` and `/.well-known/oauth-protected-resource`. 2. Dynamically register as a client, then run the OAuth authorization-code flow (PKCE). The user signs in through Auth0; the requested scopes are `openid`, `profile`, `email`, and `offline_access`. 3. Send MCP requests to https://mcp.graphacademy.neo4j.com/mcp with the resulting Bearer token in the `Authorization` header. Most MCP-compatible clients (for example Claude Desktop, Claude Code, VS Code, or Cursor) handle registration and the OAuth flow for you once you add the server URL. A typical configuration is: ```json { "mcpServers": { "graphacademy": { "type": "http", "url": "https://mcp.graphacademy.neo4j.com/mcp" } } } ``` ### Tools the server exposes Learning workflow: - `list_courses` — List all active GraphAcademy courses (slug, title, description, duration). - `list_lessons` — List every lesson in a course, grouped by module. - `enrol` — Enrol the authenticated user in a course. Creates the enrolment, provisions or retrieves a Neo4j instance for challenge lessons, and returns the full course structure. - `get_next_lesson` — Get the next incomplete lesson. Optionally marks the previous lesson complete first. The response states the lesson type; only challenge lessons use `verify_lesson`. - `mark_lesson_complete` — Mark a standard (non-challenge) lesson complete and return the next lesson's content. - `verify_lesson` — Run the verification Cypher for a challenge lesson against the user's Neo4j database; marks the lesson complete if all checks pass. - `submit_quiz` — Submit answers for a quiz-gated course; all answers must be correct to complete the course. - `list_enrolments` — List the courses the user is enrolled in, with progress and completion status. - `reset_progress` — Reset the user's progress for a course so it can be restarted. - `get_database_credentials` — Retrieve the stored Neo4j credentials for a course, formatted as a `.env` file. Call before `verify_lesson`. - `answer_question` — Ask a question about Neo4j or graph databases; returns an answer grounded in GraphAcademy lesson content. - `get_data_model` / `save_data_model` — Load and persist the user's graph data model for a course so it carries across sessions. Neo4j building assistants (multi-turn): - `neo4j_graph_modeler` — Design a graph data model: labels, relationship types, properties, indexes, and constraints. - `neo4j_import_advisor` — Get advice and generated scripts for importing data (LOAD CSV, APOC, neo4j-admin import). - `neo4j_mock_data_generator` — Generate a runnable Faker script that seeds realistic test data into a graph. - `neo4j_query_builder` — Build Cypher queries and export scripts, with optional live-schema introspection and EXPLAIN/PROFILE. - `neo4j_project_builder` — Scaffold a Neo4j application: driver setup, sessions/transactions, and project structure. ### Example flow: enrol and work through a course 1. Call `list_courses` and pick a `course_slug`. 2. Call `enrol` with that `course_slug`. 3. Call `get_next_lesson` to load the first lesson. 4. Teach the lesson, then advance: - Standard lesson: call `mark_lesson_complete` (or `get_next_lesson` with `completed_lesson_slug`). - Challenge lesson: call `get_database_credentials`, then `verify_lesson` once the user says they are done. 5. Repeat until the response returns a course-completion message and a certificate link. ### Example flow: build a Neo4j application while learning Use the building assistants alongside a course: `neo4j_graph_modeler` to design the schema, `neo4j_query_builder` to write and profile Cypher, and `neo4j_project_builder` to scaffold driver code. Call `save_data_model` whenever the schema changes so later lessons can reference the user's actual model. ## Course, Module, and Lesson Content * [Aura Graph Analytics fundamentals](https://graphacademy.neo4j.com/courses/aga-fundamentals/llms.txt) * [Building Neo4j Applications with Node.js](https://graphacademy.neo4j.com/courses/app-nodejs/llms.txt) * [Building Neo4j Applications with Python](https://graphacademy.neo4j.com/courses/app-python/llms.txt) * [Building Neo4j Applications with Spring Data](https://graphacademy.neo4j.com/courses/app-spring-data/llms.txt) * [Aura In Production](https://graphacademy.neo4j.com/courses/aura-administration/llms.txt) * [Building Agents in Neo4j Aura](https://graphacademy.neo4j.com/courses/aura-agents/llms.txt) * [Building Dashboards with Neo4j Aura](https://graphacademy.neo4j.com/courses/aura-dashboards/llms.txt) * [AuraDB Fundamentals](https://graphacademy.neo4j.com/courses/aura-fundamentals/llms.txt) * [Cypher Aggregations](https://graphacademy.neo4j.com/courses/cypher-aggregation/llms.txt) * [Cypher Fundamentals](https://graphacademy.neo4j.com/courses/cypher-fundamentals/llms.txt) * [Cypher Indexes and Constraints](https://graphacademy.neo4j.com/courses/cypher-indexes-constraints/llms.txt) * [Intermediate Cypher Queries](https://graphacademy.neo4j.com/courses/cypher-intermediate-queries/llms.txt) * [Using Neo4j with Go](https://graphacademy.neo4j.com/courses/drivers-go/llms.txt) * [Using Neo4j with Java](https://graphacademy.neo4j.com/courses/drivers-java/llms.txt) * [Using Neo4j with Python](https://graphacademy.neo4j.com/courses/drivers-python/llms.txt) * [Entity Communication Networks](https://graphacademy.neo4j.com/courses/entity-communication-networks/llms.txt) * [Get started with Graph Data Science](https://graphacademy.neo4j.com/courses/gds-fundamentals/llms.txt) * [Path Finding with GDS](https://graphacademy.neo4j.com/courses/gds-shortest-paths/llms.txt) * [Context Graphs: Agent Memory with Neo4j](https://graphacademy.neo4j.com/courses/genai-context-graphs/llms.txt) * [Neo4j & GenerativeAI Fundamentals](https://graphacademy.neo4j.com/courses/genai-fundamentals/llms.txt) * [Constructing Knowledge Graphs with Neo4j GraphRAG for Python](https://graphacademy.neo4j.com/courses/genai-graphrag-python/llms.txt) * [Using Neo4j with LangChain](https://graphacademy.neo4j.com/courses/genai-integration-langchain/llms.txt) * [Building GraphRAG Python MCP tools](https://graphacademy.neo4j.com/courses/genai-mcp-build-custom-tools-python/llms.txt) * [Developing with Neo4j MCP Tools](https://graphacademy.neo4j.com/courses/genai-mcp-neo4j-tools/llms.txt) * [Introduction to Neo4j & GraphQL](https://graphacademy.neo4j.com/courses/graphql-basics/llms.txt) * [Importing CSV data into Neo4j](https://graphacademy.neo4j.com/courses/importing-cypher/llms.txt) * [Importing Data Fundamentals](https://graphacademy.neo4j.com/courses/importing-fundamentals/llms.txt) * [Building Knowledge Graphs with LLMs](https://graphacademy.neo4j.com/courses/llm-knowledge-graph-construction/llms.txt) * [Introduction to Vector Indexes and Unstructured Data](https://graphacademy.neo4j.com/courses/llm-vectors-unstructured/llms.txt) * [Graph Data Modeling Fundamentals](https://graphacademy.neo4j.com/courses/modeling-fundamentals/llms.txt) * [Neo4j Fundamentals](https://graphacademy.neo4j.com/courses/neo4j-fundamentals/llms.txt) * [Workshop de Introdução a Bancos de Dados de Grafos](https://graphacademy.neo4j.com/courses/pt-br-workshop-fundamentals/llms.txt) * [Graph Data Science na Prática](https://graphacademy.neo4j.com/courses/pt-br-workshop-gds/llms.txt) * [Workshop de Neo4j e IA Generativa](https://graphacademy.neo4j.com/courses/pt-br-workshop-genai/llms.txt) * [Workshop de Modelagem e Importação de Dados no Neo4j](https://graphacademy.neo4j.com/courses/pt-br-workshop-modeling/llms.txt) * [Workshop de Gerenciamento, Otimização e Refatoração do Neo4j](https://graphacademy.neo4j.com/courses/pt-br-workshop-optimization/llms.txt) * [Introduction to Graph Databases Workshop](https://graphacademy.neo4j.com/courses/workshop-fundamentals/llms.txt) * [Graph Data Science in Practice](https://graphacademy.neo4j.com/courses/workshop-gds/llms.txt) * [Analyze Graph Data with Python](https://graphacademy.neo4j.com/courses/workshop-gds-python-aga/llms.txt) * [Neo4j and Generative AI Workshop](https://graphacademy.neo4j.com/courses/workshop-genai/llms.txt) * [GraphRAG Hackathon](https://graphacademy.neo4j.com/courses/workshop-hackathon/llms.txt) - get-started - [welcome](https://graphacademy.neo4j.com/courses/workshop-hackathon/get-started/welcome/llms.txt) - [create-instance](https://graphacademy.neo4j.com/courses/workshop-hackathon/get-started/create-instance/llms.txt) - [aura-tour](https://graphacademy.neo4j.com/courses/workshop-hackathon/get-started/aura-tour/llms.txt) - [aura-mcp](https://graphacademy.neo4j.com/courses/workshop-hackathon/get-started/aura-mcp/llms.txt) - [mcp-setup](https://graphacademy.neo4j.com/courses/workshop-hackathon/get-started/mcp-setup/llms.txt) - introduction - [why-graphrag](https://graphacademy.neo4j.com/courses/workshop-hackathon/introduction/why-graphrag/llms.txt) - [what-is-neo4j](https://graphacademy.neo4j.com/courses/workshop-hackathon/introduction/what-is-neo4j/llms.txt) - [data-model](https://graphacademy.neo4j.com/courses/workshop-hackathon/introduction/data-model/llms.txt) - [cypher](https://graphacademy.neo4j.com/courses/workshop-hackathon/introduction/cypher/llms.txt) - [mock-data](https://graphacademy.neo4j.com/courses/workshop-hackathon/introduction/mock-data/llms.txt) - hack - [walkthrough](https://graphacademy.neo4j.com/courses/workshop-hackathon/hack/walkthrough/llms.txt) - [build](https://graphacademy.neo4j.com/courses/workshop-hackathon/hack/build/llms.txt) - [questions](https://graphacademy.neo4j.com/courses/workshop-hackathon/hack/questions/llms.txt) * [Importing Data into Neo4j Workshop](https://graphacademy.neo4j.com/courses/workshop-importing/llms.txt) * [AI on Your Lakehouse: Context Comes in Shapes, Not Queries](https://graphacademy.neo4j.com/courses/workshop-lakehouse/llms.txt) * [Modeling and Importing Data into Neo4j Workshop](https://graphacademy.neo4j.com/courses/workshop-modeling/llms.txt) * [Neo4j Management, Optimization, and Refactoring Workshop](https://graphacademy.neo4j.com/courses/workshop-optimization/llms.txt) * [Zero to Production Hands-On Workshop](https://graphacademy.neo4j.com/courses/workshop-zero/llms.txt)