SyncContext
Provides embedding generation using locally-hosted Ollama models, enabling offline semantic memory search.
Provides embedding generation using OpenAI's API, enabling semantic search over team memories.
Provides persistent storage for memories and vectors using PostgreSQL with pgvector for relational and semantic queries.
Provides sub-millisecond vector search using Redis Stack for fast memory retrieval.
Click on "Deploy 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., "@SyncContext save: use React with TypeScript for frontend"
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.
SyncContext
Shared team memory for AI coding agents. Sync context, decisions, and knowledge across your entire team via the Model Context Protocol.
The Problem
AI coding agents (Claude Code, Cursor, Windsurf) each maintain isolated context. Developer A's agent knows nothing about Developer B's decisions. This leads to:
Conflicting architecture decisions across team members
Repeated mistakes and lost institutional knowledge
Painful onboarding for new developers
No shared understanding between frontend, backend, and infra
Related MCP server: AIVectorMemory
The Solution
SyncContext provides a shared semantic memory layer that connects your team's AI agents. One token per project, shared brain, unlimited team members.
Developer A (Frontend) --> saves: "Button uses Tailwind, prop X is required"
Developer B (Backend) --> searches: "frontend patterns" --> gets full context
Developer C (New hire) --> runs: get_project_context --> instant onboardingHow It Works
Your team deploys SyncContext (self-hosted or cloud)
Each developer adds the server URL + their project token to their MCP client
On first connection, the project is auto-created in the database
AI agents read and write shared memories scoped to the project
MCP Client (Claude Code, Cursor)
│
│ Authorization: Bearer <project-token>
│ X-Project-Name: "My Project"
│
▼
SyncContext Server (HTTPS)
│
├── New token? → Auto-create project in DB
├── Known token? → Load existing project
│
▼
PostgreSQL + pgvector (semantic search)Quick Start
Option 1: Connect to a hosted instance
Add to your .mcp.json (Claude Code) or MCP settings (Cursor):
{
"mcpServers": {
"synccontext": {
"url": "https://your-synccontext-server.com/mcp",
"headers": {
"Authorization": "Bearer your-project-token",
"X-Project-Name": "My Project"
}
}
}
}That's it. The project is auto-created on first connection.
Option 2: Self-hosted with Docker
git clone https://github.com/infinity-ai-dev/SyncContext.git
cd SyncContext
cp .env.example .env
# Edit .env: set SYNCCONTEXT_GEMINI_API_KEY
docker compose up -dOption 3: Local development (stdio)
# Requires PostgreSQL with pgvector
uv sync
uv run synccontextMCP Client Configuration
Cloud / HTTP mode (recommended)
Works with any MCP client that supports HTTP transport:
{
"mcpServers": {
"synccontext": {
"url": "https://your-server.com/mcp",
"headers": {
"Authorization": "Bearer your-project-token",
"X-Project-Name": "My Project"
}
}
}
}Local / stdio mode
For local development with a direct database connection:
{
"mcpServers": {
"synccontext": {
"command": "uv",
"args": ["--directory", "/path/to/SyncContext", "run", "synccontext"],
"env": {
"SYNCCONTEXT_PROJECT_TOKEN": "my-team-token",
"SYNCCONTEXT_DATABASE_URL": "postgresql://user:pass@localhost:5432/synccontext",
"SYNCCONTEXT_GEMINI_API_KEY": "your-key"
}
}
}
}Tools (14 total)
Memory Management
Tool | Description |
| Store decisions, patterns, bugs, conventions with metadata |
| Retrieve a specific memory by UUID |
| Update content (auto re-embeds if changed) |
| Remove a specific memory |
| Import multiple memories at once |
Search & Discovery
Tool | Description |
| Semantic search across all team knowledge |
| Find context about specific files |
| Discover related memories by similarity |
| Browse recent memories with filters |
Project Overview
Tool | Description |
| Full project summary (onboarding) |
| All knowledge categories with counts |
| Who's contributing knowledge |
Admin
Tool | Description |
| Create a new project (admin token required) |
| List all registered projects (admin token required) |
Architecture
┌─────────────────────────────────────┐
│ Claude Code / Cursor / Windsurf │
│ (MCP Client) │
└──────────┬──────────────────────────┘
│ HTTPS + Bearer Token
┌──────────▼──────────────────────────┐
│ SyncContext MCP Server │
│ ┌────────────┐ ┌───────────────┐ │
│ │ Auth │ │ Per-request │ │
│ │ Middleware │──│ Project Scope │ │
│ └────────────┘ └───────────────┘ │
│ ┌────────────┐ ┌───────────────┐ │
│ │ Embedding │ │ Memory + │ │
│ │ Provider │ │ Search Service│ │
│ └────────────┘ └───────────────┘ │
└──────────┬──────────────────────────┘
│
┌──────────▼──────────────────────────┐
│ PostgreSQL + pgvector │
│ ┌──────────┐ ┌──────────────────┐ │
│ │ projects │ │ memories + │ │
│ │ (tokens) │──│ memory_vectors │ │
│ └──────────┘ └──────────────────┘ │
└─────────────────────────────────────┘Multi-Project Isolation
Each project token maps to an isolated namespace. Multiple teams share the same server with full data isolation:
Token A ("sc_frontend...") → Project "Frontend App" → memories scoped to frontend
Token B ("sc_backend...") → Project "Backend API" → memories scoped to backend
Token C ("sc_infra...") → Project "Infrastructure" → memories scoped to infraEmbedding Providers (auto-detected)
Provider | Dimensions | Cost | Offline | Detected by |
Gemini | 768 | Free (1500 req/min) | No |
|
OpenAI | 1536 | $0.02/1M tokens | No |
|
Ollama | 768 | Free | Yes |
|
Vector Store Backends
Backend | Best For | Persistence |
pgvector (default) | Relational queries + vectors | Disk (durable) |
Redis Stack | Sub-ms latency | AOF + volume (durable) |
Configuration
All settings via environment variables (prefix SYNCCONTEXT_):
Variable | Default | Description |
| — | Default project token (stdio mode) |
| — | Admin token for create/list projects |
|
| PostgreSQL connection string |
|
|
|
|
|
|
| — | Gemini API key |
| — | OpenAI API key |
| — | Ollama server URL |
|
|
|
|
| HTTP bind address |
|
| HTTP port |
Self-Hosted Deployment (Docker Swarm)
Prerequisites
Docker Swarm with Traefik
PostgreSQL with pgvector extension
A domain pointing to your server
1. Prepare the database
# Install pgvector
docker exec $(docker ps -q -f name=postgres) bash -c \
"apt-get update && apt-get install -y postgresql-16-pgvector"
# Create database + extensions
docker exec $(docker ps -q -f name=postgres) psql -U postgres -c "CREATE DATABASE synccontext"
docker exec $(docker ps -q -f name=postgres) psql -U postgres -d synccontext -c \
'CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; CREATE EXTENSION IF NOT EXISTS "vector";'2. Deploy the stack
See deploy/swarm-stack.yml for a complete Portainer-ready stack with Traefik integration.
3. Tables are created automatically
On first startup, the container runs migrations and creates all tables. Check logs to confirm.
Development
uv sync --extra dev
uv run pytest tests/ -v # 53 tests
uv run ruff check core/ server/
uv run synccontext # run locally (stdio)Docker Images
Multi-arch images for linux/amd64 and linux/arm64:
docker pull infinitytools/synccontext:latestRoadmap
14 MCP tools (CRUD, search, bulk, admin)
pgvector + Redis backends
Gemini / OpenAI / Ollama embeddings (auto-detected)
Docker multi-arch builds (amd64 + arm64)
Multi-project with per-request auth
Auto-create projects from Bearer token
Auto-migrations on container startup
SyncContext Cloud (managed SaaS)
Web dashboard for memory management
Webhook notifications on memory changes
Memory expiration / archival policies
RAG integration (index entire codebases)
License
MIT — see LICENSE for details.
Available Tools
14 toolsbulk_save_memoriesA
Save multiple memories at once.
Args: memories: List of memory objects with 'content' (required) and optional 'author', 'tags', 'file_path', 'memory_type'
Inputs: memories (required). Returns: result
create_projectB
Create a new project. Returns the generated token.
Args: name: Display name for the project description: Optional project description admin_token: Admin authentication token
Inputs: name (required), admin_token, description. Returns: result
delete_memoryA
Delete a specific memory by its ID.
Args: memory_id: UUID of the memory to delete
Inputs: memory_id (required). Returns: result
find_similarB
Find memories semantically similar to an existing memory.
Args: memory_id: UUID of the source memory top_k: Maximum number of similar memories (default 5)
Inputs: memory_id (required), top_k. Returns: result
get_memoryA
Get a single memory by its UUID.
Args: memory_id: UUID of the memory to retrieve
Inputs: memory_id (required). Returns: result
get_project_contextA
Get a summary of the project's shared knowledge base.
Use this when onboarding to a project or when you need an overview of what the team has documented so far.
Inputs: no named parameters. Returns: result
list_contributorsA
List all contributors who have saved memories in this project.
Inputs: no named parameters. Returns: result
list_memoriesA
List recent memories from the project.
Args: limit: Maximum number of memories to return (default 20) tag: Filter by tag author: Filter by author memory_type: Filter by type (general, decision, bug, pattern, onboarding)
Inputs: tag, limit, author, memory_type. Returns: result
list_projectsA
List all registered projects. Requires admin token.
Args: admin_token: Admin authentication token
Inputs: admin_token. Returns: result
list_tagsA
List all unique tags used in this project with their usage counts.
Inputs: no named parameters. Returns: result
save_memoryA
Save a memory to the shared team knowledge base.
Use this to store architecture decisions, patterns, bugs, conventions, or any context useful for team members and AI agents.
Args: content: The memory content to save author: Who is saving this (developer name/email) tags: Categorization tags (e.g. ["auth", "frontend", "decision"]) file_path: Related file path if applicable memory_type: Type: general, decision, bug, pattern, onboarding
Inputs: content (required), tags, author, file_path, +1 more. Returns: result
search_by_fileA
Find all memories related to a specific file path.
Args: file_path: File path to search for (substring match, case-insensitive) limit: Maximum number of results (default 20)
Inputs: file_path (required), limit. Returns: result
search_memoriesA
Search team memories by semantic similarity.
Use this to find relevant context, decisions, patterns, or conventions that team members have previously documented.
Args: query: Natural language search query top_k: Maximum number of results (default 5) tag: Filter by specific tag author: Filter by specific author
Inputs: query (required), tag, top_k, author. Returns: result
update_memoryB
Update an existing memory. Re-embeds automatically if content changes.
Args: memory_id: UUID of the memory to update content: New content (triggers re-embedding if changed) tags: New tags (replaces existing) file_path: New file path memory_type: New memory type
Inputs: memory_id (required), tags, content, file_path, +1 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 14 tools
Most tools target distinct resource-action pairs, and descriptions clarify intent. The main overlaps are save_memory/bulk_save_memories and search_memories/find_similar, but their singular vs. bulk and query vs. example-based retrieval differences are reasonably clear.
The dominant verb_noun pattern (save_memory, list_memories, get_memory, delete_memory, update_memory, create_project) is clear and consistent. A couple of names like find_similar and search_by_file deviate from the object-oriented pattern but remain readable and predictable.
14 tools is within a reasonable scope for a shared knowledge base covering memory CRUD, project management, and metadata exploration. The count is slightly higher than necessary because bulk_save_memories and find_similar add convenience rather than essential functionality.
The memory lifecycle is well covered with create, read, update, delete, list, and multiple search modes, plus project overview and tag/contributor metadata. Minor gaps exist around project update/delete and a bulk delete operation, but these are not likely to block core workflows.
Maintenance
Related MCP Connectors
Team memory for AI coding agents and code reviews, reviewed by humans and served over MCP.
An MCP memory server. One memory your agents share — across models, devices and apps.
shared AI-context layer for teams — persistent memory your agents search and update over MCP
Hosted MCP memory for coding agents: persistent across sessions, editable markdown, team sharing.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA self-hosted MCP server that provides AI assistants with a shared, persistent SQLite-backed memory for storing and retrieving project context, decisions, and discoveries. It enables cross-session continuity and team-wide knowledge sharing to keep AI coding tools aligned and informed.3MIT
- AlicenseBqualityDmaintenanceMCP server that provides cross-session persistent memory for AI coding assistants using local vector database and semantic search, enabling automatic recall of project context, issues, and tasks.9114 PyPI92Apache 2.0
- FlicenseNot gradedqualityDmaintenanceA local MCP server that provides semantic memory storage and retrieval for coding and AI agents, enabling durable context across chat sessions.39 npm4-
- AlicenseAqualityDmaintenanceMCP server for semantic code indexing using vector embeddings, enabling AI agents to maintain persistent memory of codebases through natural language queries and intelligent chunking.1912 npm4MIT