project_memory
Allows querying a Neo4j graph database for project memory data, including projects, clients, tasks, and SEO audits.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@project_memorylist all projects with their client names"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Atlas GraphRAG, Neo4j, DataForSEO, and MCP
This repository contains a prototype for a graph-based project memory. It combines Graphiti, Neo4j, DataForSEO OnPage audits, a reusable Codex skill, and a read-only MCP server that lets Codex query projects, clients, tasks, and SEO audit results.
What This Project Includes
Initial project memory seeding with Graphiti and Neo4j.
A deterministic Cypher project map for direct visualization in Neo4j Browser.
DataForSEO OnPage scripts, with sandbox-first and real-audit modes.
Conversion of SEO findings into
SeoAudit,SeoIssue, andTasknodes.A reusable Codex skill named
seo-dataforseo-audit.A read-only MCP server named
project_memoryfor querying the graph from Codex.
Related MCP server: neo4j-mcp
Local Setup
Copy the example environment file and add real credentials only to
.env:
Copy-Item .env.example .envCreate and install the Python environment:
python -m venv venv
.\venv\Scripts\python.exe -m pip install -r requirements.txtMake sure Neo4j is running locally and configure
NEO4J_URI,NEO4J_USER, andNEO4J_PASSWORDin.env.JavaScript scripts require Node.js 18 or newer.
Important:
.env,node_modules,venv, reports, and generated files are ignored by Git. Do not commit real API keys or passwords.
Seed a Graphiti Project Memory
Start your local Neo4j database.
Check that
.envcontainsOPENAI_API_KEY. AddNEO4J_URI,NEO4J_USER, andNEO4J_PASSWORDif your local Neo4j setup differs from the defaults.Run:
.\venv\Scripts\python.exe seed_project_graph.pyThis command clears the configured database and loads the Atlas GraphRAG project memory with vision, roles, scope, milestones, tasks, risks, and technical decisions.
Load a Direct Neo4j Project Map
If you want to see nodes and relationships immediately in Neo4j Browser without using OpenAI, run:
.\seed_project_map.ps1This command also clears the current graph, but it creates deterministic nodes
with labels such as Project, Client, ClientContact, Task, Technology,
Risk, Milestone, and Decision.
Use the Interactive GraphRAG Console
.\venv\Scripts\python.exe main.pyUseful questions:
ask what technologies does the project use?
ask which tasks are blocked?
ask who is responsible for the MVP?
ask what risks does Atlas GraphRAG have?
ask which client owns the Website Blog project?
ask what ideas belong to the Website Blog project?
ask which tasks are still open for the blog?You can also enter a new project note as free text. It will be stored as a new memory episode in the graph.
Test DataForSEO
Add your DataForSEO credentials to .env:
DATAFORSEO_LOGIN=your_dataforseo_login
DATAFORSEO_PASSWORD=your_dataforseo_password
SEO_TARGET_URL=https://your-blog.exampleThen test the connection:
node .\dataforseo_test_connection.mjsThis test uses GET /v3/appendix/user_data, a DataForSEO endpoint that is safe
for checking credentials before creating real paid OnPage tasks.
Next, test the OnPage flow in sandbox mode:
node .\dataforseo_onpage_sandbox.mjsThe sandbox uses test data, but it confirms that the OnPage API flow is wired correctly.
When you are ready to run a real audit limited to one page:
node .\dataforseo_onpage_real_audit.mjs --run-realThe script creates a real OnPage task with SEO_AUDIT_MAX_PAGES=1, waits for
the result, and stores reports in the ignored reports directory.
If a task already exists and you have its Task ID, retrieve the report without
creating another paid task:
node .\dataforseo_onpage_real_audit.mjs --task-id TASK_IDTo store the current SEO audit in Neo4j:
node .\add_seo_audit_to_graph.mjsInspect the Graph in Neo4j Browser
Quick queries:
MATCH (n) RETURN n LIMIT 50;MATCH p=()-[r]-() RETURN p LIMIT 100;MATCH (e:Episodic)
RETURN e.name, e.content
ORDER BY e.valid_at;MATCH (p:Project)-[:FOR_CLIENT]->(c:Client)
OPTIONAL MATCH (c)-[:HAS_CONTACT]->(contact:ClientContact)
RETURN p.name AS project, c.name AS client, c.email AS email,
c.phone AS phone, contact.name AS contact;MATCH (p:Project {id: "website-blog"})-[:HAS_IDEA]->(idea:Idea)
RETURN p.name AS project, idea.name AS idea,
idea.status AS status, idea.priority AS priority;MATCH p=(:Project {id: "website-blog"})-[:HAS_SEO_AUDIT|FOUND|CREATES_TASK*1..3]-()
RETURN p;Query the Graph from Codex with MCP
The mcp-project-memory server connects Codex to Neo4j in read-only mode. It
allows Codex to answer questions about projects, clients, tasks, and SEO audits
without modifying graph data.
From cmd, run the guided setup once:
cd /d C:\Users\yohan\prueba-graphiti
.\mcp-project-memory\setup.cmdThe installer installs the official MCP SDK, registers the server in Codex, and tests its tools. Manual setup is also possible:
cd /d C:\Users\yohan\prueba-graphiti\mcp-project-memory
npm.cmd install
codex mcp add project_memory -- node "C:\Users\yohan\prueba-graphiti\mcp-project-memory\server.mjs"
codex mcp listIf you prefer manual configuration, use the equivalent block in
mcp-project-memory/codex-config.toml.example. Reopen this project in Codex and
keep Neo4j running. To test the MCP server from the terminal:
npm.cmd run test:mcpExample questions Codex can answer through MCP:
What projects are stored?
Which project belongs to Demo Client?
Show me the pending tasks for the website-blog project.
Which SEO audits are stored for the blog, and what issues were found?This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/yohannycamacaro/graph-rag-seo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server