MCP Memory Bank Server
by bsmi021
MCP Memory Bank Server is a context management system for Large Language Models (LLMs). It provides persistent, project-specific memory capabilities that enhance your AI's understanding and response quality.
View on GitHub
Last updated: N/A
# MCP Memory Bank Server 🧠
A powerful, context management system for Large Language Models (LLMs). Built with ChromaDB and modern embedding technologies, it provides persistent, project-specific memory capabilities that enhance your AI's understanding and response quality.
✨ Key Features
- 🚀 High Performance: Optimized vector storage with ChromaDB
- 🔒 Project Isolation: Separate context spaces for different projects
- 🔍 Smart Search: Both semantic and keyword-based search capabilities
- 🔄 Real-time Updates: Dynamic content management with automatic chunking
- 🎯 Precise Recall: Advanced embedding generation via @xenova/transformers
- 🐳 Easy Deployment: Docker-ready with persistent storage
🏗️ System Architecture
graph TB
Client[Client Application]
MCP[MCP Protocol Layer]
Tools[Tool Registration]
PS[Project Service]
ES[Embedding Service]
SS[Search Service]
DS[Database Service]
ChromaDB[(ChromaDB)]
Client -->|API Calls| MCP
MCP -->|Register| Tools
Tools -->|Project Ops| PS
Tools -->|Search Ops| SS
PS -->|Store/Retrieve| DS
SS -->|Query| DS
SS -->|Generate| ES
DS -->|Vector Ops| ChromaDB
subgraph Core Services
PS
ES
SS
DS
end
subgraph External Dependencies
ChromaDB
end
style Client fill:#f9f,stroke:#333,stroke-width:2px
style MCP fill:#bbf,stroke:#333,stroke-width:2px
style ChromaDB fill:#bfb,stroke:#333,stroke-width:2px
style Core Services fill:#fff,stroke:#333,stroke-width:2px,stroke-dasharray: 5 5
🚀 Quick Start
Prerequisites
- Node.js (v18+ LTS recommended)
- npm (v9+ recommended)
- Docker Desktop (latest stable)
- 2GB+ free RAM
- 1GB+ free disk space
One-Command Setup
# Clone, install, and run in development mode
git clone https://github.com/your-org/mcp-memory-bank.git && cd mcp-memory-bank && npm install && docker-compose up -d && npm run dev
🔄 Project Lifecycle
stateDiagram-v2
[*] --> ProjectCreation: memoryBank_createProject
ProjectCreation --> Initialization: memoryBank_initializeProject
state Initialization {
[*] --> CreateStandardFiles
CreateStandardFiles --> ProjectBrief: projectbrief.md
CreateStandardFiles --> ActiveContext: activeContext.md
CreateStandardFiles --> ProductContext: productContext.md
CreateStandardFiles --> SystemPatterns: systemPatterns.md
CreateStandardFiles --> TechContext: techContext.md
CreateStandardFiles --> Progress: progress.md
}
Initialization --> ContentManagement
state ContentManagement {
[*] --> FileOperations
FileOperations --> UpdateFile: memoryBank_updateFile
FileOperations --> GetFile: memoryBank_getFile
FileOperations --> ListFiles: memoryBank_listFiles
FileOperations --> DeleteFile: memoryBank_deleteFile
state Search {
[*] --> SemanticSearch
[*] --> KeywordSearch
}
FileOperations --> Search: memoryBank_search
}
ContentManagement --> ProjectDeletion: memoryBank_deleteProject
ProjectDeletion --> [*]
📚 API Documentation
Core Tools
Project Management
memoryBank_createProject
: Create isolated project spacesmemoryBank_initializeProject
: Create standard Memory Bank files in a projectmemoryBank_deleteProject
: Clean up project datamemoryBank_listProjects
: View all projectsmemoryBank_getProjectByName
: Fetch project details
Content Management
memoryBank_updateFile
: Store/update content with auto-chunkingmemoryBank_getFile
: Retrieve full contentmemoryBank_listFiles
: View stored filesmemoryBank_deleteFile
: Remove contentmemoryBank_search
: Semantic/keyword search
🔧 Configuration
Environment Variables
CHROMADB_URL=http://localhost:8000
MCP_MEMBANK_EMBEDDING_MODEL=Xenova/all-MiniLM-L6-v2
# Optional: Controls the logging verbosity. Defaults to 'info'.
# Possible values: 'debug', 'info', 'warn', 'error'
LOG_LEVEL=info
🐛 Troubleshooting
Common Issues
-
ChromaDB Connection Failed
# Check if container is running docker ps | grep chroma # Restart if needed docker-compose restart
-
Memory Issues
- Ensure Docker has sufficient memory allocation
- Consider reducing batch sizes in heavy operations
🤝 Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
📈 Performance Considerations
- Vector operations scale with embedding dimensions
- Batch operations for better throughput
- Use appropriate chunk sizes (default: 512 tokens)
- Consider index optimization for large datasets
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by the bsmi021