OpenROD is an open-source MCP (Model Context Protocol) server that enables shared memory and context between multiple AI clients like Claude Desktop and Cursor. By leveraging a vector database and tagging system, OpenROD creates a unified knowledge layer that persists across different AI applications.
- Cross-Client Memory Sharing: Share context and knowledge between Claude Desktop, Cursor, and other MCP-compatible clients
- Vector Database Storage: Efficient storage and retrieval using vector embeddings for semantic search
- Tagging System: Organize and categorize memories with flexible tagging
- Web UI: User-friendly interface for manual memory management
- MCP Integration: Seamless integration with the Model Context Protocol ecosystem
- Docker Deployment: Easy deployment using Docker Compose
- Local-First: Runs entirely on your local machine for privacy and control
OpenROD operates as a bridge between your AI clients and a persistent knowledge base:
βββββββββββββββββββ ββββββββββββββββ βββββββββββββββββββ
β Claude β β β β Cursor β
β Desktop βββββΊβ OpenROD βββββΊβ β
β β β MCP Server β β β
βββββββββββββββββββ β β βββββββββββββββββββ
β β
β βββββββββββ΄βββββββββββ
β β Vector Database β
β β (Tagged Memories) β
β βββββββββββ¬βββββββββββ
β β
β βββββββββββ΄βββββββββββ
β β Web UI β
β β (Memory Management)β
βββββ΄βββββββββββββββββββββ
- Docker and Docker Compose
- Compatible MCP clients (Claude Desktop, Cursor, etc.)
- Minimum 4GB RAM recommended
- 2GB available disk space
-
Clone the repository
git clone https://github.com/Open-ROD/openrod.git cd openrod -
Configure environment variables
cp .env.example .env # Edit .env with your preferred settings -
Start the services
docker-compose up -d
-
Verify installation
- Web UI: http://localhost:8080
- MCP Server: localhost:3000
- Health check: http://localhost:3000/health
Add to your Claude Desktop configuration file:
{
"mcpServers": {
"openrod": {
"command": "node",
"args": ["path/to/openrod/mcp-client.js"],
"env": {
"OPENROD_URL": "http://localhost:3000"
}
}
}
}Configure in your Cursor settings:
{
"mcp.servers": [
{
"name": "openrod",
"url": "http://localhost:3000"
}
]
}| Variable | Description | Default |
|---|---|---|
OPENROD_PORT |
MCP server port | 3000 |
WEB_UI_PORT |
Web interface port | 8080 |
VECTOR_DB_PATH |
Database storage path | ./data/vectordb |
MAX_MEMORY_SIZE |
Maximum memory size (MB) | 1024 |
DEFAULT_TAGS |
Default tags for memories | general |
- Navigate to http://localhost:8080
- Click "Add Memory"
- Enter your content and tags
- Save to make it available across all connected clients
From any connected MCP client, use the memory functions:
# Add a new memory
store_memory("Important project details", ["project", "planning"])
# Search memories
search_memories("project planning")
# List all tags
list_tags()
- Tagging: Use descriptive tags to organize memories (
work,personal,research, etc.) - Search: Semantic search finds relevant memories even with different wording
- Updates: Memories can be updated or deleted through the web UI
- Backup: Regular backups are automatically created in
./backups/
| Function | Description | Parameters |
|---|---|---|
store_memory |
Store new memory | content: string, tags: string[] |
search_memories |
Search existing memories | query: string, limit?: number |
get_memory |
Get specific memory | id: string |
update_memory |
Update existing memory | id: string, content: string, tags: string[] |
delete_memory |
Delete memory | id: string |
list_tags |
List all available tags | None |
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Server health status |
/memories |
GET | List all memories |
/memories |
POST | Create new memory |
/memories/:id |
GET | Get specific memory |
/memories/:id |
PUT | Update memory |
/memories/:id |
DELETE | Delete memory |
/search |
POST | Search memories |
/tags |
GET | List all tags |
The Docker Compose setup includes:
- openrod-server: Main MCP server application
- openrod-ui: Web interface for memory management
- vector-db: Vector database for memory storage
- nginx: Reverse proxy for routing
- Local-First: All data stays on your machine
- No External Calls: No data sent to external services
- Encrypted Storage: Vector database uses encryption at rest
- Access Control: Web UI can be protected with authentication
# Clone and setup
git clone https://github.com/Open-ROD/openrod.git
cd openrod
# Install dependencies
npm install
# Development mode
npm run dev
# Build for production
npm run build# Unit tests
npm test
# Integration tests
npm run test:integration
# E2E tests
npm run test:e2eWe welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Plugin system for custom memory processors
- Multi-user support with role-based access
- Integration with external knowledge bases
- Mobile app for memory management
- Advanced analytics and insights
- Cloud deployment options
- Built on the Model Context Protocol
- Vector database powered by QDrant
- Web UI built with Angular
- Community contributors and testers
Made with β€οΈ by the OpenROD community