mcp-synaptic
Memory-enhanced MCP server with local RAG database and expiring memory capabilities
Documentation
MCP Synaptic
A memory-enhanced MCP (Model Context Protocol) server with local RAG (Retrieval-Augmented Generation) database and expiring memory capabilities.
Features
๐ง Memory Management
- Expiring Memories: Store temporary memories with configurable TTL (Time To Live)
- Memory Types: Support for different memory categories (short-term, long-term, ephemeral)
- Automatic Cleanup: Background processes to remove expired memories
- Redis Integration: Optional Redis backend for distributed memory storage
๐ RAG Database
- Local Vector Storage: ChromaDB-based vector database for document storage
- Embedding Models: Built-in support for sentence-transformers models
- Semantic Search: Similarity-based document retrieval
- Document Management: Add, update, and delete documents with versioning
๐ Real-time Communication
- Server-Sent Events (SSE): Real-time updates for memory and RAG operations
- MCP Protocol: Full Model Context Protocol implementation
- WebSocket Support: Alternative real-time communication channel
- Event Streaming: Live updates for memory expiration and document changes
๐ณ Docker Ready
- Organized Docker Structure: Clean separation of base, overrides, and variants
- Multi-Environment Support: Laptop (Traefik HTTP) and Desktop (Traefik WEB) configurations
- Development & Production: Dedicated variants with appropriate optimizations
- Flexible Deployment: Composable configuration files for different scenarios
Quick Start
Prerequisites
- Python 3.11 or higher
- UV package manager
- Docker (optional, for containerized deployment)
Installation
1. Clone the repository:
git clone https://github.com/your-org/mcp-synaptic.git
cd mcp-synaptic2. Install dependencies:
# For API-based embeddings (recommended - lightweight)
uv sync
# For local embeddings (includes PyTorch - heavy)
uv sync --extra local-embeddings3. Initialize the project:
uv run mcp-synaptic init4. Start the server:
uv run mcp-synaptic serverThe server will start on `http://localhost:8000` by default.
Docker Deployment
1. Build and run with Docker Compose:
docker-compose up --build2. Or run individual container:
docker build -t mcp-synaptic .
docker run -p 8000:8000 mcp-synapticConfiguration
Environment Variables
Create a `.env` file in the project root (use `.env.example` as template):
# Server Configuration
SERVER_HOST=localhost
SERVER_PORT=8000
DEBUG=false
LOG_LEVEL=INFO
# Database Configuration
SQLITE_DATABASE_PATH=./data/synaptic.db
CHROMADB_PERSIST_DIRECTORY=./data/chroma
# Memory Configuration
DEFAULT_MEMORY_TTL_SECONDS=3600
MAX_MEMORY_ENTRIES=10000
MEMORY_CLEANUP_INTERVAL_SECONDS=300
# RAG Configuration
EMBEDDING_MODEL=text-embedding-3-small
EMBEDDING_PROVIDER=api
EMBEDDING_API_BASE=http://localhost:4000
EMBEDDING_API_KEY=your-api-key-here
MAX_RAG_RESULTS=10
RAG_SIMILARITY_THRESHOLD=0.7
# Redis (Optional)
REDIS_URL=redis://localhost:6379/0
REDIS_ENABLED=falseMemory Types
- Ephemeral: Very short-lived memories (seconds to minutes)
- Short-term: Session-based memories (minutes to hours)
- Long-term: Persistent memories (days to weeks)
- Permanent: Never-expiring memories
Embedding Configuration
API-based Embeddings (Recommended)
- Lightweight deployment without PyTorch dependencies
- Works with LiteLLM, OpenAI API, or any OpenAI-compatible endpoint
- Set `EMBEDDING_PROVIDER=api` and configure `EMBEDDING_API_BASE`
Local Embeddings
- Includes full PyTorch and sentence-transformers
- No external API dependency but much larger container
- Set `EMBEDDING_PROVIDER=local` and install with `--extra local-embeddings`
Usage Examples
Python API
import asyncio
from mcp_synaptic import SynapticServer, Settings
async def main():
settings = Settings()
server = SynapticServer(settings)
# Add a memory with 1-hour expiration
await server.memory_manager.add(
key="user_preference",
data={"theme": "dark", "language": "en"},
ttl_seconds=3600
)
# Store a document in RAG database
await server.rag_database.add_document(
content="MCP Synaptic is a memory-enhanced server",
metadata={"source": "documentation", "version": "1.0"}
)
# Search for similar documents
results = await server.rag_database.search(
query="memory enhanced server",
limit=5
)
await server.start()
if __name__ == "__main__":
asyncio.run(main())CLI Usage
# Start server with custom configuration
uv run mcp-synaptic server --host 0.0.0.0 --port 9000 --debug
# Initialize new project
uv run mcp-synaptic init ./my-project
# Show version
uv run mcp-synaptic versionSSE Client Example
const eventSource = new EventSource('http://localhost:8000/events');
eventSource.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('Event:', data);
};
// Listen for memory expiration events
eventSource.addEventListener('memory_expired', function(event) {
const data = JSON.parse(event.data);
console.log('Memory expired:', data.key);
});
// Listen for RAG document updates
eventSource.addEventListener('document_added', function(event) {
const data = JSON.parse(event.data);
console.log('Document added:', data.id);
});API Endpoints
Memory Management
- `POST /memory` - Add new memory
- `GET /memory/{key}` - Retrieve memory by key
- `DELETE /memory/{key}` - Delete memory
- `GET /memory` - List all memories
RAG Database
- `POST /rag/documents` - Add document
- `GET /rag/documents/{id}` - Get document by ID
- `POST /rag/search` - Search documents
- `DELETE /rag/documents/{id}` - Delete document
Real-time Events
- `GET /events` - SSE endpoint for real-time updates
- `GET /ws` - WebSocket endpoint (alternative)
Development
Setup Development Environment
# Install development dependencies
uv sync --group dev
# Install pre-commit hooks
pre-commit install
# Run tests
uv run pytest
# Run type checking
uv run mypy mcp_synaptic
# Run linting
uv run ruff check mcp_synaptic
uv run black mcp_synaptic
# Run all checks
uv run pytest && uv run mypy mcp_synaptic && uv run ruff check mcp_synapticProject Structure
mcp-synaptic/
โโโ mcp_synaptic/ # Main package
โ โโโ core/ # Core server functionality
โ โโโ mcp/ # MCP protocol implementation
โ โโโ sse/ # Server-Sent Events
โ โโโ rag/ # RAG database
โ โโโ memory/ # Memory management
โ โโโ config/ # Configuration
โ โโโ utils/ # Utilities
โโโ tests/ # Test suite
โ โโโ unit/ # Unit tests
โ โโโ integration/ # Integration tests
โโโ data/ # Data storage
โโโ docker/ # Docker configuration
โโโ docs/ # DocumentationContributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
Development Guidelines
- Follow PEP 8 style guidelines
- Add type hints to all functions
- Write comprehensive tests
- Update documentation for new features
- Use conventional commit messages
Testing
# Run all tests
uv run pytest
# Run with coverage
uv run pytest --cov=mcp_synaptic --cov-report=html
# Run specific test file
uv run pytest tests/unit/test_memory.py
# Run integration tests only
uv run pytest tests/integration/Performance
Benchmarks
- Memory Operations: 10,000+ ops/sec
- RAG Search: Sub-100ms response time
- Concurrent Connections: 1,000+ SSE connections
- Memory Footprint: <100MB baseline
Optimization Tips
- Use Redis for distributed setups
- Tune embedding model for your use case
- Configure appropriate TTL values
- Monitor memory cleanup intervals
Deployment
Production Deployment
# Using Docker Compose
docker-compose -f docker-compose.prod.yml up -d
# Using systemd service
sudo systemctl enable mcp-synaptic
sudo systemctl start mcp-synapticMonitoring
- Health check endpoint: `GET /health`
- Metrics endpoint: `GET /metrics`
- Admin interface: `GET /admin`
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Model Context Protocol for the MCP specification
- ChromaDB for vector database capabilities
- FastAPI for the web framework
- Sentence Transformers for embeddings
Support
- ๐ Documentation
- ๐ Issue Tracker
- ๐ฌ Discussions
- ๐ง Email Support
MCP Synaptic - Bridging memories and knowledge for intelligent AI systems.
Frequently asked questions
What is mcp-synaptic?
mcp-synaptic is Memory-enhanced MCP server with local RAG database and expiring memory capabilities
How do I install mcp-synaptic?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is mcp-synaptic open source?
Yes โ it is hosted on GitHub at https://github.com/jvanmelckebeke/mcp-synaptic and has 3 stars.
Related MCP tools
Damn Vulnerable MCP Server Python-based implementation. Trusted by 1200+ developers. Trusted by 1200+ developers. Trusted by 1200+ developers.
A Model Context Protocol (MCP) server that enables secure interaction with MySQL databases Python-based implementation. Trusted by 900+ developers.
Query MCP enables end-to-end management of Supabase via chat interface: read & write query executions, management API support, automatic migration versioning...
Model Context Protocol with Neo4j Python-based implementation. Trusted by 700+ developers. Trusted by 700+ developers. Trusted by 700+ developers.
An MCP server that provides control over Android devices via adb Python-based implementation. Trusted by 500+ developers.
A Model Context Protocol (MCP) server for PostgreSQL databases with enhanced capabilities for AI agents. Python-based implementation.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP