io.github.alex-feel/mcp-context-server

Official registry AI and agents

An MCP server that provides persistent multimodal context storage for LLM agents.

What can you do with io.github.alex-feel/mcp-context-server?

  • Multimodal Context Storage: Store and retrieve both text and images
  • UUIDv7 Context Identifiers: Every context entry is identified by a 32-character lowercase hex UUIDv7 value, providing time-ordered, globally unique IDs with a stable lex-string ordering
  • Thread-Based Scoping: Agents working on the same task share context through thread IDs
  • Per-Record Access Control: Every entry has an owner, a private or public visibility, and optional user or group grants, enforced on every read, update and delete on both SQLite and PostgreSQL. With IdP-issued JWTs, each caller finds, counts and chan...
  • Anonymous Read Access: Hand readers without an identity-provider account one shared token that reads public entries and can never write: the server refuses every write by the principal ACCESS_CONTROL_ANONYMOUS_PRINCIPAL names, and the token must exp...
  • PostgreSQL Row-Level Security (optional): With ENABLE_POSTGRESQL_RLS=true, PostgreSQL also enforces the access model in the database, so a defect in how a query applies the access rules cannot expose another principal's entries. Reads go through an ow...
  • Flexible Metadata Filtering: Store custom structured data with any JSON-serializable fields and filter using 16 powerful operators
  • Date Range Filtering: Filter context entries by creation timestamp using ISO 8601 format

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

PYPI package mcp-context-server
Claude Code
claude mcp add mcp-context-server -e 'LOG_LEVEL=<LOG_LEVEL>' -e 'STORAGE_BACKEND=<STORAGE_BACKEND>' -e 'MAX_IMAGE_SIZE_MB=<MAX_IMAGE_SIZE_MB>' -e 'MAX_TOTAL_SIZE_MB=<MAX_TOTAL_SIZE_MB>' -e 'DB_PATH=<DB_PATH>' -e 'POOL_MAX_READERS=<POOL_MAX_READERS>' -e 'POOL_MAX_WRITERS=<POOL_MAX_WRITERS>' -e 'POOL_CONNECTION_TIMEOUT_S=<POOL_CONNECTION_TIMEOUT_S>' -e 'POOL_IDLE_TIMEOUT_S=<POOL_IDLE_TIMEOUT_S>' -e 'POOL_HEALTH_CHECK_INTERVAL_S=<POOL_HEALTH_CHECK_INTERVAL_S>' -e 'RETRY_MAX_RETRIES=<RETRY_MAX_RETRIES>' -e 'RETRY_BASE_DELAY_S=<RETRY_BASE_DELAY_S>' -e 'RETRY_MAX_DELAY_S=<RETRY_MAX_DELAY_S>' -e 'RETRY_JITTER=<RETRY_JITTER>' -e 'RETRY_BACKOFF_FACTOR=<RETRY_BACKOFF_FACTOR>' -e 'SQLITE_FOREIGN_KEYS=<SQLITE_FOREIGN_KEYS>' -e 'SQLITE_JOURNAL_MODE=<SQLITE_JOURNAL_MODE>' -e 'SQLITE_SYNCHRONOUS=<SQLITE_SYNCHRONOUS>' -e 'SQLITE_TEMP_STORE=<SQLITE_TEMP_STORE>' -e 'SQLITE_MMAP_SIZE=<SQLITE_MMAP_SIZE>' -e 'SQLITE_CACHE_SIZE=<SQLITE_CACHE_SIZE>' -e 'SQLITE_PAGE_SIZE=<SQLITE_PAGE_SIZE>' -e 'SQLITE_WAL_AUTOCHECKPOINT=<SQLITE_WAL_AUTOCHECKPOINT>' -e 'SQLITE_BUSY_TIMEOUT_MS=<SQLITE_BUSY_TIMEOUT_MS>' -e 'SQLITE_WAL_CHECKPOINT=<SQLITE_WAL_CHECKPOINT>' -e 'SHUTDOWN_TIMEOUT_S=<SHUTDOWN_TIMEOUT_S>' -e 'SHUTDOWN_TIMEOUT_TEST_S=<SHUTDOWN_TIMEOUT_TEST_S>' -e 'QUEUE_TIMEOUT_S=<QUEUE_TIMEOUT_S>' -e 'QUEUE_TIMEOUT_TEST_S=<QUEUE_TIMEOUT_TEST_S>' -e 'CIRCUIT_BREAKER_FAILURE_THRESHOLD=<CIRCUIT_BREAKER_FAILURE_THRESHOLD>' -e 'CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S=<CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S>' -e 'CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS=<CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS>' -e 'POSTGRESQL_CONNECTION_STRING=<your postgresql_connection_string>' -e 'POSTGRESQL_HOST=<POSTGRESQL_HOST>' -e 'POSTGRESQL_PORT=<POSTGRESQL_PORT>' -e 'POSTGRESQL_USER=<POSTGRESQL_USER>' -e 'POSTGRESQL_PASSWORD=<your postgresql_password>' -e 'POSTGRESQL_DATABASE=<POSTGRESQL_DATABASE>' -e 'POSTGRESQL_POOL_MIN=<POSTGRESQL_POOL_MIN>' -e 'POSTGRESQL_POOL_MAX=<POSTGRESQL_POOL_MAX>' -e 'POSTGRESQL_POOL_TIMEOUT_S=<POSTGRESQL_POOL_TIMEOUT_S>' -e 'POSTGRESQL_COMMAND_TIMEOUT_S=<POSTGRESQL_COMMAND_TIMEOUT_S>' -e 'POSTGRESQL_MIGRATION_TIMEOUT_S=<POSTGRESQL_MIGRATION_TIMEOUT_S>' -e 'POSTGRESQL_MAX_INACTIVE_LIFETIME_S=<POSTGRESQL_MAX_INACTIVE_LIFETIME_S>' -e 'POSTGRESQL_MAX_QUERIES=<POSTGRESQL_MAX_QUERIES>' -e 'POSTGRESQL_TCP_KEEPALIVES_IDLE_S=<POSTGRESQL_TCP_KEEPALIVES_IDLE_S>' -e 'POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S=<POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S>' -e 'POSTGRESQL_TCP_KEEPALIVES_COUNT=<POSTGRESQL_TCP_KEEPALIVES_COUNT>' -e 'POSTGRESQL_STATEMENT_CACHE_SIZE=<POSTGRESQL_STATEMENT_CACHE_SIZE>' -e 'POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S=<POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S>' -e 'POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE=<POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE>' -e 'POSTGRESQL_SSL_MODE=<POSTGRESQL_SSL_MODE>' -e 'POSTGRESQL_SCHEMA=<POSTGRESQL_SCHEMA>' -e 'ENABLE_SEMANTIC_SEARCH=<ENABLE_SEMANTIC_SEARCH>' -e 'ENABLE_EMBEDDING_GENERATION=<ENABLE_EMBEDDING_GENERATION>' -e 'OLLAMA_HOST=<OLLAMA_HOST>' -e 'OLLAMA_AUTO_PULL=<OLLAMA_AUTO_PULL>' -e 'OLLAMA_PULL_TIMEOUT_S=<OLLAMA_PULL_TIMEOUT_S>' -e 'EMBEDDING_OLLAMA_TRUNCATE=<EMBEDDING_OLLAMA_TRUNCATE>' -e 'EMBEDDING_OLLAMA_NUM_CTX=<EMBEDDING_OLLAMA_NUM_CTX>' -e 'EMBEDDING_MODEL=<EMBEDDING_MODEL>' -e 'EMBEDDING_DIM=<EMBEDDING_DIM>' -e 'EMBEDDING_TIMEOUT_S=<EMBEDDING_TIMEOUT_S>' -e 'EMBEDDING_RETRY_MAX_ATTEMPTS=<EMBEDDING_RETRY_MAX_ATTEMPTS>' -e 'EMBEDDING_RETRY_BASE_DELAY_S=<EMBEDDING_RETRY_BASE_DELAY_S>' -e 'EMBEDDING_MAX_CONCURRENT=<EMBEDDING_MAX_CONCURRENT>' -e 'ENABLE_SUMMARY_GENERATION=<ENABLE_SUMMARY_GENERATION>' -e 'SUMMARY_PROVIDER=<SUMMARY_PROVIDER>' -e 'SUMMARY_MODEL=<SUMMARY_MODEL>' -e 'SUMMARY_MAX_TOKENS=<SUMMARY_MAX_TOKENS>' -e 'SUMMARY_TIMEOUT_S=<SUMMARY_TIMEOUT_S>' -e 'SUMMARY_RETRY_MAX_ATTEMPTS=<SUMMARY_RETRY_MAX_ATTEMPTS>' -e 'SUMMARY_RETRY_BASE_DELAY_S=<SUMMARY_RETRY_BASE_DELAY_S>' -e 'SUMMARY_MAX_CONCURRENT=<SUMMARY_MAX_CONCURRENT>' -e 'SUMMARY_PROMPT=<SUMMARY_PROMPT>' -e 'SUMMARY_MIN_CONTENT_LENGTH=<SUMMARY_MIN_CONTENT_LENGTH>' -e 'SUMMARY_OLLAMA_NUM_CTX=<SUMMARY_OLLAMA_NUM_CTX>' -e 'SUMMARY_OLLAMA_TRUNCATE=<SUMMARY_OLLAMA_TRUNCATE>' -e 'SUMMARY_OPENAI_REASONING_EFFORT=<SUMMARY_OPENAI_REASONING_EFFORT>' -e 'SUMMARY_ANTHROPIC_EFFORT=<SUMMARY_ANTHROPIC_EFFORT>' -e 'ANTHROPIC_API_KEY=<your anthropic_api_key>' -e 'ENABLE_FTS=<ENABLE_FTS>' -e 'FTS_LANGUAGE=<FTS_LANGUAGE>' -e 'FTS_RERANK_WINDOW_SIZE=<FTS_RERANK_WINDOW_SIZE>' -e 'FTS_RERANK_GAP_MERGE=<FTS_RERANK_GAP_MERGE>' -e 'ENABLE_HYBRID_SEARCH=<ENABLE_HYBRID_SEARCH>' -e 'HYBRID_RRF_K=<HYBRID_RRF_K>' -e 'HYBRID_RRF_OVERFETCH=<HYBRID_RRF_OVERFETCH>' -e 'HYBRID_FTS_OR_THRESHOLD=<HYBRID_FTS_OR_THRESHOLD>' -e 'SEARCH_DEFAULT_SORT_BY=<SEARCH_DEFAULT_SORT_BY>' -e 'SEARCH_TRUNCATION_LENGTH=<SEARCH_TRUNCATION_LENGTH>' -e 'ENABLE_CHUNKING=<ENABLE_CHUNKING>' -e 'CHUNK_SIZE=<CHUNK_SIZE>' -e 'CHUNK_OVERLAP=<CHUNK_OVERLAP>' -e 'CHUNK_AGGREGATION=<CHUNK_AGGREGATION>' -e 'CHUNK_DEDUP_OVERFETCH=<CHUNK_DEDUP_OVERFETCH>' -e 'ENABLE_RERANKING=<ENABLE_RERANKING>' -e 'RERANKING_PROVIDER=<RERANKING_PROVIDER>' -e 'RERANKING_MODEL=<RERANKING_MODEL>' -e 'RERANKING_MAX_LENGTH=<RERANKING_MAX_LENGTH>' -e 'RERANKING_OVERFETCH=<RERANKING_OVERFETCH>' -e 'RERANKING_CACHE_DIR=<RERANKING_CACHE_DIR>' -e 'RERANKING_CHARS_PER_TOKEN=<RERANKING_CHARS_PER_TOKEN>' -e 'RERANKING_INTRA_OP_THREADS=<RERANKING_INTRA_OP_THREADS>' -e 'RERANKING_CPU_MEM_ARENA=<RERANKING_CPU_MEM_ARENA>' -e 'RERANKING_BATCH_SIZE=<RERANKING_BATCH_SIZE>' -e 'EMBEDDING_PROVIDER=<EMBEDDING_PROVIDER>' -e 'OPENAI_API_KEY=<your openai_api_key>' -e 'OPENAI_API_BASE=<OPENAI_API_BASE>' -e 'OPENAI_ORGANIZATION=<OPENAI_ORGANIZATION>' -e 'AZURE_OPENAI_API_KEY=<your azure_openai_api_key>' -e 'AZURE_OPENAI_ENDPOINT=<AZURE_OPENAI_ENDPOINT>' -e 'AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME=<AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME>' -e 'AZURE_OPENAI_API_VERSION=<AZURE_OPENAI_API_VERSION>' -e 'HUGGINGFACEHUB_API_TOKEN=<your huggingfacehub_api_token>' -e 'VOYAGE_API_KEY=<your voyage_api_key>' -e 'VOYAGE_TRUNCATION=<VOYAGE_TRUNCATION>' -e 'VOYAGE_BATCH_SIZE=<VOYAGE_BATCH_SIZE>' -e 'LANGSMITH_TRACING=<LANGSMITH_TRACING>' -e 'LANGSMITH_API_KEY=<your langsmith_api_key>' -e 'LANGSMITH_PROJECT=<LANGSMITH_PROJECT>' -e 'LANGSMITH_ENDPOINT=<LANGSMITH_ENDPOINT>' -e 'METADATA_INDEXED_FIELDS=<METADATA_INDEXED_FIELDS>' -e 'METADATA_INDEX_SYNC_MODE=<METADATA_INDEX_SYNC_MODE>' -e 'MCP_TRANSPORT=<MCP_TRANSPORT>' -e 'FASTMCP_HOST=<FASTMCP_HOST>' -e 'FASTMCP_PORT=<FASTMCP_PORT>' -e 'FASTMCP_STATELESS_HTTP=<FASTMCP_STATELESS_HTTP>' -e 'DISABLED_TOOLS=<DISABLED_TOOLS>' -e 'MCP_AUTH_TOKEN=<your mcp_auth_token>' -e 'MCP_AUTH_CLIENT_ID=<MCP_AUTH_CLIENT_ID>' -e 'MCP_AUTH_PROVIDER=<MCP_AUTH_PROVIDER>' -e 'MCP_SERVER_INSTRUCTIONS=<MCP_SERVER_INSTRUCTIONS>' -- uvx mcp-context-server==2.2.2
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "mcp-context-server": {
            "command": "uvx",
            "args": [
                "mcp-context-server==2.2.2"
            ],
            "env": {
                "LOG_LEVEL": "<LOG_LEVEL>",
                "STORAGE_BACKEND": "<STORAGE_BACKEND>",
                "MAX_IMAGE_SIZE_MB": "<MAX_IMAGE_SIZE_MB>",
                "MAX_TOTAL_SIZE_MB": "<MAX_TOTAL_SIZE_MB>",
                "DB_PATH": "<DB_PATH>",
                "POOL_MAX_READERS": "<POOL_MAX_READERS>",
                "POOL_MAX_WRITERS": "<POOL_MAX_WRITERS>",
                "POOL_CONNECTION_TIMEOUT_S": "<POOL_CONNECTION_TIMEOUT_S>",
                "POOL_IDLE_TIMEOUT_S": "<POOL_IDLE_TIMEOUT_S>",
                "POOL_HEALTH_CHECK_INTERVAL_S": "<POOL_HEALTH_CHECK_INTERVAL_S>",
                "RETRY_MAX_RETRIES": "<RETRY_MAX_RETRIES>",
                "RETRY_BASE_DELAY_S": "<RETRY_BASE_DELAY_S>",
                "RETRY_MAX_DELAY_S": "<RETRY_MAX_DELAY_S>",
                "RETRY_JITTER": "<RETRY_JITTER>",
                "RETRY_BACKOFF_FACTOR": "<RETRY_BACKOFF_FACTOR>",
                "SQLITE_FOREIGN_KEYS": "<SQLITE_FOREIGN_KEYS>",
                "SQLITE_JOURNAL_MODE": "<SQLITE_JOURNAL_MODE>",
                "SQLITE_SYNCHRONOUS": "<SQLITE_SYNCHRONOUS>",
                "SQLITE_TEMP_STORE": "<SQLITE_TEMP_STORE>",
                "SQLITE_MMAP_SIZE": "<SQLITE_MMAP_SIZE>",
                "SQLITE_CACHE_SIZE": "<SQLITE_CACHE_SIZE>",
                "SQLITE_PAGE_SIZE": "<SQLITE_PAGE_SIZE>",
                "SQLITE_WAL_AUTOCHECKPOINT": "<SQLITE_WAL_AUTOCHECKPOINT>",
                "SQLITE_BUSY_TIMEOUT_MS": "<SQLITE_BUSY_TIMEOUT_MS>",
                "SQLITE_WAL_CHECKPOINT": "<SQLITE_WAL_CHECKPOINT>",
                "SHUTDOWN_TIMEOUT_S": "<SHUTDOWN_TIMEOUT_S>",
                "SHUTDOWN_TIMEOUT_TEST_S": "<SHUTDOWN_TIMEOUT_TEST_S>",
                "QUEUE_TIMEOUT_S": "<QUEUE_TIMEOUT_S>",
                "QUEUE_TIMEOUT_TEST_S": "<QUEUE_TIMEOUT_TEST_S>",
                "CIRCUIT_BREAKER_FAILURE_THRESHOLD": "<CIRCUIT_BREAKER_FAILURE_THRESHOLD>",
                "CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S": "<CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S>",
                "CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS": "<CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS>",
                "POSTGRESQL_CONNECTION_STRING": "<your postgresql_connection_string>",
                "POSTGRESQL_HOST": "<POSTGRESQL_HOST>",
                "POSTGRESQL_PORT": "<POSTGRESQL_PORT>",
                "POSTGRESQL_USER": "<POSTGRESQL_USER>",
                "POSTGRESQL_PASSWORD": "<your postgresql_password>",
                "POSTGRESQL_DATABASE": "<POSTGRESQL_DATABASE>",
                "POSTGRESQL_POOL_MIN": "<POSTGRESQL_POOL_MIN>",
                "POSTGRESQL_POOL_MAX": "<POSTGRESQL_POOL_MAX>",
                "POSTGRESQL_POOL_TIMEOUT_S": "<POSTGRESQL_POOL_TIMEOUT_S>",
                "POSTGRESQL_COMMAND_TIMEOUT_S": "<POSTGRESQL_COMMAND_TIMEOUT_S>",
                "POSTGRESQL_MIGRATION_TIMEOUT_S": "<POSTGRESQL_MIGRATION_TIMEOUT_S>",
                "POSTGRESQL_MAX_INACTIVE_LIFETIME_S": "<POSTGRESQL_MAX_INACTIVE_LIFETIME_S>",
                "POSTGRESQL_MAX_QUERIES": "<POSTGRESQL_MAX_QUERIES>",
                "POSTGRESQL_TCP_KEEPALIVES_IDLE_S": "<POSTGRESQL_TCP_KEEPALIVES_IDLE_S>",
                "POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S": "<POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S>",
                "POSTGRESQL_TCP_KEEPALIVES_COUNT": "<POSTGRESQL_TCP_KEEPALIVES_COUNT>",
                "POSTGRESQL_STATEMENT_CACHE_SIZE": "<POSTGRESQL_STATEMENT_CACHE_SIZE>",
                "POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S": "<POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S>",
                "POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE": "<POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE>",
                "POSTGRESQL_SSL_MODE": "<POSTGRESQL_SSL_MODE>",
                "POSTGRESQL_SCHEMA": "<POSTGRESQL_SCHEMA>",
                "ENABLE_SEMANTIC_SEARCH": "<ENABLE_SEMANTIC_SEARCH>",
                "ENABLE_EMBEDDING_GENERATION": "<ENABLE_EMBEDDING_GENERATION>",
                "OLLAMA_HOST": "<OLLAMA_HOST>",
                "OLLAMA_AUTO_PULL": "<OLLAMA_AUTO_PULL>",
                "OLLAMA_PULL_TIMEOUT_S": "<OLLAMA_PULL_TIMEOUT_S>",
                "EMBEDDING_OLLAMA_TRUNCATE": "<EMBEDDING_OLLAMA_TRUNCATE>",
                "EMBEDDING_OLLAMA_NUM_CTX": "<EMBEDDING_OLLAMA_NUM_CTX>",
                "EMBEDDING_MODEL": "<EMBEDDING_MODEL>",
                "EMBEDDING_DIM": "<EMBEDDING_DIM>",
                "EMBEDDING_TIMEOUT_S": "<EMBEDDING_TIMEOUT_S>",
                "EMBEDDING_RETRY_MAX_ATTEMPTS": "<EMBEDDING_RETRY_MAX_ATTEMPTS>",
                "EMBEDDING_RETRY_BASE_DELAY_S": "<EMBEDDING_RETRY_BASE_DELAY_S>",
                "EMBEDDING_MAX_CONCURRENT": "<EMBEDDING_MAX_CONCURRENT>",
                "ENABLE_SUMMARY_GENERATION": "<ENABLE_SUMMARY_GENERATION>",
                "SUMMARY_PROVIDER": "<SUMMARY_PROVIDER>",
                "SUMMARY_MODEL": "<SUMMARY_MODEL>",
                "SUMMARY_MAX_TOKENS": "<SUMMARY_MAX_TOKENS>",
                "SUMMARY_TIMEOUT_S": "<SUMMARY_TIMEOUT_S>",
                "SUMMARY_RETRY_MAX_ATTEMPTS": "<SUMMARY_RETRY_MAX_ATTEMPTS>",
                "SUMMARY_RETRY_BASE_DELAY_S": "<SUMMARY_RETRY_BASE_DELAY_S>",
                "SUMMARY_MAX_CONCURRENT": "<SUMMARY_MAX_CONCURRENT>",
                "SUMMARY_PROMPT": "<SUMMARY_PROMPT>",
                "SUMMARY_MIN_CONTENT_LENGTH": "<SUMMARY_MIN_CONTENT_LENGTH>",
                "SUMMARY_OLLAMA_NUM_CTX": "<SUMMARY_OLLAMA_NUM_CTX>",
                "SUMMARY_OLLAMA_TRUNCATE": "<SUMMARY_OLLAMA_TRUNCATE>",
                "SUMMARY_OPENAI_REASONING_EFFORT": "<SUMMARY_OPENAI_REASONING_EFFORT>",
                "SUMMARY_ANTHROPIC_EFFORT": "<SUMMARY_ANTHROPIC_EFFORT>",
                "ANTHROPIC_API_KEY": "<your anthropic_api_key>",
                "ENABLE_FTS": "<ENABLE_FTS>",
                "FTS_LANGUAGE": "<FTS_LANGUAGE>",
                "FTS_RERANK_WINDOW_SIZE": "<FTS_RERANK_WINDOW_SIZE>",
                "FTS_RERANK_GAP_MERGE": "<FTS_RERANK_GAP_MERGE>",
                "ENABLE_HYBRID_SEARCH": "<ENABLE_HYBRID_SEARCH>",
                "HYBRID_RRF_K": "<HYBRID_RRF_K>",
                "HYBRID_RRF_OVERFETCH": "<HYBRID_RRF_OVERFETCH>",
                "HYBRID_FTS_OR_THRESHOLD": "<HYBRID_FTS_OR_THRESHOLD>",
                "SEARCH_DEFAULT_SORT_BY": "<SEARCH_DEFAULT_SORT_BY>",
                "SEARCH_TRUNCATION_LENGTH": "<SEARCH_TRUNCATION_LENGTH>",
                "ENABLE_CHUNKING": "<ENABLE_CHUNKING>",
                "CHUNK_SIZE": "<CHUNK_SIZE>",
                "CHUNK_OVERLAP": "<CHUNK_OVERLAP>",
                "CHUNK_AGGREGATION": "<CHUNK_AGGREGATION>",
                "CHUNK_DEDUP_OVERFETCH": "<CHUNK_DEDUP_OVERFETCH>",
                "ENABLE_RERANKING": "<ENABLE_RERANKING>",
                "RERANKING_PROVIDER": "<RERANKING_PROVIDER>",
                "RERANKING_MODEL": "<RERANKING_MODEL>",
                "RERANKING_MAX_LENGTH": "<RERANKING_MAX_LENGTH>",
                "RERANKING_OVERFETCH": "<RERANKING_OVERFETCH>",
                "RERANKING_CACHE_DIR": "<RERANKING_CACHE_DIR>",
                "RERANKING_CHARS_PER_TOKEN": "<RERANKING_CHARS_PER_TOKEN>",
                "RERANKING_INTRA_OP_THREADS": "<RERANKING_INTRA_OP_THREADS>",
                "RERANKING_CPU_MEM_ARENA": "<RERANKING_CPU_MEM_ARENA>",
                "RERANKING_BATCH_SIZE": "<RERANKING_BATCH_SIZE>",
                "EMBEDDING_PROVIDER": "<EMBEDDING_PROVIDER>",
                "OPENAI_API_KEY": "<your openai_api_key>",
                "OPENAI_API_BASE": "<OPENAI_API_BASE>",
                "OPENAI_ORGANIZATION": "<OPENAI_ORGANIZATION>",
                "AZURE_OPENAI_API_KEY": "<your azure_openai_api_key>",
                "AZURE_OPENAI_ENDPOINT": "<AZURE_OPENAI_ENDPOINT>",
                "AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME": "<AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME>",
                "AZURE_OPENAI_API_VERSION": "<AZURE_OPENAI_API_VERSION>",
                "HUGGINGFACEHUB_API_TOKEN": "<your huggingfacehub_api_token>",
                "VOYAGE_API_KEY": "<your voyage_api_key>",
                "VOYAGE_TRUNCATION": "<VOYAGE_TRUNCATION>",
                "VOYAGE_BATCH_SIZE": "<VOYAGE_BATCH_SIZE>",
                "LANGSMITH_TRACING": "<LANGSMITH_TRACING>",
                "LANGSMITH_API_KEY": "<your langsmith_api_key>",
                "LANGSMITH_PROJECT": "<LANGSMITH_PROJECT>",
                "LANGSMITH_ENDPOINT": "<LANGSMITH_ENDPOINT>",
                "METADATA_INDEXED_FIELDS": "<METADATA_INDEXED_FIELDS>",
                "METADATA_INDEX_SYNC_MODE": "<METADATA_INDEX_SYNC_MODE>",
                "MCP_TRANSPORT": "<MCP_TRANSPORT>",
                "FASTMCP_HOST": "<FASTMCP_HOST>",
                "FASTMCP_PORT": "<FASTMCP_PORT>",
                "FASTMCP_STATELESS_HTTP": "<FASTMCP_STATELESS_HTTP>",
                "DISABLED_TOOLS": "<DISABLED_TOOLS>",
                "MCP_AUTH_TOKEN": "<your mcp_auth_token>",
                "MCP_AUTH_CLIENT_ID": "<MCP_AUTH_CLIENT_ID>",
                "MCP_AUTH_PROVIDER": "<MCP_AUTH_PROVIDER>",
                "MCP_SERVER_INSTRUCTIONS": "<MCP_SERVER_INSTRUCTIONS>"
            }
        }
    }
}

Environment variables

  • LOG_LEVEL Log level
  • STORAGE_BACKEND Storage backend type: sqlite (default) or postgresql
  • MAX_IMAGE_SIZE_MB Maximum individual image size in megabytes
  • MAX_TOTAL_SIZE_MB Maximum total request size in megabytes
  • DB_PATH Custom database file location path
  • POOL_MAX_READERS Maximum number of concurrent read connections in the pool
  • POOL_MAX_WRITERS Maximum number of concurrent write connections in the pool
  • POOL_CONNECTION_TIMEOUT_S Connection timeout in seconds
  • POOL_IDLE_TIMEOUT_S Idle connection timeout in seconds
  • POOL_HEALTH_CHECK_INTERVAL_S Connection health check interval in seconds
  • RETRY_MAX_RETRIES Maximum number of retry attempts for failed operations
  • RETRY_BASE_DELAY_S Base delay in seconds between retry attempts
  • RETRY_MAX_DELAY_S Maximum delay in seconds between retry attempts
  • RETRY_JITTER Enable random jitter in retry delays
  • RETRY_BACKOFF_FACTOR Exponential backoff multiplication factor for retries
  • SQLITE_FOREIGN_KEYS Enable SQLite foreign key constraints
  • SQLITE_JOURNAL_MODE SQLite journal mode (e.g., WAL, DELETE)
  • SQLITE_SYNCHRONOUS SQLite synchronous mode (e.g., NORMAL, FULL, OFF)
  • SQLITE_TEMP_STORE SQLite temporary storage location (e.g., MEMORY, FILE)
  • SQLITE_MMAP_SIZE SQLite memory-mapped I/O size in bytes
  • SQLITE_CACHE_SIZE SQLite cache size (negative value for KB, positive for pages)
  • SQLITE_PAGE_SIZE SQLite page size in bytes
  • SQLITE_WAL_AUTOCHECKPOINT SQLite WAL autocheckpoint threshold in pages
  • SQLITE_BUSY_TIMEOUT_MS SQLite busy timeout in milliseconds
  • SQLITE_WAL_CHECKPOINT SQLite WAL checkpoint mode (e.g., PASSIVE, FULL, RESTART)
  • SHUTDOWN_TIMEOUT_S Server shutdown timeout in seconds
  • SHUTDOWN_TIMEOUT_TEST_S Test mode shutdown timeout in seconds
  • QUEUE_TIMEOUT_S Queue operation timeout in seconds
  • QUEUE_TIMEOUT_TEST_S Test mode queue timeout in seconds
  • CIRCUIT_BREAKER_FAILURE_THRESHOLD Circuit breaker failure threshold before opening
  • CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S Circuit breaker recovery timeout in seconds
  • CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS Maximum calls allowed in circuit breaker half-open state
  • POSTGRESQL_CONNECTION_STRING secret Complete PostgreSQL connection string (overrides individual settings if provided)
  • POSTGRESQL_HOST PostgreSQL server host address
  • POSTGRESQL_PORT PostgreSQL server port number
  • POSTGRESQL_USER PostgreSQL database username
  • POSTGRESQL_PASSWORD secret PostgreSQL database password
  • POSTGRESQL_DATABASE PostgreSQL database name
  • POSTGRESQL_POOL_MIN PostgreSQL connection pool minimum size
  • POSTGRESQL_POOL_MAX PostgreSQL connection pool maximum size
  • POSTGRESQL_POOL_TIMEOUT_S PostgreSQL connection pool timeout in seconds
  • POSTGRESQL_COMMAND_TIMEOUT_S PostgreSQL command execution timeout in seconds
  • POSTGRESQL_MIGRATION_TIMEOUT_S Timeout in seconds for PostgreSQL migration operations (default: 300)
  • POSTGRESQL_MAX_INACTIVE_LIFETIME_S Close idle PostgreSQL connections after this many seconds (0 to disable, default: 300)
  • POSTGRESQL_MAX_QUERIES Recycle PostgreSQL connections after this many queries (0 to disable, default: 10000)
  • POSTGRESQL_TCP_KEEPALIVES_IDLE_S Seconds of idle time before sending first TCP keepalive probe (0 to disable, default: 15)
  • POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S Seconds between subsequent TCP keepalive probes (0 to disable, default: 5)
  • POSTGRESQL_TCP_KEEPALIVES_COUNT Number of failed TCP keepalive probes before connection is considered dead (0 to disable, default: 3)
  • POSTGRESQL_STATEMENT_CACHE_SIZE asyncpg prepared statement cache size. Set to 0 for external pooler compatibility (PgBouncer transaction mode, Pgpool-II, etc.). Default: 100
  • POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S Maximum lifetime of cached prepared statements in seconds (default: 300). Has no effect when statement_cache_size=0
  • POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE Maximum size of statement to cache in bytes (default: 15360). Has no effect when statement_cache_size=0
  • POSTGRESQL_SSL_MODE PostgreSQL SSL mode (disable, allow, prefer, require, verify-ca, verify-full)
  • POSTGRESQL_SCHEMA PostgreSQL schema name for table and index operations (default: public)
  • ENABLE_SEMANTIC_SEARCH Enable semantic search functionality
  • ENABLE_EMBEDDING_GENERATION Enable embedding generation for stored context. Default true - server fails if dependencies not met. Set false to disable embeddings.
  • OLLAMA_HOST Ollama API host URL for embedding generation
  • OLLAMA_AUTO_PULL Automatically pull missing Ollama models on startup (default: true)
  • OLLAMA_PULL_TIMEOUT_S Timeout in seconds for pulling Ollama models (default: 900, range: 30-3600)
  • EMBEDDING_OLLAMA_TRUNCATE Ollama embedding truncation mode: false (default) returns error when context exceeded, true enables silent truncation
  • EMBEDDING_OLLAMA_NUM_CTX Ollama embedding context window size in tokens (default: 4096, range: 512-2097152)
  • EMBEDDING_MODEL Embedding model name for semantic search
  • EMBEDDING_DIM Embedding vector dimensions
  • EMBEDDING_TIMEOUT_S Timeout in seconds for embedding generation API calls
  • EMBEDDING_RETRY_MAX_ATTEMPTS Maximum number of retry attempts for embedding generation
  • EMBEDDING_RETRY_BASE_DELAY_S Base delay in seconds between retry attempts (with exponential backoff)
  • EMBEDDING_MAX_CONCURRENT Maximum concurrent embedding generation operations (default: 3, range: 1-20)
  • ENABLE_SUMMARY_GENERATION Enable summary generation for stored context. Default true - server fails if dependencies not met. Set false to disable summaries.
  • SUMMARY_PROVIDER Summary provider: ollama (default), openai, or anthropic
  • SUMMARY_MODEL Summary generation model name (default: qwen3:0.6b)
  • SUMMARY_MAX_TOKENS Maximum output tokens for summary generation (default: 4000, range: 50-16384). Increase if summaries are truncated by reasoning models
  • SUMMARY_TIMEOUT_S Timeout in seconds for summary generation API calls
  • SUMMARY_RETRY_MAX_ATTEMPTS Maximum number of retry attempts for summary generation
  • SUMMARY_RETRY_BASE_DELAY_S Base delay in seconds between retry attempts (with exponential backoff)
  • SUMMARY_MAX_CONCURRENT Maximum concurrent summary generation operations (default: 3, range: 1-20)
  • SUMMARY_PROMPT Custom summarization prompt. Overrides the built-in default. Used as system message for the LLM.
  • SUMMARY_MIN_CONTENT_LENGTH Minimum text content length in characters to trigger summary generation (default: 500, range: 0-10000). Set to 0 to always generate.
  • SUMMARY_OLLAMA_NUM_CTX Ollama summary context window size in tokens (default: 32768, range: 512-2097152)
  • SUMMARY_OLLAMA_TRUNCATE Ollama summary truncation mode: false (default) returns error when context exceeded, true enables silent truncation
  • SUMMARY_OPENAI_REASONING_EFFORT Reasoning effort level for OpenAI reasoning models (default: low). Valid values vary by generation: gpt-5: low, medium, high; gpt-5.1+: none, low, medium, high, xhigh. Default low is universally valid across all generations
  • SUMMARY_ANTHROPIC_EFFORT Effort level for Anthropic Claude models (default: none). Valid values: max, high, medium, low. Controls inference effort (adaptive thinking)
  • ANTHROPIC_API_KEY secret Anthropic API key for summary generation
  • ENABLE_FTS Enable full-text search functionality
  • FTS_LANGUAGE Language for FTS stemming (e.g., english, german, french)
  • FTS_RERANK_WINDOW_SIZE Characters of context around each FTS match for reranking passage extraction (default: 750)
  • FTS_RERANK_GAP_MERGE Merge FTS match regions within this character distance (default: 100)
  • ENABLE_HYBRID_SEARCH Enable hybrid search combining FTS and semantic search with RRF fusion
  • HYBRID_RRF_K RRF smoothing constant for hybrid search (default 60)
  • HYBRID_RRF_OVERFETCH Multiplier for over-fetching results before RRF fusion (default: 2)
  • HYBRID_FTS_OR_THRESHOLD Minimum significant query terms to switch hybrid FTS from AND to OR logic (default: 4)
  • SEARCH_DEFAULT_SORT_BY Default sort order for search results: relevance (only 'relevance' supported in current version)
  • SEARCH_TRUNCATION_LENGTH Maximum character length for truncated text_content in search results (default: 300, range: 50-1000)
  • ENABLE_CHUNKING Enable text chunking for embedding generation (default: true)
  • CHUNK_SIZE Target chunk size in characters (default: 1500)
  • CHUNK_OVERLAP Overlap between chunks in characters (default: 150)
  • CHUNK_AGGREGATION Chunk score aggregation method: max (only 'max' supported in current version)
  • CHUNK_DEDUP_OVERFETCH Multiplier for over-fetching chunks before deduplication (default: 5)
  • ENABLE_RERANKING Enable cross-encoder reranking of search results (default: true)
  • RERANKING_PROVIDER Reranking provider (default: flashrank)
  • RERANKING_MODEL Reranking model name (default: ms-marco-MiniLM-L-12-v2)
  • RERANKING_MAX_LENGTH Maximum input length for reranking in tokens (default: 512)
  • RERANKING_OVERFETCH Multiplier for over-fetching results before reranking (default: 4)
  • RERANKING_CACHE_DIR Directory for caching reranking models
  • RERANKING_CHARS_PER_TOKEN Estimated characters per token for passage size validation (default: 4.0, range: 2.0-8.0)
  • RERANKING_INTRA_OP_THREADS ONNX Runtime intra-operation parallelism threads for reranking (default: 0 = auto-detect)
  • RERANKING_CPU_MEM_ARENA Enable ONNX Runtime CPU memory arena for reranking (default: false)
  • RERANKING_BATCH_SIZE Maximum passages per ONNX Runtime inference batch during reranking (default: 32)
  • EMBEDDING_PROVIDER Embedding provider: ollama (default), openai, azure, huggingface, or voyage
  • OPENAI_API_KEY secret OpenAI API key for OpenAI embedding provider
  • OPENAI_API_BASE Custom base URL for OpenAI-compatible APIs
  • OPENAI_ORGANIZATION OpenAI organization ID
  • AZURE_OPENAI_API_KEY secret Azure OpenAI API key
  • AZURE_OPENAI_ENDPOINT Azure OpenAI endpoint URL
  • AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME Azure OpenAI embedding deployment name
  • AZURE_OPENAI_API_VERSION Azure OpenAI API version (default: 2024-02-01)
  • HUGGINGFACEHUB_API_TOKEN secret HuggingFace Hub API token for HuggingFace embedding provider
  • VOYAGE_API_KEY secret Voyage AI API key for Voyage embedding provider
  • VOYAGE_TRUNCATION Voyage AI truncation mode: false (default) returns error when context exceeded, true enables silent truncation
  • VOYAGE_BATCH_SIZE Voyage AI batch size for embedding requests
  • LANGSMITH_TRACING Enable LangSmith tracing
  • LANGSMITH_API_KEY secret LangSmith API key
  • LANGSMITH_PROJECT LangSmith project name
  • LANGSMITH_ENDPOINT LangSmith API endpoint URL
  • METADATA_INDEXED_FIELDS Comma-separated list of metadata fields to index (field:type format)
  • METADATA_INDEX_SYNC_MODE Index sync mode: strict (fail), auto (sync), warn (log), additive (default, add missing only)
  • MCP_TRANSPORT Transport mode: stdio for local, http for Docker/remote
  • FASTMCP_HOST HTTP bind address (use 0.0.0.0 for Docker)
  • FASTMCP_PORT HTTP port number
  • FASTMCP_STATELESS_HTTP Enable stateless HTTP mode for horizontal scaling. Enabled by default as the server has no stateful MCP features. Set to false only if you need server-side MCP session tracking.
  • DISABLED_TOOLS Comma-separated list of tools to disable (e.g., delete_context,update_context)
  • MCP_AUTH_TOKEN secret Bearer token for HTTP authentication (required when using SimpleTokenVerifier)
  • MCP_AUTH_CLIENT_ID Client ID to assign to authenticated requests
  • MCP_AUTH_PROVIDER Authentication provider: none (default), simple_token
  • MCP_SERVER_INSTRUCTIONS Custom server instructions text. Overrides built-in default. Set to empty string to disable.
OCI package ghcr.io/alex-feel/mcp-context-server:2.2.2
Claude Code
claude mcp add mcp-context-server -e 'LOG_LEVEL=<LOG_LEVEL>' -e 'STORAGE_BACKEND=<STORAGE_BACKEND>' -e 'MAX_IMAGE_SIZE_MB=<MAX_IMAGE_SIZE_MB>' -e 'MAX_TOTAL_SIZE_MB=<MAX_TOTAL_SIZE_MB>' -e 'DB_PATH=<DB_PATH>' -e 'POOL_MAX_READERS=<POOL_MAX_READERS>' -e 'POOL_MAX_WRITERS=<POOL_MAX_WRITERS>' -e 'POOL_CONNECTION_TIMEOUT_S=<POOL_CONNECTION_TIMEOUT_S>' -e 'POOL_IDLE_TIMEOUT_S=<POOL_IDLE_TIMEOUT_S>' -e 'POOL_HEALTH_CHECK_INTERVAL_S=<POOL_HEALTH_CHECK_INTERVAL_S>' -e 'RETRY_MAX_RETRIES=<RETRY_MAX_RETRIES>' -e 'RETRY_BASE_DELAY_S=<RETRY_BASE_DELAY_S>' -e 'RETRY_MAX_DELAY_S=<RETRY_MAX_DELAY_S>' -e 'RETRY_JITTER=<RETRY_JITTER>' -e 'RETRY_BACKOFF_FACTOR=<RETRY_BACKOFF_FACTOR>' -e 'SQLITE_FOREIGN_KEYS=<SQLITE_FOREIGN_KEYS>' -e 'SQLITE_JOURNAL_MODE=<SQLITE_JOURNAL_MODE>' -e 'SQLITE_SYNCHRONOUS=<SQLITE_SYNCHRONOUS>' -e 'SQLITE_TEMP_STORE=<SQLITE_TEMP_STORE>' -e 'SQLITE_MMAP_SIZE=<SQLITE_MMAP_SIZE>' -e 'SQLITE_CACHE_SIZE=<SQLITE_CACHE_SIZE>' -e 'SQLITE_PAGE_SIZE=<SQLITE_PAGE_SIZE>' -e 'SQLITE_WAL_AUTOCHECKPOINT=<SQLITE_WAL_AUTOCHECKPOINT>' -e 'SQLITE_BUSY_TIMEOUT_MS=<SQLITE_BUSY_TIMEOUT_MS>' -e 'SQLITE_WAL_CHECKPOINT=<SQLITE_WAL_CHECKPOINT>' -e 'SHUTDOWN_TIMEOUT_S=<SHUTDOWN_TIMEOUT_S>' -e 'SHUTDOWN_TIMEOUT_TEST_S=<SHUTDOWN_TIMEOUT_TEST_S>' -e 'QUEUE_TIMEOUT_S=<QUEUE_TIMEOUT_S>' -e 'QUEUE_TIMEOUT_TEST_S=<QUEUE_TIMEOUT_TEST_S>' -e 'CIRCUIT_BREAKER_FAILURE_THRESHOLD=<CIRCUIT_BREAKER_FAILURE_THRESHOLD>' -e 'CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S=<CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S>' -e 'CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS=<CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS>' -e 'POSTGRESQL_CONNECTION_STRING=<your postgresql_connection_string>' -e 'POSTGRESQL_HOST=<POSTGRESQL_HOST>' -e 'POSTGRESQL_PORT=<POSTGRESQL_PORT>' -e 'POSTGRESQL_USER=<POSTGRESQL_USER>' -e 'POSTGRESQL_PASSWORD=<your postgresql_password>' -e 'POSTGRESQL_DATABASE=<POSTGRESQL_DATABASE>' -e 'POSTGRESQL_POOL_MIN=<POSTGRESQL_POOL_MIN>' -e 'POSTGRESQL_POOL_MAX=<POSTGRESQL_POOL_MAX>' -e 'POSTGRESQL_POOL_TIMEOUT_S=<POSTGRESQL_POOL_TIMEOUT_S>' -e 'POSTGRESQL_COMMAND_TIMEOUT_S=<POSTGRESQL_COMMAND_TIMEOUT_S>' -e 'POSTGRESQL_MIGRATION_TIMEOUT_S=<POSTGRESQL_MIGRATION_TIMEOUT_S>' -e 'POSTGRESQL_MAX_INACTIVE_LIFETIME_S=<POSTGRESQL_MAX_INACTIVE_LIFETIME_S>' -e 'POSTGRESQL_MAX_QUERIES=<POSTGRESQL_MAX_QUERIES>' -e 'POSTGRESQL_TCP_KEEPALIVES_IDLE_S=<POSTGRESQL_TCP_KEEPALIVES_IDLE_S>' -e 'POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S=<POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S>' -e 'POSTGRESQL_TCP_KEEPALIVES_COUNT=<POSTGRESQL_TCP_KEEPALIVES_COUNT>' -e 'POSTGRESQL_STATEMENT_CACHE_SIZE=<POSTGRESQL_STATEMENT_CACHE_SIZE>' -e 'POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S=<POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S>' -e 'POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE=<POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE>' -e 'POSTGRESQL_SSL_MODE=<POSTGRESQL_SSL_MODE>' -e 'POSTGRESQL_SCHEMA=<POSTGRESQL_SCHEMA>' -e 'ENABLE_SEMANTIC_SEARCH=<ENABLE_SEMANTIC_SEARCH>' -e 'ENABLE_EMBEDDING_GENERATION=<ENABLE_EMBEDDING_GENERATION>' -e 'OLLAMA_HOST=<OLLAMA_HOST>' -e 'OLLAMA_AUTO_PULL=<OLLAMA_AUTO_PULL>' -e 'OLLAMA_PULL_TIMEOUT_S=<OLLAMA_PULL_TIMEOUT_S>' -e 'EMBEDDING_OLLAMA_TRUNCATE=<EMBEDDING_OLLAMA_TRUNCATE>' -e 'EMBEDDING_OLLAMA_NUM_CTX=<EMBEDDING_OLLAMA_NUM_CTX>' -e 'EMBEDDING_MODEL=<EMBEDDING_MODEL>' -e 'EMBEDDING_DIM=<EMBEDDING_DIM>' -e 'EMBEDDING_TIMEOUT_S=<EMBEDDING_TIMEOUT_S>' -e 'EMBEDDING_RETRY_MAX_ATTEMPTS=<EMBEDDING_RETRY_MAX_ATTEMPTS>' -e 'EMBEDDING_RETRY_BASE_DELAY_S=<EMBEDDING_RETRY_BASE_DELAY_S>' -e 'EMBEDDING_MAX_CONCURRENT=<EMBEDDING_MAX_CONCURRENT>' -e 'ENABLE_SUMMARY_GENERATION=<ENABLE_SUMMARY_GENERATION>' -e 'SUMMARY_PROVIDER=<SUMMARY_PROVIDER>' -e 'SUMMARY_MODEL=<SUMMARY_MODEL>' -e 'SUMMARY_MAX_TOKENS=<SUMMARY_MAX_TOKENS>' -e 'SUMMARY_TIMEOUT_S=<SUMMARY_TIMEOUT_S>' -e 'SUMMARY_RETRY_MAX_ATTEMPTS=<SUMMARY_RETRY_MAX_ATTEMPTS>' -e 'SUMMARY_RETRY_BASE_DELAY_S=<SUMMARY_RETRY_BASE_DELAY_S>' -e 'SUMMARY_MAX_CONCURRENT=<SUMMARY_MAX_CONCURRENT>' -e 'SUMMARY_PROMPT=<SUMMARY_PROMPT>' -e 'SUMMARY_MIN_CONTENT_LENGTH=<SUMMARY_MIN_CONTENT_LENGTH>' -e 'SUMMARY_OLLAMA_NUM_CTX=<SUMMARY_OLLAMA_NUM_CTX>' -e 'SUMMARY_OLLAMA_TRUNCATE=<SUMMARY_OLLAMA_TRUNCATE>' -e 'SUMMARY_OPENAI_REASONING_EFFORT=<SUMMARY_OPENAI_REASONING_EFFORT>' -e 'SUMMARY_ANTHROPIC_EFFORT=<SUMMARY_ANTHROPIC_EFFORT>' -e 'ANTHROPIC_API_KEY=<your anthropic_api_key>' -e 'ENABLE_FTS=<ENABLE_FTS>' -e 'FTS_LANGUAGE=<FTS_LANGUAGE>' -e 'FTS_RERANK_WINDOW_SIZE=<FTS_RERANK_WINDOW_SIZE>' -e 'FTS_RERANK_GAP_MERGE=<FTS_RERANK_GAP_MERGE>' -e 'ENABLE_HYBRID_SEARCH=<ENABLE_HYBRID_SEARCH>' -e 'HYBRID_RRF_K=<HYBRID_RRF_K>' -e 'HYBRID_RRF_OVERFETCH=<HYBRID_RRF_OVERFETCH>' -e 'HYBRID_FTS_OR_THRESHOLD=<HYBRID_FTS_OR_THRESHOLD>' -e 'SEARCH_DEFAULT_SORT_BY=<SEARCH_DEFAULT_SORT_BY>' -e 'SEARCH_TRUNCATION_LENGTH=<SEARCH_TRUNCATION_LENGTH>' -e 'ENABLE_CHUNKING=<ENABLE_CHUNKING>' -e 'CHUNK_SIZE=<CHUNK_SIZE>' -e 'CHUNK_OVERLAP=<CHUNK_OVERLAP>' -e 'CHUNK_AGGREGATION=<CHUNK_AGGREGATION>' -e 'CHUNK_DEDUP_OVERFETCH=<CHUNK_DEDUP_OVERFETCH>' -e 'ENABLE_RERANKING=<ENABLE_RERANKING>' -e 'RERANKING_PROVIDER=<RERANKING_PROVIDER>' -e 'RERANKING_MODEL=<RERANKING_MODEL>' -e 'RERANKING_MAX_LENGTH=<RERANKING_MAX_LENGTH>' -e 'RERANKING_OVERFETCH=<RERANKING_OVERFETCH>' -e 'RERANKING_CACHE_DIR=<RERANKING_CACHE_DIR>' -e 'RERANKING_CHARS_PER_TOKEN=<RERANKING_CHARS_PER_TOKEN>' -e 'RERANKING_INTRA_OP_THREADS=<RERANKING_INTRA_OP_THREADS>' -e 'RERANKING_CPU_MEM_ARENA=<RERANKING_CPU_MEM_ARENA>' -e 'RERANKING_BATCH_SIZE=<RERANKING_BATCH_SIZE>' -e 'EMBEDDING_PROVIDER=<EMBEDDING_PROVIDER>' -e 'OPENAI_API_KEY=<your openai_api_key>' -e 'OPENAI_API_BASE=<OPENAI_API_BASE>' -e 'OPENAI_ORGANIZATION=<OPENAI_ORGANIZATION>' -e 'AZURE_OPENAI_API_KEY=<your azure_openai_api_key>' -e 'AZURE_OPENAI_ENDPOINT=<AZURE_OPENAI_ENDPOINT>' -e 'AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME=<AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME>' -e 'AZURE_OPENAI_API_VERSION=<AZURE_OPENAI_API_VERSION>' -e 'HUGGINGFACEHUB_API_TOKEN=<your huggingfacehub_api_token>' -e 'VOYAGE_API_KEY=<your voyage_api_key>' -e 'VOYAGE_TRUNCATION=<VOYAGE_TRUNCATION>' -e 'VOYAGE_BATCH_SIZE=<VOYAGE_BATCH_SIZE>' -e 'LANGSMITH_TRACING=<LANGSMITH_TRACING>' -e 'LANGSMITH_API_KEY=<your langsmith_api_key>' -e 'LANGSMITH_PROJECT=<LANGSMITH_PROJECT>' -e 'LANGSMITH_ENDPOINT=<LANGSMITH_ENDPOINT>' -e 'METADATA_INDEXED_FIELDS=<METADATA_INDEXED_FIELDS>' -e 'METADATA_INDEX_SYNC_MODE=<METADATA_INDEX_SYNC_MODE>' -e 'MCP_TRANSPORT=<MCP_TRANSPORT>' -e 'FASTMCP_HOST=<FASTMCP_HOST>' -e 'FASTMCP_PORT=<FASTMCP_PORT>' -e 'FASTMCP_STATELESS_HTTP=<FASTMCP_STATELESS_HTTP>' -e 'DISABLED_TOOLS=<DISABLED_TOOLS>' -e 'MCP_AUTH_TOKEN=<your mcp_auth_token>' -e 'MCP_AUTH_CLIENT_ID=<MCP_AUTH_CLIENT_ID>' -e 'MCP_AUTH_PROVIDER=<MCP_AUTH_PROVIDER>' -e 'MCP_SERVER_INSTRUCTIONS=<MCP_SERVER_INSTRUCTIONS>' -- docker run -i --rm ghcr.io/alex-feel/mcp-context-server:2.2.2
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "mcp-context-server": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--rm",
                "ghcr.io/alex-feel/mcp-context-server:2.2.2"
            ],
            "env": {
                "LOG_LEVEL": "<LOG_LEVEL>",
                "STORAGE_BACKEND": "<STORAGE_BACKEND>",
                "MAX_IMAGE_SIZE_MB": "<MAX_IMAGE_SIZE_MB>",
                "MAX_TOTAL_SIZE_MB": "<MAX_TOTAL_SIZE_MB>",
                "DB_PATH": "<DB_PATH>",
                "POOL_MAX_READERS": "<POOL_MAX_READERS>",
                "POOL_MAX_WRITERS": "<POOL_MAX_WRITERS>",
                "POOL_CONNECTION_TIMEOUT_S": "<POOL_CONNECTION_TIMEOUT_S>",
                "POOL_IDLE_TIMEOUT_S": "<POOL_IDLE_TIMEOUT_S>",
                "POOL_HEALTH_CHECK_INTERVAL_S": "<POOL_HEALTH_CHECK_INTERVAL_S>",
                "RETRY_MAX_RETRIES": "<RETRY_MAX_RETRIES>",
                "RETRY_BASE_DELAY_S": "<RETRY_BASE_DELAY_S>",
                "RETRY_MAX_DELAY_S": "<RETRY_MAX_DELAY_S>",
                "RETRY_JITTER": "<RETRY_JITTER>",
                "RETRY_BACKOFF_FACTOR": "<RETRY_BACKOFF_FACTOR>",
                "SQLITE_FOREIGN_KEYS": "<SQLITE_FOREIGN_KEYS>",
                "SQLITE_JOURNAL_MODE": "<SQLITE_JOURNAL_MODE>",
                "SQLITE_SYNCHRONOUS": "<SQLITE_SYNCHRONOUS>",
                "SQLITE_TEMP_STORE": "<SQLITE_TEMP_STORE>",
                "SQLITE_MMAP_SIZE": "<SQLITE_MMAP_SIZE>",
                "SQLITE_CACHE_SIZE": "<SQLITE_CACHE_SIZE>",
                "SQLITE_PAGE_SIZE": "<SQLITE_PAGE_SIZE>",
                "SQLITE_WAL_AUTOCHECKPOINT": "<SQLITE_WAL_AUTOCHECKPOINT>",
                "SQLITE_BUSY_TIMEOUT_MS": "<SQLITE_BUSY_TIMEOUT_MS>",
                "SQLITE_WAL_CHECKPOINT": "<SQLITE_WAL_CHECKPOINT>",
                "SHUTDOWN_TIMEOUT_S": "<SHUTDOWN_TIMEOUT_S>",
                "SHUTDOWN_TIMEOUT_TEST_S": "<SHUTDOWN_TIMEOUT_TEST_S>",
                "QUEUE_TIMEOUT_S": "<QUEUE_TIMEOUT_S>",
                "QUEUE_TIMEOUT_TEST_S": "<QUEUE_TIMEOUT_TEST_S>",
                "CIRCUIT_BREAKER_FAILURE_THRESHOLD": "<CIRCUIT_BREAKER_FAILURE_THRESHOLD>",
                "CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S": "<CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S>",
                "CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS": "<CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS>",
                "POSTGRESQL_CONNECTION_STRING": "<your postgresql_connection_string>",
                "POSTGRESQL_HOST": "<POSTGRESQL_HOST>",
                "POSTGRESQL_PORT": "<POSTGRESQL_PORT>",
                "POSTGRESQL_USER": "<POSTGRESQL_USER>",
                "POSTGRESQL_PASSWORD": "<your postgresql_password>",
                "POSTGRESQL_DATABASE": "<POSTGRESQL_DATABASE>",
                "POSTGRESQL_POOL_MIN": "<POSTGRESQL_POOL_MIN>",
                "POSTGRESQL_POOL_MAX": "<POSTGRESQL_POOL_MAX>",
                "POSTGRESQL_POOL_TIMEOUT_S": "<POSTGRESQL_POOL_TIMEOUT_S>",
                "POSTGRESQL_COMMAND_TIMEOUT_S": "<POSTGRESQL_COMMAND_TIMEOUT_S>",
                "POSTGRESQL_MIGRATION_TIMEOUT_S": "<POSTGRESQL_MIGRATION_TIMEOUT_S>",
                "POSTGRESQL_MAX_INACTIVE_LIFETIME_S": "<POSTGRESQL_MAX_INACTIVE_LIFETIME_S>",
                "POSTGRESQL_MAX_QUERIES": "<POSTGRESQL_MAX_QUERIES>",
                "POSTGRESQL_TCP_KEEPALIVES_IDLE_S": "<POSTGRESQL_TCP_KEEPALIVES_IDLE_S>",
                "POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S": "<POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S>",
                "POSTGRESQL_TCP_KEEPALIVES_COUNT": "<POSTGRESQL_TCP_KEEPALIVES_COUNT>",
                "POSTGRESQL_STATEMENT_CACHE_SIZE": "<POSTGRESQL_STATEMENT_CACHE_SIZE>",
                "POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S": "<POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S>",
                "POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE": "<POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE>",
                "POSTGRESQL_SSL_MODE": "<POSTGRESQL_SSL_MODE>",
                "POSTGRESQL_SCHEMA": "<POSTGRESQL_SCHEMA>",
                "ENABLE_SEMANTIC_SEARCH": "<ENABLE_SEMANTIC_SEARCH>",
                "ENABLE_EMBEDDING_GENERATION": "<ENABLE_EMBEDDING_GENERATION>",
                "OLLAMA_HOST": "<OLLAMA_HOST>",
                "OLLAMA_AUTO_PULL": "<OLLAMA_AUTO_PULL>",
                "OLLAMA_PULL_TIMEOUT_S": "<OLLAMA_PULL_TIMEOUT_S>",
                "EMBEDDING_OLLAMA_TRUNCATE": "<EMBEDDING_OLLAMA_TRUNCATE>",
                "EMBEDDING_OLLAMA_NUM_CTX": "<EMBEDDING_OLLAMA_NUM_CTX>",
                "EMBEDDING_MODEL": "<EMBEDDING_MODEL>",
                "EMBEDDING_DIM": "<EMBEDDING_DIM>",
                "EMBEDDING_TIMEOUT_S": "<EMBEDDING_TIMEOUT_S>",
                "EMBEDDING_RETRY_MAX_ATTEMPTS": "<EMBEDDING_RETRY_MAX_ATTEMPTS>",
                "EMBEDDING_RETRY_BASE_DELAY_S": "<EMBEDDING_RETRY_BASE_DELAY_S>",
                "EMBEDDING_MAX_CONCURRENT": "<EMBEDDING_MAX_CONCURRENT>",
                "ENABLE_SUMMARY_GENERATION": "<ENABLE_SUMMARY_GENERATION>",
                "SUMMARY_PROVIDER": "<SUMMARY_PROVIDER>",
                "SUMMARY_MODEL": "<SUMMARY_MODEL>",
                "SUMMARY_MAX_TOKENS": "<SUMMARY_MAX_TOKENS>",
                "SUMMARY_TIMEOUT_S": "<SUMMARY_TIMEOUT_S>",
                "SUMMARY_RETRY_MAX_ATTEMPTS": "<SUMMARY_RETRY_MAX_ATTEMPTS>",
                "SUMMARY_RETRY_BASE_DELAY_S": "<SUMMARY_RETRY_BASE_DELAY_S>",
                "SUMMARY_MAX_CONCURRENT": "<SUMMARY_MAX_CONCURRENT>",
                "SUMMARY_PROMPT": "<SUMMARY_PROMPT>",
                "SUMMARY_MIN_CONTENT_LENGTH": "<SUMMARY_MIN_CONTENT_LENGTH>",
                "SUMMARY_OLLAMA_NUM_CTX": "<SUMMARY_OLLAMA_NUM_CTX>",
                "SUMMARY_OLLAMA_TRUNCATE": "<SUMMARY_OLLAMA_TRUNCATE>",
                "SUMMARY_OPENAI_REASONING_EFFORT": "<SUMMARY_OPENAI_REASONING_EFFORT>",
                "SUMMARY_ANTHROPIC_EFFORT": "<SUMMARY_ANTHROPIC_EFFORT>",
                "ANTHROPIC_API_KEY": "<your anthropic_api_key>",
                "ENABLE_FTS": "<ENABLE_FTS>",
                "FTS_LANGUAGE": "<FTS_LANGUAGE>",
                "FTS_RERANK_WINDOW_SIZE": "<FTS_RERANK_WINDOW_SIZE>",
                "FTS_RERANK_GAP_MERGE": "<FTS_RERANK_GAP_MERGE>",
                "ENABLE_HYBRID_SEARCH": "<ENABLE_HYBRID_SEARCH>",
                "HYBRID_RRF_K": "<HYBRID_RRF_K>",
                "HYBRID_RRF_OVERFETCH": "<HYBRID_RRF_OVERFETCH>",
                "HYBRID_FTS_OR_THRESHOLD": "<HYBRID_FTS_OR_THRESHOLD>",
                "SEARCH_DEFAULT_SORT_BY": "<SEARCH_DEFAULT_SORT_BY>",
                "SEARCH_TRUNCATION_LENGTH": "<SEARCH_TRUNCATION_LENGTH>",
                "ENABLE_CHUNKING": "<ENABLE_CHUNKING>",
                "CHUNK_SIZE": "<CHUNK_SIZE>",
                "CHUNK_OVERLAP": "<CHUNK_OVERLAP>",
                "CHUNK_AGGREGATION": "<CHUNK_AGGREGATION>",
                "CHUNK_DEDUP_OVERFETCH": "<CHUNK_DEDUP_OVERFETCH>",
                "ENABLE_RERANKING": "<ENABLE_RERANKING>",
                "RERANKING_PROVIDER": "<RERANKING_PROVIDER>",
                "RERANKING_MODEL": "<RERANKING_MODEL>",
                "RERANKING_MAX_LENGTH": "<RERANKING_MAX_LENGTH>",
                "RERANKING_OVERFETCH": "<RERANKING_OVERFETCH>",
                "RERANKING_CACHE_DIR": "<RERANKING_CACHE_DIR>",
                "RERANKING_CHARS_PER_TOKEN": "<RERANKING_CHARS_PER_TOKEN>",
                "RERANKING_INTRA_OP_THREADS": "<RERANKING_INTRA_OP_THREADS>",
                "RERANKING_CPU_MEM_ARENA": "<RERANKING_CPU_MEM_ARENA>",
                "RERANKING_BATCH_SIZE": "<RERANKING_BATCH_SIZE>",
                "EMBEDDING_PROVIDER": "<EMBEDDING_PROVIDER>",
                "OPENAI_API_KEY": "<your openai_api_key>",
                "OPENAI_API_BASE": "<OPENAI_API_BASE>",
                "OPENAI_ORGANIZATION": "<OPENAI_ORGANIZATION>",
                "AZURE_OPENAI_API_KEY": "<your azure_openai_api_key>",
                "AZURE_OPENAI_ENDPOINT": "<AZURE_OPENAI_ENDPOINT>",
                "AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME": "<AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME>",
                "AZURE_OPENAI_API_VERSION": "<AZURE_OPENAI_API_VERSION>",
                "HUGGINGFACEHUB_API_TOKEN": "<your huggingfacehub_api_token>",
                "VOYAGE_API_KEY": "<your voyage_api_key>",
                "VOYAGE_TRUNCATION": "<VOYAGE_TRUNCATION>",
                "VOYAGE_BATCH_SIZE": "<VOYAGE_BATCH_SIZE>",
                "LANGSMITH_TRACING": "<LANGSMITH_TRACING>",
                "LANGSMITH_API_KEY": "<your langsmith_api_key>",
                "LANGSMITH_PROJECT": "<LANGSMITH_PROJECT>",
                "LANGSMITH_ENDPOINT": "<LANGSMITH_ENDPOINT>",
                "METADATA_INDEXED_FIELDS": "<METADATA_INDEXED_FIELDS>",
                "METADATA_INDEX_SYNC_MODE": "<METADATA_INDEX_SYNC_MODE>",
                "MCP_TRANSPORT": "<MCP_TRANSPORT>",
                "FASTMCP_HOST": "<FASTMCP_HOST>",
                "FASTMCP_PORT": "<FASTMCP_PORT>",
                "FASTMCP_STATELESS_HTTP": "<FASTMCP_STATELESS_HTTP>",
                "DISABLED_TOOLS": "<DISABLED_TOOLS>",
                "MCP_AUTH_TOKEN": "<your mcp_auth_token>",
                "MCP_AUTH_CLIENT_ID": "<MCP_AUTH_CLIENT_ID>",
                "MCP_AUTH_PROVIDER": "<MCP_AUTH_PROVIDER>",
                "MCP_SERVER_INSTRUCTIONS": "<MCP_SERVER_INSTRUCTIONS>"
            }
        }
    }
}

Environment variables

  • LOG_LEVEL Log level
  • STORAGE_BACKEND Storage backend type: sqlite (default) or postgresql
  • MAX_IMAGE_SIZE_MB Maximum individual image size in megabytes
  • MAX_TOTAL_SIZE_MB Maximum total request size in megabytes
  • DB_PATH Custom database file location path
  • POOL_MAX_READERS Maximum number of concurrent read connections in the pool
  • POOL_MAX_WRITERS Maximum number of concurrent write connections in the pool
  • POOL_CONNECTION_TIMEOUT_S Connection timeout in seconds
  • POOL_IDLE_TIMEOUT_S Idle connection timeout in seconds
  • POOL_HEALTH_CHECK_INTERVAL_S Connection health check interval in seconds
  • RETRY_MAX_RETRIES Maximum number of retry attempts for failed operations
  • RETRY_BASE_DELAY_S Base delay in seconds between retry attempts
  • RETRY_MAX_DELAY_S Maximum delay in seconds between retry attempts
  • RETRY_JITTER Enable random jitter in retry delays
  • RETRY_BACKOFF_FACTOR Exponential backoff multiplication factor for retries
  • SQLITE_FOREIGN_KEYS Enable SQLite foreign key constraints
  • SQLITE_JOURNAL_MODE SQLite journal mode (e.g., WAL, DELETE)
  • SQLITE_SYNCHRONOUS SQLite synchronous mode (e.g., NORMAL, FULL, OFF)
  • SQLITE_TEMP_STORE SQLite temporary storage location (e.g., MEMORY, FILE)
  • SQLITE_MMAP_SIZE SQLite memory-mapped I/O size in bytes
  • SQLITE_CACHE_SIZE SQLite cache size (negative value for KB, positive for pages)
  • SQLITE_PAGE_SIZE SQLite page size in bytes
  • SQLITE_WAL_AUTOCHECKPOINT SQLite WAL autocheckpoint threshold in pages
  • SQLITE_BUSY_TIMEOUT_MS SQLite busy timeout in milliseconds
  • SQLITE_WAL_CHECKPOINT SQLite WAL checkpoint mode (e.g., PASSIVE, FULL, RESTART)
  • SHUTDOWN_TIMEOUT_S Server shutdown timeout in seconds
  • SHUTDOWN_TIMEOUT_TEST_S Test mode shutdown timeout in seconds
  • QUEUE_TIMEOUT_S Queue operation timeout in seconds
  • QUEUE_TIMEOUT_TEST_S Test mode queue timeout in seconds
  • CIRCUIT_BREAKER_FAILURE_THRESHOLD Circuit breaker failure threshold before opening
  • CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S Circuit breaker recovery timeout in seconds
  • CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS Maximum calls allowed in circuit breaker half-open state
  • POSTGRESQL_CONNECTION_STRING secret Complete PostgreSQL connection string (overrides individual settings if provided)
  • POSTGRESQL_HOST PostgreSQL server host address
  • POSTGRESQL_PORT PostgreSQL server port number
  • POSTGRESQL_USER PostgreSQL database username
  • POSTGRESQL_PASSWORD secret PostgreSQL database password
  • POSTGRESQL_DATABASE PostgreSQL database name
  • POSTGRESQL_POOL_MIN PostgreSQL connection pool minimum size
  • POSTGRESQL_POOL_MAX PostgreSQL connection pool maximum size
  • POSTGRESQL_POOL_TIMEOUT_S PostgreSQL connection pool timeout in seconds
  • POSTGRESQL_COMMAND_TIMEOUT_S PostgreSQL command execution timeout in seconds
  • POSTGRESQL_MIGRATION_TIMEOUT_S Timeout in seconds for PostgreSQL migration operations (default: 300)
  • POSTGRESQL_MAX_INACTIVE_LIFETIME_S Close idle PostgreSQL connections after this many seconds (0 to disable, default: 300)
  • POSTGRESQL_MAX_QUERIES Recycle PostgreSQL connections after this many queries (0 to disable, default: 10000)
  • POSTGRESQL_TCP_KEEPALIVES_IDLE_S Seconds of idle time before sending first TCP keepalive probe (0 to disable, default: 15)
  • POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S Seconds between subsequent TCP keepalive probes (0 to disable, default: 5)
  • POSTGRESQL_TCP_KEEPALIVES_COUNT Number of failed TCP keepalive probes before connection is considered dead (0 to disable, default: 3)
  • POSTGRESQL_STATEMENT_CACHE_SIZE asyncpg prepared statement cache size. Set to 0 for external pooler compatibility (PgBouncer transaction mode, Pgpool-II, etc.). Default: 100
  • POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S Maximum lifetime of cached prepared statements in seconds (default: 300). Has no effect when statement_cache_size=0
  • POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE Maximum size of statement to cache in bytes (default: 15360). Has no effect when statement_cache_size=0
  • POSTGRESQL_SSL_MODE PostgreSQL SSL mode (disable, allow, prefer, require, verify-ca, verify-full)
  • POSTGRESQL_SCHEMA PostgreSQL schema name for table and index operations (default: public)
  • ENABLE_SEMANTIC_SEARCH Enable semantic search functionality
  • ENABLE_EMBEDDING_GENERATION Enable embedding generation for stored context. Default true - server fails if dependencies not met. Set false to disable embeddings.
  • OLLAMA_HOST Ollama API host URL for embedding generation
  • OLLAMA_AUTO_PULL Automatically pull missing Ollama models on startup (default: true)
  • OLLAMA_PULL_TIMEOUT_S Timeout in seconds for pulling Ollama models (default: 900, range: 30-3600)
  • EMBEDDING_OLLAMA_TRUNCATE Ollama embedding truncation mode: false (default) returns error when context exceeded, true enables silent truncation
  • EMBEDDING_OLLAMA_NUM_CTX Ollama embedding context window size in tokens (default: 4096, range: 512-2097152)
  • EMBEDDING_MODEL Embedding model name for semantic search
  • EMBEDDING_DIM Embedding vector dimensions
  • EMBEDDING_TIMEOUT_S Timeout in seconds for embedding generation API calls
  • EMBEDDING_RETRY_MAX_ATTEMPTS Maximum number of retry attempts for embedding generation
  • EMBEDDING_RETRY_BASE_DELAY_S Base delay in seconds between retry attempts (with exponential backoff)
  • EMBEDDING_MAX_CONCURRENT Maximum concurrent embedding generation operations (default: 3, range: 1-20)
  • ENABLE_SUMMARY_GENERATION Enable summary generation for stored context. Default true - server fails if dependencies not met. Set false to disable summaries.
  • SUMMARY_PROVIDER Summary provider: ollama (default), openai, or anthropic
  • SUMMARY_MODEL Summary generation model name (default: qwen3:0.6b)
  • SUMMARY_MAX_TOKENS Maximum output tokens for summary generation (default: 4000, range: 50-16384). Increase if summaries are truncated by reasoning models
  • SUMMARY_TIMEOUT_S Timeout in seconds for summary generation API calls
  • SUMMARY_RETRY_MAX_ATTEMPTS Maximum number of retry attempts for summary generation
  • SUMMARY_RETRY_BASE_DELAY_S Base delay in seconds between retry attempts (with exponential backoff)
  • SUMMARY_MAX_CONCURRENT Maximum concurrent summary generation operations (default: 3, range: 1-20)
  • SUMMARY_PROMPT Custom summarization prompt. Overrides the built-in default. Used as system message for the LLM.
  • SUMMARY_MIN_CONTENT_LENGTH Minimum text content length in characters to trigger summary generation (default: 500, range: 0-10000). Set to 0 to always generate.
  • SUMMARY_OLLAMA_NUM_CTX Ollama summary context window size in tokens (default: 32768, range: 512-2097152)
  • SUMMARY_OLLAMA_TRUNCATE Ollama summary truncation mode: false (default) returns error when context exceeded, true enables silent truncation
  • SUMMARY_OPENAI_REASONING_EFFORT Reasoning effort level for OpenAI reasoning models (default: low). Valid values vary by generation: gpt-5: low, medium, high; gpt-5.1+: none, low, medium, high, xhigh. Default low is universally valid across all generations
  • SUMMARY_ANTHROPIC_EFFORT Effort level for Anthropic Claude models (default: none). Valid values: max, high, medium, low. Controls inference effort (adaptive thinking)
  • ANTHROPIC_API_KEY secret Anthropic API key for summary generation
  • ENABLE_FTS Enable full-text search functionality
  • FTS_LANGUAGE Language for FTS stemming (e.g., english, german, french)
  • FTS_RERANK_WINDOW_SIZE Characters of context around each FTS match for reranking passage extraction (default: 750)
  • FTS_RERANK_GAP_MERGE Merge FTS match regions within this character distance (default: 100)
  • ENABLE_HYBRID_SEARCH Enable hybrid search combining FTS and semantic search with RRF fusion
  • HYBRID_RRF_K RRF smoothing constant for hybrid search (default 60)
  • HYBRID_RRF_OVERFETCH Multiplier for over-fetching results before RRF fusion (default: 2)
  • HYBRID_FTS_OR_THRESHOLD Minimum significant query terms to switch hybrid FTS from AND to OR logic (default: 4)
  • SEARCH_DEFAULT_SORT_BY Default sort order for search results: relevance (only 'relevance' supported in current version)
  • SEARCH_TRUNCATION_LENGTH Maximum character length for truncated text_content in search results (default: 300, range: 50-1000)
  • ENABLE_CHUNKING Enable text chunking for embedding generation (default: true)
  • CHUNK_SIZE Target chunk size in characters (default: 1500)
  • CHUNK_OVERLAP Overlap between chunks in characters (default: 150)
  • CHUNK_AGGREGATION Chunk score aggregation method: max (only 'max' supported in current version)
  • CHUNK_DEDUP_OVERFETCH Multiplier for over-fetching chunks before deduplication (default: 5)
  • ENABLE_RERANKING Enable cross-encoder reranking of search results (default: true)
  • RERANKING_PROVIDER Reranking provider (default: flashrank)
  • RERANKING_MODEL Reranking model name (default: ms-marco-MiniLM-L-12-v2)
  • RERANKING_MAX_LENGTH Maximum input length for reranking in tokens (default: 512)
  • RERANKING_OVERFETCH Multiplier for over-fetching results before reranking (default: 4)
  • RERANKING_CACHE_DIR Directory for caching reranking models
  • RERANKING_CHARS_PER_TOKEN Estimated characters per token for passage size validation (default: 4.0, range: 2.0-8.0)
  • RERANKING_INTRA_OP_THREADS ONNX Runtime intra-operation parallelism threads for reranking (default: 0 = auto-detect)
  • RERANKING_CPU_MEM_ARENA Enable ONNX Runtime CPU memory arena for reranking (default: false)
  • RERANKING_BATCH_SIZE Maximum passages per ONNX Runtime inference batch during reranking (default: 32)
  • EMBEDDING_PROVIDER Embedding provider: ollama (default), openai, azure, huggingface, or voyage
  • OPENAI_API_KEY secret OpenAI API key for OpenAI embedding provider
  • OPENAI_API_BASE Custom base URL for OpenAI-compatible APIs
  • OPENAI_ORGANIZATION OpenAI organization ID
  • AZURE_OPENAI_API_KEY secret Azure OpenAI API key
  • AZURE_OPENAI_ENDPOINT Azure OpenAI endpoint URL
  • AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME Azure OpenAI embedding deployment name
  • AZURE_OPENAI_API_VERSION Azure OpenAI API version (default: 2024-02-01)
  • HUGGINGFACEHUB_API_TOKEN secret HuggingFace Hub API token for HuggingFace embedding provider
  • VOYAGE_API_KEY secret Voyage AI API key for Voyage embedding provider
  • VOYAGE_TRUNCATION Voyage AI truncation mode: false (default) returns error when context exceeded, true enables silent truncation
  • VOYAGE_BATCH_SIZE Voyage AI batch size for embedding requests
  • LANGSMITH_TRACING Enable LangSmith tracing
  • LANGSMITH_API_KEY secret LangSmith API key
  • LANGSMITH_PROJECT LangSmith project name
  • LANGSMITH_ENDPOINT LangSmith API endpoint URL
  • METADATA_INDEXED_FIELDS Comma-separated list of metadata fields to index (field:type format)
  • METADATA_INDEX_SYNC_MODE Index sync mode: strict (fail), auto (sync), warn (log), additive (default, add missing only)
  • MCP_TRANSPORT Transport mode: stdio for local, http for Docker/remote
  • FASTMCP_HOST HTTP bind address (use 0.0.0.0 for Docker)
  • FASTMCP_PORT HTTP port number
  • FASTMCP_STATELESS_HTTP Enable stateless HTTP mode for horizontal scaling. Enabled by default as the server has no stateful MCP features. Set to false only if you need server-side MCP session tracking.
  • DISABLED_TOOLS Comma-separated list of tools to disable (e.g., delete_context,update_context)
  • MCP_AUTH_TOKEN secret Bearer token for HTTP authentication (required when using SimpleTokenVerifier)
  • MCP_AUTH_CLIENT_ID Client ID to assign to authenticated requests
  • MCP_AUTH_PROVIDER Authentication provider: none (default), simple_token
  • MCP_SERVER_INSTRUCTIONS Custom server instructions text. Overrides built-in default. Set to empty string to disable.

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. MCP Context Server
  2. Key Features
  3. Connecting to Your AI Assistant
  4. Environment Configuration
  5. Summary Generation
  6. Semantic Search
  7. Full-Text Search
  8. Hybrid Search
  9. Metadata Filtering
  10. Database Backends
  11. API Reference
  12. Docker Deployment
  13. Kubernetes Deployment
  14. Authentication
  15. Getting Help
  16. License

MCP Context Server

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-migrate ships with the server.

See the Migration Guide before upgrading. Fresh installations are unaffected.

Key Features

  • Multimodal Context Storage: Store and retrieve both text and images
  • UUIDv7 Context Identifiers: Every context entry is identified by a 32-character lowercase hex UUIDv7 value, providing time-ordered, globally unique IDs with a stable lex-string ordering
  • Thread-Based Scoping: Agents working on the same task share context through thread IDs
  • Per-Record Access Control: Every entry has an owner, a private or public visibility, and optional user or group grants, enforced on every read, update and delete on both SQLite and PostgreSQL. With IdP-issued JWTs, each caller finds, counts and changes only the entries it may access, the owner of an entry shares it with users or groups through share_context, and every returned entry reports its visibility and whether the caller owns it. See the Access Model
  • Anonymous Read Access: Hand readers without an identity-provider account one shared token that reads public entries and can never write: the server refuses every write by the principal ACCESS_CONTROL_ANONYMOUS_PRINCIPAL names, and the token must expire. See Anonymous Read Access
  • PostgreSQL Row-Level Security (optional): With ENABLE_POSTGRESQL_RLS=true, PostgreSQL also enforces the access model in the database, so a defect in how a query applies the access rules cannot expose another principal's entries. Reads go through an owner-owned, role-gated view that keeps every search index in use. See Row-level security (PostgreSQL)
  • Flexible Metadata Filtering: Store custom structured data with any JSON-serializable fields and filter using 16 powerful operators
  • Date Range Filtering: Filter context entries by creation timestamp using ISO 8601 format
  • Tag-Based Organization: Efficient context retrieval with normalized, indexed tags
  • Summary Generation: Optional automatic LLM-based summarization returned alongside truncated text_content in all search tool results for better agent context efficiency (enabled by default with Ollama)
  • Full-Text Search: Linguistic search with stemming, ranking, boolean queries (FTS5/tsvector), and cross-encoder reranking. Auto-enabled by default (ENABLE_FTS=auto); needs no extra dependencies
  • Semantic Search: Vector similarity search for meaning-based retrieval with cross-encoder reranking. Auto-enabled by default (ENABLE_SEMANTIC_SEARCH=auto) whenever an embedding provider is available (embedding generation is on by default)
  • Hybrid Search: Combined FTS + semantic search using Reciprocal Rank Fusion (RRF) with cross-encoder reranking. Auto-enabled by default (ENABLE_HYBRID_SEARCH=auto) whenever at least one of full-text or semantic search is available
  • Server-Side Grep: Literal/regex, line-oriented, unranked pattern matching over stored records (grep_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 PostgreSQL
  • Record Navigation (index_tree): navigate_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 section
  • Partial Reads: read_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 thing
  • Knowledge Base Sync: Host document corpora such as handbooks and runbooks in kb:<corpus> threads that agents search and navigate like any other context. The mcp-context-ingest command uploads a directory of documents and keeps it in sync, storing new files, updating changed ones and removing deleted ones, planned by the read-only plan_context_sync tool (ENABLE_CONTEXT_SYNC=auto). See the Knowledge Base Guide
  • Cross-Encoder Reranking: Automatic result refinement using FlashRank cross-encoder models for improved search precision (enabled by default)
  • Embedding Compression (default ON): Reduces embedding storage by approximately 8x out of the box in v3.0.0. Bit-packed compressed vectors keep semantic and hybrid search working without changes to the tool surface, and the read path bypasses the pgvector >2000-dimension HNSW limit. Set ENABLE_EMBEDDING_COMPRESSION=false to opt out and keep fp32 storage. See the Embedding Compression Guide
  • Multiple Database Backends: Choose between SQLite (default, zero-config) or PostgreSQL (high-concurrency, production-grade)
  • High Performance: WAL mode (SQLite) / MVCC (PostgreSQL), strategic indexing, and async operations
  • MCP Standard Compliance: Works with Claude Code, LangGraph, and any MCP-compatible client
  • Production Ready: Comprehensive test coverage, type safety, and robust error handling

Connecting to Your AI Assistant

The 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.

Environment Configuration

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

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.

Metadata Filtering

For comprehensive metadata filtering including 16 operators, nested JSON paths, and performance optimization, see the Metadata Guide.

Database Backends

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.

API Reference

The MCP Context Server exposes 21 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

Sync Tools: plan_context_sync, list_ingest_state

Sharing Tools: share_context, unshare_context, list_context_grants

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 hosting and syncing document corpora, see the Knowledge Base Guide.

Docker Deployment

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.

Kubernetes Deployment

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.

Authentication

For HTTP transport deployments requiring authentication, see the Authentication Guide for bearer token and IdP-issued JWT configuration, sharing entries with users and groups, and anonymous read access through an operator-minted token.

Getting Help

License

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.

Frequently asked questions

What is io.github.alex-feel/mcp-context-server?

An MCP server that provides persistent multimodal context storage for LLM agents.

How do I install io.github.alex-feel/mcp-context-server?

It runs on your machine. In Claude Code: claude mcp add mcp-context-server -e 'LOG_LEVEL=<LOG_LEVEL>' -e 'STORAGE_BACKEND=<STORAGE_BACKEND>' -e 'MAX_IMAGE_SIZE_MB=<MAX_IMAGE_SIZE_MB>' -e 'MAX_TOTAL_SIZE_MB=<MAX_TOTAL_SIZE_MB>' -e 'DB_PATH=<DB_PATH>' -e 'POOL_MAX_READERS=<POOL_MAX_READERS>' -e 'POOL_MAX_WRITERS=<POOL_MAX_WRITERS>' -e 'POOL_CONNECTION_TIMEOUT_S=<POOL_CONNECTION_TIMEOUT_S>' -e 'POOL_IDLE_TIMEOUT_S=<POOL_IDLE_TIMEOUT_S>' -e 'POOL_HEALTH_CHECK_INTERVAL_S=<POOL_HEALTH_CHECK_INTERVAL_S>' -e 'RETRY_MAX_RETRIES=<RETRY_MAX_RETRIES>' -e 'RETRY_BASE_DELAY_S=<RETRY_BASE_DELAY_S>' -e 'RETRY_MAX_DELAY_S=<RETRY_MAX_DELAY_S>' -e 'RETRY_JITTER=<RETRY_JITTER>' -e 'RETRY_BACKOFF_FACTOR=<RETRY_BACKOFF_FACTOR>' -e 'SQLITE_FOREIGN_KEYS=<SQLITE_FOREIGN_KEYS>' -e 'SQLITE_JOURNAL_MODE=<SQLITE_JOURNAL_MODE>' -e 'SQLITE_SYNCHRONOUS=<SQLITE_SYNCHRONOUS>' -e 'SQLITE_TEMP_STORE=<SQLITE_TEMP_STORE>' -e 'SQLITE_MMAP_SIZE=<SQLITE_MMAP_SIZE>' -e 'SQLITE_CACHE_SIZE=<SQLITE_CACHE_SIZE>' -e 'SQLITE_PAGE_SIZE=<SQLITE_PAGE_SIZE>' -e 'SQLITE_WAL_AUTOCHECKPOINT=<SQLITE_WAL_AUTOCHECKPOINT>' -e 'SQLITE_BUSY_TIMEOUT_MS=<SQLITE_BUSY_TIMEOUT_MS>' -e 'SQLITE_WAL_CHECKPOINT=<SQLITE_WAL_CHECKPOINT>' -e 'SHUTDOWN_TIMEOUT_S=<SHUTDOWN_TIMEOUT_S>' -e 'SHUTDOWN_TIMEOUT_TEST_S=<SHUTDOWN_TIMEOUT_TEST_S>' -e 'QUEUE_TIMEOUT_S=<QUEUE_TIMEOUT_S>' -e 'QUEUE_TIMEOUT_TEST_S=<QUEUE_TIMEOUT_TEST_S>' -e 'CIRCUIT_BREAKER_FAILURE_THRESHOLD=<CIRCUIT_BREAKER_FAILURE_THRESHOLD>' -e 'CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S=<CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S>' -e 'CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS=<CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS>' -e 'POSTGRESQL_CONNECTION_STRING=<your postgresql_connection_string>' -e 'POSTGRESQL_HOST=<POSTGRESQL_HOST>' -e 'POSTGRESQL_PORT=<POSTGRESQL_PORT>' -e 'POSTGRESQL_USER=<POSTGRESQL_USER>' -e 'POSTGRESQL_PASSWORD=<your postgresql_password>' -e 'POSTGRESQL_DATABASE=<POSTGRESQL_DATABASE>' -e 'POSTGRESQL_POOL_MIN=<POSTGRESQL_POOL_MIN>' -e 'POSTGRESQL_POOL_MAX=<POSTGRESQL_POOL_MAX>' -e 'POSTGRESQL_POOL_TIMEOUT_S=<POSTGRESQL_POOL_TIMEOUT_S>' -e 'POSTGRESQL_COMMAND_TIMEOUT_S=<POSTGRESQL_COMMAND_TIMEOUT_S>' -e 'POSTGRESQL_MIGRATION_TIMEOUT_S=<POSTGRESQL_MIGRATION_TIMEOUT_S>' -e 'POSTGRESQL_MAX_INACTIVE_LIFETIME_S=<POSTGRESQL_MAX_INACTIVE_LIFETIME_S>' -e 'POSTGRESQL_MAX_QUERIES=<POSTGRESQL_MAX_QUERIES>' -e 'POSTGRESQL_TCP_KEEPALIVES_IDLE_S=<POSTGRESQL_TCP_KEEPALIVES_IDLE_S>' -e 'POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S=<POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S>' -e 'POSTGRESQL_TCP_KEEPALIVES_COUNT=<POSTGRESQL_TCP_KEEPALIVES_COUNT>' -e 'POSTGRESQL_STATEMENT_CACHE_SIZE=<POSTGRESQL_STATEMENT_CACHE_SIZE>' -e 'POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S=<POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S>' -e 'POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE=<POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE>' -e 'POSTGRESQL_SSL_MODE=<POSTGRESQL_SSL_MODE>' -e 'POSTGRESQL_SCHEMA=<POSTGRESQL_SCHEMA>' -e 'ENABLE_SEMANTIC_SEARCH=<ENABLE_SEMANTIC_SEARCH>' -e 'ENABLE_EMBEDDING_GENERATION=<ENABLE_EMBEDDING_GENERATION>' -e 'OLLAMA_HOST=<OLLAMA_HOST>' -e 'OLLAMA_AUTO_PULL=<OLLAMA_AUTO_PULL>' -e 'OLLAMA_PULL_TIMEOUT_S=<OLLAMA_PULL_TIMEOUT_S>' -e 'EMBEDDING_OLLAMA_TRUNCATE=<EMBEDDING_OLLAMA_TRUNCATE>' -e 'EMBEDDING_OLLAMA_NUM_CTX=<EMBEDDING_OLLAMA_NUM_CTX>' -e 'EMBEDDING_MODEL=<EMBEDDING_MODEL>' -e 'EMBEDDING_DIM=<EMBEDDING_DIM>' -e 'EMBEDDING_TIMEOUT_S=<EMBEDDING_TIMEOUT_S>' -e 'EMBEDDING_RETRY_MAX_ATTEMPTS=<EMBEDDING_RETRY_MAX_ATTEMPTS>' -e 'EMBEDDING_RETRY_BASE_DELAY_S=<EMBEDDING_RETRY_BASE_DELAY_S>' -e 'EMBEDDING_MAX_CONCURRENT=<EMBEDDING_MAX_CONCURRENT>' -e 'ENABLE_SUMMARY_GENERATION=<ENABLE_SUMMARY_GENERATION>' -e 'SUMMARY_PROVIDER=<SUMMARY_PROVIDER>' -e 'SUMMARY_MODEL=<SUMMARY_MODEL>' -e 'SUMMARY_MAX_TOKENS=<SUMMARY_MAX_TOKENS>' -e 'SUMMARY_TIMEOUT_S=<SUMMARY_TIMEOUT_S>' -e 'SUMMARY_RETRY_MAX_ATTEMPTS=<SUMMARY_RETRY_MAX_ATTEMPTS>' -e 'SUMMARY_RETRY_BASE_DELAY_S=<SUMMARY_RETRY_BASE_DELAY_S>' -e 'SUMMARY_MAX_CONCURRENT=<SUMMARY_MAX_CONCURRENT>' -e 'SUMMARY_PROMPT=<SUMMARY_PROMPT>' -e 'SUMMARY_MIN_CONTENT_LENGTH=<SUMMARY_MIN_CONTENT_LENGTH>' -e 'SUMMARY_OLLAMA_NUM_CTX=<SUMMARY_OLLAMA_NUM_CTX>' -e 'SUMMARY_OLLAMA_TRUNCATE=<SUMMARY_OLLAMA_TRUNCATE>' -e 'SUMMARY_OPENAI_REASONING_EFFORT=<SUMMARY_OPENAI_REASONING_EFFORT>' -e 'SUMMARY_ANTHROPIC_EFFORT=<SUMMARY_ANTHROPIC_EFFORT>' -e 'ANTHROPIC_API_KEY=<your anthropic_api_key>' -e 'ENABLE_FTS=<ENABLE_FTS>' -e 'FTS_LANGUAGE=<FTS_LANGUAGE>' -e 'FTS_RERANK_WINDOW_SIZE=<FTS_RERANK_WINDOW_SIZE>' -e 'FTS_RERANK_GAP_MERGE=<FTS_RERANK_GAP_MERGE>' -e 'ENABLE_HYBRID_SEARCH=<ENABLE_HYBRID_SEARCH>' -e 'HYBRID_RRF_K=<HYBRID_RRF_K>' -e 'HYBRID_RRF_OVERFETCH=<HYBRID_RRF_OVERFETCH>' -e 'HYBRID_FTS_OR_THRESHOLD=<HYBRID_FTS_OR_THRESHOLD>' -e 'SEARCH_DEFAULT_SORT_BY=<SEARCH_DEFAULT_SORT_BY>' -e 'SEARCH_TRUNCATION_LENGTH=<SEARCH_TRUNCATION_LENGTH>' -e 'ENABLE_CHUNKING=<ENABLE_CHUNKING>' -e 'CHUNK_SIZE=<CHUNK_SIZE>' -e 'CHUNK_OVERLAP=<CHUNK_OVERLAP>' -e 'CHUNK_AGGREGATION=<CHUNK_AGGREGATION>' -e 'CHUNK_DEDUP_OVERFETCH=<CHUNK_DEDUP_OVERFETCH>' -e 'ENABLE_RERANKING=<ENABLE_RERANKING>' -e 'RERANKING_PROVIDER=<RERANKING_PROVIDER>' -e 'RERANKING_MODEL=<RERANKING_MODEL>' -e 'RERANKING_MAX_LENGTH=<RERANKING_MAX_LENGTH>' -e 'RERANKING_OVERFETCH=<RERANKING_OVERFETCH>' -e 'RERANKING_CACHE_DIR=<RERANKING_CACHE_DIR>' -e 'RERANKING_CHARS_PER_TOKEN=<RERANKING_CHARS_PER_TOKEN>' -e 'RERANKING_INTRA_OP_THREADS=<RERANKING_INTRA_OP_THREADS>' -e 'RERANKING_CPU_MEM_ARENA=<RERANKING_CPU_MEM_ARENA>' -e 'RERANKING_BATCH_SIZE=<RERANKING_BATCH_SIZE>' -e 'EMBEDDING_PROVIDER=<EMBEDDING_PROVIDER>' -e 'OPENAI_API_KEY=<your openai_api_key>' -e 'OPENAI_API_BASE=<OPENAI_API_BASE>' -e 'OPENAI_ORGANIZATION=<OPENAI_ORGANIZATION>' -e 'AZURE_OPENAI_API_KEY=<your azure_openai_api_key>' -e 'AZURE_OPENAI_ENDPOINT=<AZURE_OPENAI_ENDPOINT>' -e 'AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME=<AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME>' -e 'AZURE_OPENAI_API_VERSION=<AZURE_OPENAI_API_VERSION>' -e 'HUGGINGFACEHUB_API_TOKEN=<your huggingfacehub_api_token>' -e 'VOYAGE_API_KEY=<your voyage_api_key>' -e 'VOYAGE_TRUNCATION=<VOYAGE_TRUNCATION>' -e 'VOYAGE_BATCH_SIZE=<VOYAGE_BATCH_SIZE>' -e 'LANGSMITH_TRACING=<LANGSMITH_TRACING>' -e 'LANGSMITH_API_KEY=<your langsmith_api_key>' -e 'LANGSMITH_PROJECT=<LANGSMITH_PROJECT>' -e 'LANGSMITH_ENDPOINT=<LANGSMITH_ENDPOINT>' -e 'METADATA_INDEXED_FIELDS=<METADATA_INDEXED_FIELDS>' -e 'METADATA_INDEX_SYNC_MODE=<METADATA_INDEX_SYNC_MODE>' -e 'MCP_TRANSPORT=<MCP_TRANSPORT>' -e 'FASTMCP_HOST=<FASTMCP_HOST>' -e 'FASTMCP_PORT=<FASTMCP_PORT>' -e 'FASTMCP_STATELESS_HTTP=<FASTMCP_STATELESS_HTTP>' -e 'DISABLED_TOOLS=<DISABLED_TOOLS>' -e 'MCP_AUTH_TOKEN=<your mcp_auth_token>' -e 'MCP_AUTH_CLIENT_ID=<MCP_AUTH_CLIENT_ID>' -e 'MCP_AUTH_PROVIDER=<MCP_AUTH_PROVIDER>' -e 'MCP_SERVER_INSTRUCTIONS=<MCP_SERVER_INSTRUCTIONS>' -- uvx mcp-context-server==2.2.2. For other clients, paste the JSON configuration from this page into their MCP settings.

Does io.github.alex-feel/mcp-context-server need an API key?

Yes. It expects POSTGRESQL_CONNECTION_STRING, POSTGRESQL_PASSWORD, ANTHROPIC_API_KEY, OPENAI_API_KEY, AZURE_OPENAI_API_KEY, HUGGINGFACEHUB_API_TOKEN, VOYAGE_API_KEY, LANGSMITH_API_KEY, MCP_AUTH_TOKEN, which you set in its configuration.

Is io.github.alex-feel/mcp-context-server open source?

Its code is public on GitHub, but the repository does not declare a standard license.

Who maintains io.github.alex-feel/mcp-context-server?

It is published by alex-feel. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.