Provides persistent multimodal context storage that multiple LLM agents can share through thread-based scoping. You get 13 tools including store_context, search_context, and update_context for managing text and images with metadata filtering, tag-based organization, and date range queries. The real power is in the optional search capabilities: semantic search with embeddings from Ollama, OpenAI, or HuggingFace, full-text search with stemming and boolean queries, or hybrid search combining both with reciprocal rank fusion. Includes automatic LLM-based summarization for search results and cross-encoder reranking for precision. Runs on SQLite by default or PostgreSQL for high-concurrency deployments. Reach for this when you need agents to build and query shared context across conversations without losing state.
A high-performance Model Context Protocol (MCP) server providing persistent multimodal context storage for LLM agents. Built with FastMCP, this server enables seamless context sharing across multiple agents working on the same task through thread-based scoping.
[!WARNING] Upgrading from v2.x? Version 3.x.x uses a new database schema with UUIDv7 primary keys. Existing v2.x databases require a one-time data migration before they can be used with v3.x.x. The opt-in CLI
mcp-context-server-migrateships with the server.See the Migration Guide before upgrading. Fresh installations are unaffected.
text_content in all search tool results for better agent context efficiency (enabled by default with Ollama)ENABLE_FTS=auto); needs no extra dependenciesENABLE_SEMANTIC_SEARCH=auto) whenever an embedding provider is available (embedding generation is on by default)ENABLE_HYBRID_SEARCH=auto) whenever at least one of full-text or semantic search is availablegrep_context) — the precise-locate complement to full-text/semantic search, with ripgrep-style output modes and bounded results. Auto-enabled by default (ENABLE_GREP_CONTEXT=auto), pure-Python so it behaves identically on SQLite and PostgreSQLnavigate_context builds an on-demand Markdown-heading table of contents per record, with the entry summary as the root node; optional per-node LLM summaries (on by default) enrich each section. Pair with read_context_range to extract any sectionread_context_range returns a slice of one record by character range, line range, or outline node_id — so an agent can read only the relevant span of a long record instead of the whole thingENABLE_EMBEDDING_COMPRESSION=false to opt out and keep fp32 storage. See the Embedding Compression GuideThe fastest way to connect the MCP Context Server to Claude Code is the one-command Docker bootstrap.
For step-by-step instructions, prerequisites, troubleshooting, and update/uninstall commands, see the Connecting to Your AI Assistant Guide.
The server is fully configured via environment variables, supporting core settings, transport, authentication, embedding providers, summary generation, search features, database tuning, and more. Variables can be set in your MCP client configuration, in a .env file, or directly in the shell.
For the complete reference of all environment variables with types, defaults, constraints, and descriptions, see the Environment Variables Reference.
Summary generation automatically creates concise LLM-based summaries for each stored context entry. Summaries are returned in the summary field of all search tool results alongside truncated text_content, providing dense, informative summaries that help agents determine relevance without fetching full entries.
For detailed instructions including all providers (Ollama, OpenAI, Anthropic), model selection, and custom prompt configuration, see the Summary Generation Guide.
Semantic search is auto-enabled by default (ENABLE_SEMANTIC_SEARCH=auto): the semantic_search_context tool registers automatically whenever an embedding provider is available (embedding generation is on by default), and skips quietly otherwise. For detailed instructions on the multiple embedding providers (Ollama, OpenAI, Azure, HuggingFace, Voyage) and how to control the toggle explicitly, see the Semantic Search Guide.
Full-text search is auto-enabled by default (ENABLE_FTS=auto) and needs no extra dependencies, using the built-in database FTS engine (FTS5 on SQLite, tsvector on PostgreSQL). For linguistic processing, stemming, ranking, and boolean queries, see the Full-Text Search Guide.
Hybrid search is auto-enabled by default (ENABLE_HYBRID_SEARCH=auto): the hybrid_search_context tool registers automatically whenever at least one of full-text or semantic search is available. For combined FTS + semantic search using Reciprocal Rank Fusion (RRF), see the Hybrid Search Guide.
For comprehensive metadata filtering including 16 operators, nested JSON paths, and performance optimization, see the Metadata Guide.
The server supports multiple database backends, selectable via the STORAGE_BACKEND environment variable. SQLite (default) provides zero-configuration local storage perfect for single-user deployments. PostgreSQL offers high-performance capabilities with 10x+ write throughput for multi-user and high-traffic deployments.
For detailed configuration instructions including PostgreSQL setup with Docker, Supabase integration, connection methods, and troubleshooting, see the Database Backends Guide.
The MCP Context Server exposes 16 MCP tools for context management:
Core Operations: store_context, search_context, get_context_by_ids, delete_context, update_context, list_threads, get_statistics
Search Tools: semantic_search_context, fts_search_context, hybrid_search_context
Navigation Tools (locate / navigate / extract): grep_context, navigate_context, read_context_range
Batch Operations: store_context_batch, update_context_batch, delete_context_batch
For complete tool documentation including parameters, return values, filtering options, and examples, see the API Reference. For when to use grep vs full-text vs semantic search, the index_tree, and partial reads, see Grep, Navigation & Partial Reads.
For production deployments with HTTP transport and container orchestration, Docker Compose configurations are available for SQLite, PostgreSQL, and external PostgreSQL (Supabase). See the Docker Deployment Guide for setup instructions and client connection details.
For Kubernetes deployments, a Helm chart is provided with configurable values for different environments. See the Helm Deployment Guide for installation instructions, or the Kubernetes Deployment Guide for general Kubernetes concepts.
For HTTP transport deployments requiring authentication, see the Authentication Guide for bearer token configuration.
MCP Context Server is licensed under the Elastic License 2.0 (ELv2).
In short: you may use, copy, modify, distribute, and run the software freely and at no cost — for personal projects, inside companies of any size, and as part of commercial work. The one thing you may not do without a commercial agreement is provide the software to third parties as a hosted or managed service that gives users access to any substantial set of its features or functionality (for example, a cloud "memory for agents" offering built on it).
See Commercial Licensing for plain-language examples of what is and is not permitted, and contact alexfeel@protonmail.com for commercial licensing, including hosted or managed service rights.
Releases up to and including v2.2.2 were published under the MIT License and remain available under it; the Elastic License 2.0 applies from v3.0.0 onward.
LOG_LEVELLog level
STORAGE_BACKENDStorage backend type: sqlite (default) or postgresql
MAX_IMAGE_SIZE_MBMaximum individual image size in megabytes
MAX_TOTAL_SIZE_MBMaximum total request size in megabytes
DB_PATHCustom database file location path
POOL_MAX_READERSMaximum number of concurrent read connections in the pool
POOL_MAX_WRITERSMaximum number of concurrent write connections in the pool
POOL_CONNECTION_TIMEOUT_SConnection timeout in seconds
POOL_IDLE_TIMEOUT_SIdle connection timeout in seconds
POOL_HEALTH_CHECK_INTERVAL_SConnection health check interval in seconds
RETRY_MAX_RETRIESMaximum number of retry attempts for failed operations
RETRY_BASE_DELAY_SBase delay in seconds between retry attempts
RETRY_MAX_DELAY_SMaximum delay in seconds between retry attempts
RETRY_JITTEREnable random jitter in retry delays
RETRY_BACKOFF_FACTORExponential backoff multiplication factor for retries
SQLITE_FOREIGN_KEYSEnable SQLite foreign key constraints
SQLITE_JOURNAL_MODESQLite journal mode (e.g., WAL, DELETE)
SQLITE_SYNCHRONOUSSQLite synchronous mode (e.g., NORMAL, FULL, OFF)
SQLITE_TEMP_STORESQLite temporary storage location (e.g., MEMORY, FILE)
SQLITE_MMAP_SIZESQLite memory-mapped I/O size in bytes
SQLITE_CACHE_SIZESQLite cache size (negative value for KB, positive for pages)
SQLITE_PAGE_SIZESQLite page size in bytes
SQLITE_WAL_AUTOCHECKPOINTSQLite WAL autocheckpoint threshold in pages
SQLITE_BUSY_TIMEOUT_MSSQLite busy timeout in milliseconds
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent