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