Graphiti MCP Demo
by Kartikk-26
README.md
<p align="center">
<a href="https://www.getzep.com/">
<img src="https://github.com/user-attachments/assets/119c5682-9654-4257-8922-56b7cb8ffd73" width="150" alt="Zep Logo">
</a>
</p>
<h1 align="center">Graphiti MCP Demo</h1>
<h3 align="center">π Build Real-Time Knowledge Graphs for AI Agents</h3>
<div align="center">




</div>
---
## π Table of Contents
- [About](#-about)
- [Workflow](#-workflow-of-the-project)
- [Setup](#-setup)
- [Running MCP Server](#-running-mcp-server)
- [Integrating MCP Clients](#-integrating-mcp-clients)
- [Verifying in Neo4j](#-verifying-in-neo4j)
- [Final Output](#-final-output-from-cursor--neo4j)
- [Contribution](#-contribution)
- [License](#-license)
---
## π About
We are implementing an **MCP server** and **AI agent integration** to leverage [Zep's Graphiti](https://www.getzep.com/) for persistent memory and context continuity across **Cursor** and **Claude**.
This setup allows AI agents to:
β
Connect to the MCP for dynamic tool discovery
β
Select the optimal tool for a query
β
Formulate responses with context continuity
β
Persist interactions in **Neo4j** as a knowledge graph
---
## π Workflow of the Project
The workflow of this project shows how **Cursor** or **Claude Desktop** integrates with the **MCP server** and stores context in **Graphiti memory (Neo4j)**:
1. **Developer sends a Query** from Cursor IDE or Claude Desktop.
2. The **MCP Host** connects to the **MCP Server**.
3. The MCP Server makes **tool calls** (e.g., `add_episode`, `search_nodes`, `clear_graph`) to interact with Graphiti memory.
4. Extracted **context** (documents, conversations, JSONs) is stored as structured data.
5. This data flows into different layers of the **Graphiti Memory Structure**:
- **Level 1: Episodes** β Raw data like documents, conversations, JSONs
- **Level 2: Entities** β Nodes & relationships extracted from episodes
- **Level 3: Communities** β Clusters of entities with summaries
6. The **MCP Host** sends the enriched **context** back to the developer as a response.
### π½οΈ *Workflow Demo*

## βοΈ Setup
### 1οΈβ£ Clone GitHub Repository
```bash
git clone https://github.com/getzep/graphiti.git
cd graphiti/mcp_server
````
### 2οΈβ£ Install Dependencies
```bash
uv sync
```
### 3οΈβ£ Configure Environment
Create a `.env` file in `graphiti/mcp_server`:
```dotenv
# Neo4j Database Configuration
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=demodemo
# OpenAI API Configuration
OPENAI_API_KEY=<your_openai_api_key>
MODEL_NAME=gpt-4.1-mini
```
---
## π₯ Running MCP Server
Graphiti MCP server can be run using **Docker** or **Python**.
Docker is recommended, but direct execution helps with troubleshooting.
### βΆοΈ Run with Docker
```bash
docker compose up
```
πΈ *Docker Container Running*

---
### βΆοΈ Run with Python (for debugging)
```bash
uv run graphiti_mcp_server.py --model gpt-4.1-mini --transport sse
```
πΈ *Graphiti SSE Output*

---
## π€ Integrating MCP Clients
### πΉ Cursor
Add this to your `mcp.json`:
```json
{
"mcpServers": {
"Graphiti": {
"url": "http://localhost:8000/sse"
}
}
}
```
---
### πΉ Claude
Update `claude_desktop_config.json`:
```json
{
"mcpServers": {
"graphiti": {
"transport": "stdio",
"command": "/path/to/uv",
"args": [
"run",
"--isolated",
"--directory",
"/path/to/graphiti/mcp_server",
"--project",
".",
"graphiti_mcp_server.py",
"--transport",
"stdio"
]
}
}
}
```
---
## πΈ Verifying in Neo4j
Open the Neo4j browser β [http://localhost:7474/browser/](http://localhost:7474/browser/)
πΈ *Connected Neo4j Browser*

πΈ *Data Stored in Neo4j*

---
## π Final Output from Cursor β Neo4j
Flow:
**Cursor Prompt β MCP Server β Neo4j Graph Storage**
πΈ *Final Cursor Output Sent to Neo4j*

---
## π€ Contribution
Contributions are welcome!
* Fork this repo
* Create a new branch
* Make changes & submit a PR
---
## π‘ Connect with Me
Stay connected on LinkedIn for more projects, ideas, and collaborations:
[Kartik Jain](https://linkedin.com/in/-kartikjain/)
Letβs build, learn, and grow together! π
---
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues