Search / io.github.alex-feel/mcp-context-server
mcp-context-server
L0· runs locallyAn MCP server that provides persistent multimodal context storage for LLM agents.
v2.2.2 · active · repository · descriptor JSON · versions
Search / io.github.alex-feel/mcp-context-server
L0· runs locallyAn MCP server that provides persistent multimodal context storage for LLM agents.
v2.2.2 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"mcp-context-server": {
"command": "uvx",
"args": [
"mcp-context-server==2.2.2"
],
"env": {
"POSTGRESQL_CONNECTION_STRING": "${POSTGRESQL_CONNECTION_STRING}",
"POSTGRESQL_PASSWORD": "${POSTGRESQL_PASSWORD}",
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"OPENAI_API_KEY": "${OPENAI_API_KEY}",
"AZURE_OPENAI_API_KEY": "${AZURE_OPENAI_API_KEY}",
"HUGGINGFACEHUB_API_TOKEN": "${HUGGINGFACEHUB_API_TOKEN}",
"VOYAGE_API_KEY": "${VOYAGE_API_KEY}",
"LANGSMITH_API_KEY": "${LANGSMITH_API_KEY}",
"MCP_AUTH_TOKEN": "${MCP_AUTH_TOKEN}"
}
}
}
}claude mcp add mcp-context-server -e "POSTGRESQL_CONNECTION_STRING=${POSTGRESQL_CONNECTION_STRING}" -e "POSTGRESQL_PASSWORD=${POSTGRESQL_PASSWORD}" -e "ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}" -e "OPENAI_API_KEY=${OPENAI_API_KEY}" -e "AZURE_OPENAI_API_KEY=${AZURE_OPENAI_API_KEY}" -e "HUGGINGFACEHUB_API_TOKEN=${HUGGINGFACEHUB_API_TOKEN}" -e "VOYAGE_API_KEY=${VOYAGE_API_KEY}" -e "LANGSMITH_API_KEY=${LANGSMITH_API_KEY}" -e "MCP_AUTH_TOKEN=${MCP_AUTH_TOKEN}" -- uvx mcp-context-server==2.2.2[mcp_servers.mcp-context-server]
command = "uvx"
args = ["mcp-context-server==2.2.2"]
env = { "POSTGRESQL_CONNECTION_STRING" = "${POSTGRESQL_CONNECTION_STRING}", "POSTGRESQL_PASSWORD" = "${POSTGRESQL_PASSWORD}", "ANTHROPIC_API_KEY" = "${ANTHROPIC_API_KEY}", "OPENAI_API_KEY" = "${OPENAI_API_KEY}", "AZURE_OPENAI_API_KEY" = "${AZURE_OPENAI_API_KEY}", "HUGGINGFACEHUB_API_TOKEN" = "${HUGGINGFACEHUB_API_TOKEN}", "VOYAGE_API_KEY" = "${VOYAGE_API_KEY}", "LANGSMITH_API_KEY" = "${LANGSMITH_API_KEY}", "MCP_AUTH_TOKEN" = "${MCP_AUTH_TOKEN}" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp-context-server": {
"type": "local",
"command": [
"uvx",
"mcp-context-server==2.2.2"
],
"enabled": true,
"environment": {
"POSTGRESQL_CONNECTION_STRING": "{env:POSTGRESQL_CONNECTION_STRING}",
"POSTGRESQL_PASSWORD": "{env:POSTGRESQL_PASSWORD}",
"ANTHROPIC_API_KEY": "{env:ANTHROPIC_API_KEY}",
"OPENAI_API_KEY": "{env:OPENAI_API_KEY}",
"AZURE_OPENAI_API_KEY": "{env:AZURE_OPENAI_API_KEY}",
"HUGGINGFACEHUB_API_TOKEN": "{env:HUGGINGFACEHUB_API_TOKEN}",
"VOYAGE_API_KEY": "{env:VOYAGE_API_KEY}",
"LANGSMITH_API_KEY": "{env:LANGSMITH_API_KEY}",
"MCP_AUTH_TOKEN": "{env:MCP_AUTH_TOKEN}"
}
}
}
}{
"mcpServers": {
"mcp-context-server": {
"command": "uvx",
"args": [
"mcp-context-server==2.2.2"
],
"env": {
"POSTGRESQL_CONNECTION_STRING": "${POSTGRESQL_CONNECTION_STRING}",
"POSTGRESQL_PASSWORD": "${POSTGRESQL_PASSWORD}",
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"OPENAI_API_KEY": "${OPENAI_API_KEY}",
"AZURE_OPENAI_API_KEY": "${AZURE_OPENAI_API_KEY}",
"HUGGINGFACEHUB_API_TOKEN": "${HUGGINGFACEHUB_API_TOKEN}",
"VOYAGE_API_KEY": "${VOYAGE_API_KEY}",
"LANGSMITH_API_KEY": "${LANGSMITH_API_KEY}",
"MCP_AUTH_TOKEN": "${MCP_AUTH_TOKEN}"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=mcp-context-server&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJtY3AtY29udGV4dC1zZXJ2ZXI9PTIuMi4yIl0sImVudiI6eyJQT1NUR1JFU1FMX0NPTk5FQ1RJT05fU1RSSU5HIjoiJHtQT1NUR1JFU1FMX0NPTk5FQ1RJT05fU1RSSU5HfSIsIlBPU1RHUkVTUUxfUEFTU1dPUkQiOiIke1BPU1RHUkVTUUxfUEFTU1dPUkR9IiwiQU5USFJPUElDX0FQSV9LRVkiOiIke0FOVEhST1BJQ19BUElfS0VZfSIsIk9QRU5BSV9BUElfS0VZIjoiJHtPUEVOQUlfQVBJX0tFWX0iLCJBWlVSRV9PUEVOQUlfQVBJX0tFWSI6IiR7QVpVUkVfT1BFTkFJX0FQSV9LRVl9IiwiSFVHR0lOR0ZBQ0VIVUJfQVBJX1RPS0VOIjoiJHtIVUdHSU5HRkFDRUhVQl9BUElfVE9LRU59IiwiVk9ZQUdFX0FQSV9LRVkiOiIke1ZPWUFHRV9BUElfS0VZfSIsIkxBTkdTTUlUSF9BUElfS0VZIjoiJHtMQU5HU01JVEhfQVBJX0tFWX0iLCJNQ1BfQVVUSF9UT0tFTiI6IiR7TUNQX0FVVEhfVE9LRU59In19"
}{
"servers": {
"mcp-context-server": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-context-server==2.2.2"
],
"env": {
"POSTGRESQL_CONNECTION_STRING": "${POSTGRESQL_CONNECTION_STRING}",
"POSTGRESQL_PASSWORD": "${POSTGRESQL_PASSWORD}",
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"OPENAI_API_KEY": "${OPENAI_API_KEY}",
"AZURE_OPENAI_API_KEY": "${AZURE_OPENAI_API_KEY}",
"HUGGINGFACEHUB_API_TOKEN": "${HUGGINGFACEHUB_API_TOKEN}",
"VOYAGE_API_KEY": "${VOYAGE_API_KEY}",
"LANGSMITH_API_KEY": "${LANGSMITH_API_KEY}",
"MCP_AUTH_TOKEN": "${MCP_AUTH_TOKEN}"
}
}
}
}{
"mcpServers": {
"mcp-context-server": {
"command": "uvx",
"args": [
"mcp-context-server==2.2.2"
],
"env": {
"POSTGRESQL_CONNECTION_STRING": "${POSTGRESQL_CONNECTION_STRING}",
"POSTGRESQL_PASSWORD": "${POSTGRESQL_PASSWORD}",
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"OPENAI_API_KEY": "${OPENAI_API_KEY}",
"AZURE_OPENAI_API_KEY": "${AZURE_OPENAI_API_KEY}",
"HUGGINGFACEHUB_API_TOKEN": "${HUGGINGFACEHUB_API_TOKEN}",
"VOYAGE_API_KEY": "${VOYAGE_API_KEY}",
"LANGSMITH_API_KEY": "${LANGSMITH_API_KEY}",
"MCP_AUTH_TOKEN": "${MCP_AUTH_TOKEN}"
}
}
}
}extensions:
"mcp-context-server":
enabled: true
name: "mcp-context-server"
type: stdio
cmd: "uvx"
args:
- "mcp-context-server==2.2.2"
envs:
"POSTGRESQL_CONNECTION_STRING": "${POSTGRESQL_CONNECTION_STRING}"
"POSTGRESQL_PASSWORD": "${POSTGRESQL_PASSWORD}"
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}"
"OPENAI_API_KEY": "${OPENAI_API_KEY}"
"AZURE_OPENAI_API_KEY": "${AZURE_OPENAI_API_KEY}"
"HUGGINGFACEHUB_API_TOKEN": "${HUGGINGFACEHUB_API_TOKEN}"
"VOYAGE_API_KEY": "${VOYAGE_API_KEY}"
"LANGSMITH_API_KEY": "${LANGSMITH_API_KEY}"
"MCP_AUTH_TOKEN": "${MCP_AUTH_TOKEN}"
timeout: 300
Placeholders to fill from your own secret store: ${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}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns3 advisories to act on (malicious, or rated high or critical with a fix available): GHSA-82r6-8w77-94w6 in [email protected] (direct, fixed in 4.14.2), GHSA-rww4-4w9c-7733 in [email protected] (direct, fixed in 3.2.0), GHSA-vv7q-7jx5-f767 in [email protected] (direct, fixed in 3.2.0); 4 more of lower severity or without a fixdeps.mcp_sdk_versionmcp 1.30.0, no known advisorydeps.resolvable[email protected] resolved: 69 packagesNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo ~liveness-unmeasured -stale-206d -unpinned-packages(1)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
[email protected] PyPI68 dependencies, resolved · MCP SDK mcp 1.30.0 · advisories checked 2026-10-19
| advisory | severity | package | fixed in |
|---|---|---|---|
| GHSA-82r6-8w77-94w6AnyIO: TLSStream IDNA 2003 host name encoding enables potential TLS certificate spoofing | critical | [email protected]direct | fixed in 4.14.2 |
| GHSA-vv7q-7jx5-f767FastMCP OpenAPI Provider has an SSRF & Path Traversal Vulnerability | critical | [email protected]direct | fixed in 3.2.0 |
| GHSA-rww4-4w9c-7733FastMCP: Missing Consent Verification in OAuth Proxy Callback Facilitates Confused Deputy Vulnerabilities | high | [email protected]direct | fixed in 3.2.0 |
| GHSA-5p39-cfhj-2xmpAnyIO process-pool workers can block indefinitely on undrained stderr | moderate | [email protected]direct | fixed in 4.14.2 |
| GHSA-m8x7-r2rg-vh5gFastMCP has a Command Injection vulnerability - Gemini CLI | moderate | [email protected]direct | fixed in 3.2.0 |
| GHSA-4xgf-cpjx-pc3jpydantic-settings: NestedSecretsSettingsSource follows symlinks outside secrets_dir, enabling local file read and bypassing secrets_dir_max_size | moderate | [email protected]direct | fixed in 2.14.2 |
| GHSA-mf9w-mj56-hr94python-dotenv: Symlink following in set_key allows arbitrary file overwrite via cross-device rename fallback | moderate | [email protected]direct | fixed in 1.2.2 |
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
mcp-context-server | pypi | 2.2.2 | – | 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 |
ghcr.io/alex-feel/mcp-context-server:2.2.2 | oci | unpinned | docker | 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 |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.alex-feel/mcp-context-server",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "2.2.2",
"packages": [
{
"version": "2.2.2",
"transport": {
"type": "stdio"
},
"identifier": "mcp-context-server",
"registryType": "pypi",
"registryBaseUrl": "https://pypi.org",
"environmentVariables": [
{
"name": "LOG_LEVEL",
"format": "string",
"description": "Log level"
},
{
"name": "STORAGE_BACKEND",
"format": "string",
"description": "Storage backend type: sqlite (default) or postgresql"
},
{
"name": "MAX_IMAGE_SIZE_MB",
"format": "number",
"description": "Maximum individual image size in megabytes"
},
{
"name": "MAX_TOTAL_SIZE_MB",
"format": "number",
"description": "Maximum total request size in megabytes"
},
{
"name": "DB_PATH",
"format": "string",
"description": "Custom database file location path"
},
{
"name": "POOL_MAX_READERS",
"format": "number",
"description": "Maximum number of concurrent read connections in the pool"
},
{
"name": "POOL_MAX_WRITERS",
"format": "number",
"description": "Maximum number of concurrent write connections in the pool"
},
{
"name": "POOL_CONNECTION_TIMEOUT_S",
"format": "number",
"description": "Connection timeout in seconds"
},
{
"name": "POOL_IDLE_TIMEOUT_S",
"format": "number",
"description": "Idle connection timeout in seconds"
},
{
"name": "POOL_HEALTH_CHECK_INTERVAL_S",
"format": "number",
"description": "Connection health check interval in seconds"
},
{
"name": "RETRY_MAX_RETRIES",
"format": "number",
"description": "Maximum number of retry attempts for failed operations"
},
{
"name": "RETRY_BASE_DELAY_S",
"format": "number",
"description": "Base delay in seconds between retry attempts"
},
{
"name": "RETRY_MAX_DELAY_S",
"format": "number",
"description": "Maximum delay in seconds between retry attempts"
},
{
"name": "RETRY_JITTER",
"format": "boolean",
"description": "Enable random jitter in retry delays"
},
{
"name": "RETRY_BACKOFF_FACTOR",
"format": "number",
"description": "Exponential backoff multiplication factor for retries"
},
{
"name": "SQLITE_FOREIGN_KEYS",
"format": "boolean",
"description": "Enable SQLite foreign key constraints"
},
{
"name": "SQLITE_JOURNAL_MODE",
"format": "string",
"description": "SQLite journal mode (e.g., WAL, DELETE)"
},
{
"name": "SQLITE_SYNCHRONOUS",
"format": "string",
"description": "SQLite synchronous mode (e.g., NORMAL, FULL, OFF)"
},
{
"name": "SQLITE_TEMP_STORE",
"format": "string",
"description": "SQLite temporary storage location (e.g., MEMORY, FILE)"
},
{
"name": "SQLITE_MMAP_SIZE",
"format": "number",
"description": "SQLite memory-mapped I/O size in bytes"
},
{
"name": "SQLITE_CACHE_SIZE",
"format": "number",
"description": "SQLite cache size (negative value for KB, positive for pages)"
},
{
"name": "SQLITE_PAGE_SIZE",
"format": "number",
"description": "SQLite page size in bytes"
},
{
"name": "SQLITE_WAL_AUTOCHECKPOINT",
"format": "number",
"description": "SQLite WAL autocheckpoint threshold in pages"
},
{
"name": "SQLITE_BUSY_TIMEOUT_MS",
"format": "number",
"description": "SQLite busy timeout in milliseconds"
},
{
"name": "SQLITE_WAL_CHECKPOINT",
"format": "string",
"description": "SQLite WAL checkpoint mode (e.g., PASSIVE, FULL, RESTART)"
},
{
"name": "SHUTDOWN_TIMEOUT_S",
"format": "number",
"description": "Server shutdown timeout in seconds"
},
{
"name": "SHUTDOWN_TIMEOUT_TEST_S",
"format": "number",
"description": "Test mode shutdown timeout in seconds"
},
{
"name": "QUEUE_TIMEOUT_S",
"format": "number",
"description": "Queue operation timeout in seconds"
},
{
"name": "QUEUE_TIMEOUT_TEST_S",
"format": "number",
"description": "Test mode queue timeout in seconds"
},
{
"name": "CIRCUIT_BREAKER_FAILURE_THRESHOLD",
"format": "number",
"description": "Circuit breaker failure threshold before opening"
},
{
"name": "CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S",
"format": "number",
"description": "Circuit breaker recovery timeout in seconds"
},
{
"name": "CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS",
"format": "number",
"description": "Maximum calls allowed in circuit breaker half-open state"
},
{
"name": "POSTGRESQL_CONNECTION_STRING",
"format": "string",
"isSecret": true,
"description": "Complete PostgreSQL connection string (overrides individual settings if provided)"
},
{
"name": "POSTGRESQL_HOST",
"format": "string",
"description": "PostgreSQL server host address"
},
{
"name": "POSTGRESQL_PORT",
"format": "number",
"description": "PostgreSQL server port number"
},
{
"name": "POSTGRESQL_USER",
"format": "string",
"description": "PostgreSQL database username"
},
{
"name": "POSTGRESQL_PASSWORD",
"format": "string",
"isSecret": true,
"description": "PostgreSQL database password"
},
{
"name": "POSTGRESQL_DATABASE",
"format": "string",
"description": "PostgreSQL database name"
},
{
"name": "POSTGRESQL_POOL_MIN",
"format": "number",
"description": "PostgreSQL connection pool minimum size"
},
{
"name": "POSTGRESQL_POOL_MAX",
"format": "number",
"description": "PostgreSQL connection pool maximum size"
},
{
"name": "POSTGRESQL_POOL_TIMEOUT_S",
"format": "number",
"description": "PostgreSQL connection pool timeout in seconds"
},
{
"name": "POSTGRESQL_COMMAND_TIMEOUT_S",
"format": "number",
"description": "PostgreSQL command execution timeout in seconds"
},
{
"name": "POSTGRESQL_MIGRATION_TIMEOUT_S",
"format": "number",
"description": "Timeout in seconds for PostgreSQL migration operations (default: 300)"
},
{
"name": "POSTGRESQL_MAX_INACTIVE_LIFETIME_S",
"format": "number",
"description": "Close idle PostgreSQL connections after this many seconds (0 to disable, default: 300)"
},
{
"name": "POSTGRESQL_MAX_QUERIES",
"format": "number",
"description": "Recycle PostgreSQL connections after this many queries (0 to disable, default: 10000)"
},
{
"name": "POSTGRESQL_TCP_KEEPALIVES_IDLE_S",
"format": "number",
"description": "Seconds of idle time before sending first TCP keepalive probe (0 to disable, default: 15)"
},
{
"name": "POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S",
"format": "number",
"description": "Seconds between subsequent TCP keepalive probes (0 to disable, default: 5)"
},
{
"name": "POSTGRESQL_TCP_KEEPALIVES_COUNT",
"format": "number",
"description": "Number of failed TCP keepalive probes before connection is considered dead (0 to disable, default: 3)"
},
{
"name": "POSTGRESQL_STATEMENT_CACHE_SIZE",
"format": "number",
"description": "asyncpg prepared statement cache size. Set to 0 for external pooler compatibility (PgBouncer transaction mode, Pgpool-II, etc.). Default: 100"
},
{
"name": "POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S",
"format": "number",
"description": "Maximum lifetime of cached prepared statements in seconds (default: 300). Has no effect when statement_cache_size=0"
},
{
"name": "POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE",
"format": "number",
"description": "Maximum size of statement to cache in bytes (default: 15360). Has no effect when statement_cache_size=0"
},
{
"name": "POSTGRESQL_SSL_MODE",
"format": "string",
"description": "PostgreSQL SSL mode (disable, allow, prefer, require, verify-ca, verify-full)"
},
{
"name": "POSTGRESQL_SCHEMA",
"format": "string",
"description": "PostgreSQL schema name for table and index operations (default: public)"
},
{
"name": "ENABLE_SEMANTIC_SEARCH",
"format": "boolean",
"description": "Enable semantic search functionality"
},
{
"name": "ENABLE_EMBEDDING_GENERATION",
"format": "boolean",
"description": "Enable embedding generation for stored context. Default true - server fails if dependencies not met. Set false to disable embeddings."
},
{
"name": "OLLAMA_HOST",
"format": "string",
"description": "Ollama API host URL for embedding generation"
},
{
"name": "OLLAMA_AUTO_PULL",
"format": "boolean",
"description": "Automatically pull missing Ollama models on startup (default: true)"
},
{
"name": "OLLAMA_PULL_TIMEOUT_S",
"format": "number",
"description": "Timeout in seconds for pulling Ollama models (default: 900, range: 30-3600)"
},
{
"name": "EMBEDDING_OLLAMA_TRUNCATE",
"format": "boolean",
"description": "Ollama embedding truncation mode: false (default) returns error when context exceeded, true enables silent truncation"
},
{
"name": "EMBEDDING_OLLAMA_NUM_CTX",
"format": "number",
"description": "Ollama embedding context window size in tokens (default: 4096, range: 512-2097152)"
},
{
"name": "EMBEDDING_MODEL",
"format": "string",
"description": "Embedding model name for semantic search"
},
{
"name": "EMBEDDING_DIM",
"format": "number",
"description": "Embedding vector dimensions"
},
{
"name": "EMBEDDING_TIMEOUT_S",
"format": "number",
"description": "Timeout in seconds for embedding generation API calls"
},
{
"name": "EMBEDDING_RETRY_MAX_ATTEMPTS",
"format": "number",
"description": "Maximum number of retry attempts for embedding generation"
},
{
"name": "EMBEDDING_RETRY_BASE_DELAY_S",
"format": "number",
"description": "Base delay in seconds between retry attempts (with exponential backoff)"
},
{
"name": "EMBEDDING_MAX_CONCURRENT",
"format": "number",
"description": "Maximum concurrent embedding generation operations (default: 3, range: 1-20)"
},
{
"name": "ENABLE_SUMMARY_GENERATION",
"format": "boolean",
"description": "Enable summary generation for stored context. Default true - server fails if dependencies not met. Set false to disable summaries."
},
{
"name": "SUMMARY_PROVIDER",
"format": "string",
"description": "Summary provider: ollama (default), openai, or anthropic"
},
{
"name": "SUMMARY_MODEL",
"format": "string",
"description": "Summary generation model name (default: qwen3:0.6b)"
},
{
"name": "SUMMARY_MAX_TOKENS",
"format": "number",
"description": "Maximum output tokens for summary generation (default: 4000, range: 50-16384). Increase if summaries are truncated by reasoning models"
},
{
"name": "SUMMARY_TIMEOUT_S",
"format": "number",
"description": "Timeout in seconds for summary generation API calls"
},
{
"name": "SUMMARY_RETRY_MAX_ATTEMPTS",
"format": "number",
"description": "Maximum number of retry attempts for summary generation"
},
{
"name": "SUMMARY_RETRY_BASE_DELAY_S",
"format": "number",
"description": "Base delay in seconds between retry attempts (with exponential backoff)"
},
{
"name": "SUMMARY_MAX_CONCURRENT",
"format": "number",
"description": "Maximum concurrent summary generation operations (default: 3, range: 1-20)"
},
{
"name": "SUMMARY_PROMPT",
"format": "string",
"description": "Custom summarization prompt. Overrides the built-in default. Used as system message for the LLM."
},
{
"name": "SUMMARY_MIN_CONTENT_LENGTH",
"format": "number",
"description": "Minimum text content length in characters to trigger summary generation (default: 500, range: 0-10000). Set to 0 to always generate."
},
{
"name": "SUMMARY_OLLAMA_NUM_CTX",
"format": "number",
"description": "Ollama summary context window size in tokens (default: 32768, range: 512-2097152)"
},
{
"name": "SUMMARY_OLLAMA_TRUNCATE",
"format": "boolean",
"description": "Ollama summary truncation mode: false (default) returns error when context exceeded, true enables silent truncation"
},
{
"name": "SUMMARY_OPENAI_REASONING_EFFORT",
"format": "string",
"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"
},
{
"name": "SUMMARY_ANTHROPIC_EFFORT",
"format": "string",
"description": "Effort level for Anthropic Claude models (default: none). Valid values: max, high, medium, low. Controls inference effort (adaptive thinking)"
},
{
"name": "ANTHROPIC_API_KEY",
"format": "string",
"isSecret": true,
"description": "Anthropic API key for summary generation"
},
{
"name": "ENABLE_FTS",
"format": "boolean",
"description": "Enable full-text search functionality"
},
{
"name": "FTS_LANGUAGE",
"format": "string",
"description": "Language for FTS stemming (e.g., english, german, french)"
},
{
"name": "FTS_RERANK_WINDOW_SIZE",
"format": "number",
"description": "Characters of context around each FTS match for reranking passage extraction (default: 750)"
},
{
"name": "FTS_RERANK_GAP_MERGE",
"format": "number",
"description": "Merge FTS match regions within this character distance (default: 100)"
},
{
"name": "ENABLE_HYBRID_SEARCH",
"format": "boolean",
"description": "Enable hybrid search combining FTS and semantic search with RRF fusion"
},
{
"name": "HYBRID_RRF_K",
"format": "number",
"description": "RRF smoothing constant for hybrid search (default 60)"
},
{
"name": "HYBRID_RRF_OVERFETCH",
"format": "number",
"description": "Multiplier for over-fetching results before RRF fusion (default: 2)"
},
{
"name": "HYBRID_FTS_OR_THRESHOLD",
"format": "number",
"description": "Minimum significant query terms to switch hybrid FTS from AND to OR logic (default: 4)"
},
{
"name": "SEARCH_DEFAULT_SORT_BY",
"format": "string",
"description": "Default sort order for search results: relevance (only 'relevance' supported in current version)"
},
{
"name": "SEARCH_TRUNCATION_LENGTH",
"format": "number",
"description": "Maximum character length for truncated text_content in search results (default: 300, range: 50-1000)"
},
{
"name": "ENABLE_CHUNKING",
"format": "boolean",
"description": "Enable text chunking for embedding generation (default: true)"
},
{
"name": "CHUNK_SIZE",
"format": "number",
"description": "Target chunk size in characters (default: 1500)"
},
{
"name": "CHUNK_OVERLAP",
"format": "number",
"description": "Overlap between chunks in characters (default: 150)"
},
{
"name": "CHUNK_AGGREGATION",
"format": "string",
"description": "Chunk score aggregation method: max (only 'max' supported in current version)"
},
{
"name": "CHUNK_DEDUP_OVERFETCH",
"format": "number",
"description": "Multiplier for over-fetching chunks before deduplication (default: 5)"
},
{
"name": "ENABLE_RERANKING",
"format": "boolean",
"description": "Enable cross-encoder reranking of search results (default: true)"
},
{
"name": "RERANKING_PROVIDER",
"format": "string",
"description": "Reranking provider (default: flashrank)"
},
{
"name": "RERANKING_MODEL",
"format": "string",
"description": "Reranking model name (default: ms-marco-MiniLM-L-12-v2)"
},
{
"name": "RERANKING_MAX_LENGTH",
"format": "number",
"description": "Maximum input length for reranking in tokens (default: 512)"
},
{
"name": "RERANKING_OVERFETCH",
"format": "number",
"description": "Multiplier for over-fetching results before reranking (default: 4)"
},
{
"name": "RERANKING_CACHE_DIR",
"format": "string",
"description": "Directory for caching reranking models"
},
{
"name": "RERANKING_CHARS_PER_TOKEN",
"format": "number",
"description": "Estimated characters per token for passage size validation (default: 4.0, range: 2.0-8.0)"
},
{
"name": "RERANKING_INTRA_OP_THREADS",
"format": "number",
"description": "ONNX Runtime intra-operation parallelism threads for reranking (default: 0 = auto-detect)"
},
{
"name": "RERANKING_CPU_MEM_ARENA",
"format": "boolean",
"description": "Enable ONNX Runtime CPU memory arena for reranking (default: false)"
},
{
"name": "RERANKING_BATCH_SIZE",
"format": "number",
"description": "Maximum passages per ONNX Runtime inference batch during reranking (default: 32)"
},
{
"name": "EMBEDDING_PROVIDER",
"format": "string",
"description": "Embedding provider: ollama (default), openai, azure, huggingface, or voyage"
},
{
"name": "OPENAI_API_KEY",
"format": "string",
"isSecret": true,
"description": "OpenAI API key for OpenAI embedding provider"
},
{
"name": "OPENAI_API_BASE",
"format": "string",
"description": "Custom base URL for OpenAI-compatible APIs"
},
{
"name": "OPENAI_ORGANIZATION",
"format": "string",
"description": "OpenAI organization ID"
},
{
"name": "AZURE_OPENAI_API_KEY",
"format": "string",
"isSecret": true,
"description": "Azure OpenAI API key"
},
{
"name": "AZURE_OPENAI_ENDPOINT",
"format": "string",
"description": "Azure OpenAI endpoint URL"
},
{
"name": "AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME",
"format": "string",
"description": "Azure OpenAI embedding deployment name"
},
{
"name": "AZURE_OPENAI_API_VERSION",
"format": "string",
"description": "Azure OpenAI API version (default: 2024-02-01)"
},
{
"name": "HUGGINGFACEHUB_API_TOKEN",
"format": "string",
"isSecret": true,
"description": "HuggingFace Hub API token for HuggingFace embedding provider"
},
{
"name": "VOYAGE_API_KEY",
"format": "string",
"isSecret": true,
"description": "Voyage AI API key for Voyage embedding provider"
},
{
"name": "VOYAGE_TRUNCATION",
"format": "boolean",
"description": "Voyage AI truncation mode: false (default) returns error when context exceeded, true enables silent truncation"
},
{
"name": "VOYAGE_BATCH_SIZE",
"format": "number",
"description": "Voyage AI batch size for embedding requests"
},
{
"name": "LANGSMITH_TRACING",
"format": "boolean",
"description": "Enable LangSmith tracing"
},
{
"name": "LANGSMITH_API_KEY",
"format": "string",
"isSecret": true,
"description": "LangSmith API key"
},
{
"name": "LANGSMITH_PROJECT",
"format": "string",
"description": "LangSmith project name"
},
{
"name": "LANGSMITH_ENDPOINT",
"format": "string",
"description": "LangSmith API endpoint URL"
},
{
"name": "METADATA_INDEXED_FIELDS",
"format": "string",
"description": "Comma-separated list of metadata fields to index (field:type format)"
},
{
"name": "METADATA_INDEX_SYNC_MODE",
"format": "string",
"description": "Index sync mode: strict (fail), auto (sync), warn (log), additive (default, add missing only)"
},
{
"name": "MCP_TRANSPORT",
"format": "string",
"description": "Transport mode: stdio for local, http for Docker/remote"
},
{
"name": "FASTMCP_HOST",
"format": "string",
"description": "HTTP bind address (use 0.0.0.0 for Docker)"
},
{
"name": "FASTMCP_PORT",
"format": "number",
"description": "HTTP port number"
},
{
"name": "FASTMCP_STATELESS_HTTP",
"format": "boolean",
"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."
},
{
"name": "DISABLED_TOOLS",
"format": "string",
"description": "Comma-separated list of tools to disable (e.g., delete_context,update_context)"
},
{
"name": "MCP_AUTH_TOKEN",
"format": "string",
"isSecret": true,
"description": "Bearer token for HTTP authentication (required when using SimpleTokenVerifier)"
},
{
"name": "MCP_AUTH_CLIENT_ID",
"format": "string",
"description": "Client ID to assign to authenticated requests"
},
{
"name": "MCP_AUTH_PROVIDER",
"format": "string",
"description": "Authentication provider: none (default), simple_token"
},
{
"name": "MCP_SERVER_INSTRUCTIONS",
"format": "string",
"description": "Custom server instructions text. Overrides built-in default. Set to empty string to disable."
}
]
},
{
"transport": {
"url": "http://localhost:8000/mcp",
"type": "streamable-http"
},
"identifier": "ghcr.io/alex-feel/mcp-context-server:2.2.2",
"runtimeHint": "docker",
"registryType": "oci",
"environmentVariables": [
{
"name": "LOG_LEVEL",
"format": "string",
"description": "Log level"
},
{
"name": "STORAGE_BACKEND",
"format": "string",
"description": "Storage backend type: sqlite (default) or postgresql"
},
{
"name": "MAX_IMAGE_SIZE_MB",
"format": "number",
"description": "Maximum individual image size in megabytes"
},
{
"name": "MAX_TOTAL_SIZE_MB",
"format": "number",
"description": "Maximum total request size in megabytes"
},
{
"name": "DB_PATH",
"format": "string",
"description": "Custom database file location path"
},
{
"name": "POOL_MAX_READERS",
"format": "number",
"description": "Maximum number of concurrent read connections in the pool"
},
{
"name": "POOL_MAX_WRITERS",
"format": "number",
"description": "Maximum number of concurrent write connections in the pool"
},
{
"name": "POOL_CONNECTION_TIMEOUT_S",
"format": "number",
"description": "Connection timeout in seconds"
},
{
"name": "POOL_IDLE_TIMEOUT_S",
"format": "number",
"description": "Idle connection timeout in seconds"
},
{
"name": "POOL_HEALTH_CHECK_INTERVAL_S",
"format": "number",
"description": "Connection health check interval in seconds"
},
{
"name": "RETRY_MAX_RETRIES",
"format": "number",
"description": "Maximum number of retry attempts for failed operations"
},
{
"name": "RETRY_BASE_DELAY_S",
"format": "number",
"description": "Base delay in seconds between retry attempts"
},
{
"name": "RETRY_MAX_DELAY_S",
"format": "number",
"description": "Maximum delay in seconds between retry attempts"
},
{
"name": "RETRY_JITTER",
"format": "boolean",
"description": "Enable random jitter in retry delays"
},
{
"name": "RETRY_BACKOFF_FACTOR",
"format": "number",
"description": "Exponential backoff multiplication factor for retries"
},
{
"name": "SQLITE_FOREIGN_KEYS",
"format": "boolean",
"description": "Enable SQLite foreign key constraints"
},
{
"name": "SQLITE_JOURNAL_MODE",
"format": "string",
"description": "SQLite journal mode (e.g., WAL, DELETE)"
},
{
"name": "SQLITE_SYNCHRONOUS",
"format": "string",
"description": "SQLite synchronous mode (e.g., NORMAL, FULL, OFF)"
},
{
"name": "SQLITE_TEMP_STORE",
"format": "string",
"description": "SQLite temporary storage location (e.g., MEMORY, FILE)"
},
{
"name": "SQLITE_MMAP_SIZE",
"format": "number",
"description": "SQLite memory-mapped I/O size in bytes"
},
{
"name": "SQLITE_CACHE_SIZE",
"format": "number",
"description": "SQLite cache size (negative value for KB, positive for pages)"
},
{
"name": "SQLITE_PAGE_SIZE",
"format": "number",
"description": "SQLite page size in bytes"
},
{
"name": "SQLITE_WAL_AUTOCHECKPOINT",
"format": "number",
"description": "SQLite WAL autocheckpoint threshold in pages"
},
{
"name": "SQLITE_BUSY_TIMEOUT_MS",
"format": "number",
"description": "SQLite busy timeout in milliseconds"
},
{
"name": "SQLITE_WAL_CHECKPOINT",
"format": "string",
"description": "SQLite WAL checkpoint mode (e.g., PASSIVE, FULL, RESTART)"
},
{
"name": "SHUTDOWN_TIMEOUT_S",
"format": "number",
"description": "Server shutdown timeout in seconds"
},
{
"name": "SHUTDOWN_TIMEOUT_TEST_S",
"format": "number",
"description": "Test mode shutdown timeout in seconds"
},
{
"name": "QUEUE_TIMEOUT_S",
"format": "number",
"description": "Queue operation timeout in seconds"
},
{
"name": "QUEUE_TIMEOUT_TEST_S",
"format": "number",
"description": "Test mode queue timeout in seconds"
},
{
"name": "CIRCUIT_BREAKER_FAILURE_THRESHOLD",
"format": "number",
"description": "Circuit breaker failure threshold before opening"
},
{
"name": "CIRCUIT_BREAKER_RECOVERY_TIMEOUT_S",
"format": "number",
"description": "Circuit breaker recovery timeout in seconds"
},
{
"name": "CIRCUIT_BREAKER_HALF_OPEN_MAX_CALLS",
"format": "number",
"description": "Maximum calls allowed in circuit breaker half-open state"
},
{
"name": "POSTGRESQL_CONNECTION_STRING",
"format": "string",
"isSecret": true,
"description": "Complete PostgreSQL connection string (overrides individual settings if provided)"
},
{
"name": "POSTGRESQL_HOST",
"format": "string",
"description": "PostgreSQL server host address"
},
{
"name": "POSTGRESQL_PORT",
"format": "number",
"description": "PostgreSQL server port number"
},
{
"name": "POSTGRESQL_USER",
"format": "string",
"description": "PostgreSQL database username"
},
{
"name": "POSTGRESQL_PASSWORD",
"format": "string",
"isSecret": true,
"description": "PostgreSQL database password"
},
{
"name": "POSTGRESQL_DATABASE",
"format": "string",
"description": "PostgreSQL database name"
},
{
"name": "POSTGRESQL_POOL_MIN",
"format": "number",
"description": "PostgreSQL connection pool minimum size"
},
{
"name": "POSTGRESQL_POOL_MAX",
"format": "number",
"description": "PostgreSQL connection pool maximum size"
},
{
"name": "POSTGRESQL_POOL_TIMEOUT_S",
"format": "number",
"description": "PostgreSQL connection pool timeout in seconds"
},
{
"name": "POSTGRESQL_COMMAND_TIMEOUT_S",
"format": "number",
"description": "PostgreSQL command execution timeout in seconds"
},
{
"name": "POSTGRESQL_MIGRATION_TIMEOUT_S",
"format": "number",
"description": "Timeout in seconds for PostgreSQL migration operations (default: 300)"
},
{
"name": "POSTGRESQL_MAX_INACTIVE_LIFETIME_S",
"format": "number",
"description": "Close idle PostgreSQL connections after this many seconds (0 to disable, default: 300)"
},
{
"name": "POSTGRESQL_MAX_QUERIES",
"format": "number",
"description": "Recycle PostgreSQL connections after this many queries (0 to disable, default: 10000)"
},
{
"name": "POSTGRESQL_TCP_KEEPALIVES_IDLE_S",
"format": "number",
"description": "Seconds of idle time before sending first TCP keepalive probe (0 to disable, default: 15)"
},
{
"name": "POSTGRESQL_TCP_KEEPALIVES_INTERVAL_S",
"format": "number",
"description": "Seconds between subsequent TCP keepalive probes (0 to disable, default: 5)"
},
{
"name": "POSTGRESQL_TCP_KEEPALIVES_COUNT",
"format": "number",
"description": "Number of failed TCP keepalive probes before connection is considered dead (0 to disable, default: 3)"
},
{
"name": "POSTGRESQL_STATEMENT_CACHE_SIZE",
"format": "number",
"description": "asyncpg prepared statement cache size. Set to 0 for external pooler compatibility (PgBouncer transaction mode, Pgpool-II, etc.). Default: 100"
},
{
"name": "POSTGRESQL_MAX_CACHED_STATEMENT_LIFETIME_S",
"format": "number",
"description": "Maximum lifetime of cached prepared statements in seconds (default: 300). Has no effect when statement_cache_size=0"
},
{
"name": "POSTGRESQL_MAX_CACHEABLE_STATEMENT_SIZE",
"format": "number",
"description": "Maximum size of statement to cache in bytes (default: 15360). Has no effect when statement_cache_size=0"
},
{
"name": "POSTGRESQL_SSL_MODE",
"format": "string",
"description": "PostgreSQL SSL mode (disable, allow, prefer, require, verify-ca, verify-full)"
},
{
"name": "POSTGRESQL_SCHEMA",
"format": "string",
"description": "PostgreSQL schema name for table and index operations (default: public)"
},
{
"name": "ENABLE_SEMANTIC_SEARCH",
"format": "boolean",
"description": "Enable semantic search functionality"
},
{
"name": "ENABLE_EMBEDDING_GENERATION",
"format": "boolean",
"description": "Enable embedding generation for stored context. Default true - server fails if dependencies not met. Set false to disable embeddings."
},
{
"name": "OLLAMA_HOST",
"format": "string",
"description": "Ollama API host URL for embedding generation"
},
{
"name": "OLLAMA_AUTO_PULL",
"format": "boolean",
"description": "Automatically pull missing Ollama models on startup (default: true)"
},
{
"name": "OLLAMA_PULL_TIMEOUT_S",
"format": "number",
"description": "Timeout in seconds for pulling Ollama models (default: 900, range: 30-3600)"
},
{
"name": "EMBEDDING_OLLAMA_TRUNCATE",
"format": "boolean",
"description": "Ollama embedding truncation mode: false (default) returns error when context exceeded, true enables silent truncation"
},
{
"name": "EMBEDDING_OLLAMA_NUM_CTX",
"format": "number",
"description": "Ollama embedding context window size in tokens (default: 4096, range: 512-2097152)"
},
{
"name": "EMBEDDING_MODEL",
"format": "string",
"description": "Embedding model name for semantic search"
},
{
"name": "EMBEDDING_DIM",
"format": "number",
"description": "Embedding vector dimensions"
},
{
"name": "EMBEDDING_TIMEOUT_S",
"format": "number",
"description": "Timeout in seconds for embedding generation API calls"
},
{
"name": "EMBEDDING_RETRY_MAX_ATTEMPTS",
"format": "number",
"description": "Maximum number of retry attempts for embedding generation"
},
{
"name": "EMBEDDING_RETRY_BASE_DELAY_S",
"format": "number",
"description": "Base delay in seconds between retry attempts (with exponential backoff)"
},
{
"name": "EMBEDDING_MAX_CONCURRENT",
"format": "number",
"description": "Maximum concurrent embedding generation operations (default: 3, range: 1-20)"
},
{
"name": "ENABLE_SUMMARY_GENERATION",
"format": "boolean",
"description": "Enable summary generation for stored context. Default true - server fails if dependencies not met. Set false to disable summaries."
},
{
"name": "SUMMARY_PROVIDER",
"format": "string",
"description": "Summary provider: ollama (default), openai, or anthropic"
},
{
"name": "SUMMARY_MODEL",
"format": "string",
"description": "Summary generation model name (default: qwen3:0.6b)"
},
{
"name": "SUMMARY_MAX_TOKENS",
"format": "number",
"description": "Maximum output tokens for summary generation (default: 4000, range: 50-16384). Increase if summaries are truncated by reasoning models"
},
{
"name": "SUMMARY_TIMEOUT_S",
"format": "number",
"description": "Timeout in seconds for summary generation API calls"
},
{
"name": "SUMMARY_RETRY_MAX_ATTEMPTS",
"format": "number",
"description": "Maximum number of retry attempts for summary generation"
},
{
"name": "SUMMARY_RETRY_BASE_DELAY_S",
"format": "number",
"description": "Base delay in seconds between retry attempts (with exponential backoff)"
},
{
"name": "SUMMARY_MAX_CONCURRENT",
"format": "number",
"description": "Maximum concurrent summary generation operations (default: 3, range: 1-20)"
},
{
"name": "SUMMARY_PROMPT",
"format": "string",
"description": "Custom summarization prompt. Overrides the built-in default. Used as system message for the LLM."
},
{
"name": "SUMMARY_MIN_CONTENT_LENGTH",
"format": "number",
"description": "Minimum text content length in characters to trigger summary generation (default: 500, range: 0-10000). Set to 0 to always generate."
},
{
"name": "SUMMARY_OLLAMA_NUM_CTX",
"format": "number",
"description": "Ollama summary context window size in tokens (default: 32768, range: 512-2097152)"
},
{
"name": "SUMMARY_OLLAMA_TRUNCATE",
"format": "boolean",
"description": "Ollama summary truncation mode: false (default) returns error when context exceeded, true enables silent truncation"
},
{
"name": "SUMMARY_OPENAI_REASONING_EFFORT",
"format": "string",
"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"
},
{
"name": "SUMMARY_ANTHROPIC_EFFORT",
"format": "string",
"description": "Effort level for Anthropic Claude models (default: none). Valid values: max, high, medium, low. Controls inference effort (adaptive thinking)"
},
{
"name": "ANTHROPIC_API_KEY",
"format": "string",
"isSecret": true,
"description": "Anthropic API key for summary generation"
},
{
"name": "ENABLE_FTS",
"format": "boolean",
"description": "Enable full-text search functionality"
},
{
"name": "FTS_LANGUAGE",
"format": "string",
"description": "Language for FTS stemming (e.g., english, german, french)"
},
{
"name": "FTS_RERANK_WINDOW_SIZE",
"format": "number",
"description": "Characters of context around each FTS match for reranking passage extraction (default: 750)"
},
{
"name": "FTS_RERANK_GAP_MERGE",
"format": "number",
"description": "Merge FTS match regions within this character distance (default: 100)"
},
{
"name": "ENABLE_HYBRID_SEARCH",
"format": "boolean",
"description": "Enable hybrid search combining FTS and semantic search with RRF fusion"
},
{
"name": "HYBRID_RRF_K",
"format": "number",
"description": "RRF smoothing constant for hybrid search (default 60)"
},
{
"name": "HYBRID_RRF_OVERFETCH",
"format": "number",
"description": "Multiplier for over-fetching results before RRF fusion (default: 2)"
},
{
"name": "HYBRID_FTS_OR_THRESHOLD",
"format": "number",
"description": "Minimum significant query terms to switch hybrid FTS from AND to OR logic (default: 4)"
},
{
"name": "SEARCH_DEFAULT_SORT_BY",
"format": "string",
"description": "Default sort order for search results: relevance (only 'relevance' supported in current version)"
},
{
"name": "SEARCH_TRUNCATION_LENGTH",
"format": "number",
"description": "Maximum character length for truncated text_content in search results (default: 300, range: 50-1000)"
},
{
"name": "ENABLE_CHUNKING",
"format": "boolean",
"description": "Enable text chunking for embedding generation (default: true)"
},
{
"name": "CHUNK_SIZE",
"format": "number",
"description": "Target chunk size in characters (default: 1500)"
},
{
"name": "CHUNK_OVERLAP",
"format": "number",
"description": "Overlap between chunks in characters (default: 150)"
},
{
"name": "CHUNK_AGGREGATION",
"format": "string",
"description": "Chunk score aggregation method: max (only 'max' supported in current version)"
},
{
"name": "CHUNK_DEDUP_OVERFETCH",
"format": "number",
"description": "Multiplier for over-fetching chunks before deduplication (default: 5)"
},
{
"name": "ENABLE_RERANKING",
"format": "boolean",
"description": "Enable cross-encoder reranking of search results (default: true)"
},
{
"name": "RERANKING_PROVIDER",
"format": "string",
"description": "Reranking provider (default: flashrank)"
},
{
"name": "RERANKING_MODEL",
"format": "string",
"description": "Reranking model name (default: ms-marco-MiniLM-L-12-v2)"
},
{
"name": "RERANKING_MAX_LENGTH",
"format": "number",
"description": "Maximum input length for reranking in tokens (default: 512)"
},
{
"name": "RERANKING_OVERFETCH",
"format": "number",
"description": "Multiplier for over-fetching results before reranking (default: 4)"
},
{
"name": "RERANKING_CACHE_DIR",
"format": "string",
"description": "Directory for caching reranking models"
},
{
"name": "RERANKING_CHARS_PER_TOKEN",
"format": "number",
"description": "Estimated characters per token for passage size validation (default: 4.0, range: 2.0-8.0)"
},
{
"name": "RERANKING_INTRA_OP_THREADS",
"format": "number",
"description": "ONNX Runtime intra-operation parallelism threads for reranking (default: 0 = auto-detect)"
},
{
"name": "RERANKING_CPU_MEM_ARENA",
"format": "boolean",
"description": "Enable ONNX Runtime CPU memory arena for reranking (default: false)"
},
{
"name": "RERANKING_BATCH_SIZE",
"format": "number",
"description": "Maximum passages per ONNX Runtime inference batch during reranking (default: 32)"
},
{
"name": "EMBEDDING_PROVIDER",
"format": "string",
"description": "Embedding provider: ollama (default), openai, azure, huggingface, or voyage"
},
{
"name": "OPENAI_API_KEY",
"format": "string",
"isSecret": true,
"description": "OpenAI API key for OpenAI embedding provider"
},
{
"name": "OPENAI_API_BASE",
"format": "string",
"description": "Custom base URL for OpenAI-compatible APIs"
},
{
"name": "OPENAI_ORGANIZATION",
"format": "string",
"description": "OpenAI organization ID"
},
{
"name": "AZURE_OPENAI_API_KEY",
"format": "string",
"isSecret": true,
"description": "Azure OpenAI API key"
},
{
"name": "AZURE_OPENAI_ENDPOINT",
"format": "string",
"description": "Azure OpenAI endpoint URL"
},
{
"name": "AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME",
"format": "string",
"description": "Azure OpenAI embedding deployment name"
},
{
"name": "AZURE_OPENAI_API_VERSION",
"format": "string",
"description": "Azure OpenAI API version (default: 2024-02-01)"
},
{
"name": "HUGGINGFACEHUB_API_TOKEN",
"format": "string",
"isSecret": true,
"description": "HuggingFace Hub API token for HuggingFace embedding provider"
},
{
"name": "VOYAGE_API_KEY",
"format": "string",
"isSecret": true,
"description": "Voyage AI API key for Voyage embedding provider"
},
{
"name": "VOYAGE_TRUNCATION",
"format": "boolean",
"description": "Voyage AI truncation mode: false (default) returns error when context exceeded, true enables silent truncation"
},
{
"name": "VOYAGE_BATCH_SIZE",
"format": "number",
"description": "Voyage AI batch size for embedding requests"
},
{
"name": "LANGSMITH_TRACING",
"format": "boolean",
"description": "Enable LangSmith tracing"
},
{
"name": "LANGSMITH_API_KEY",
"format": "string",
"isSecret": true,
"description": "LangSmith API key"
},
{
"name": "LANGSMITH_PROJECT",
"format": "string",
"description": "LangSmith project name"
},
{
"name": "LANGSMITH_ENDPOINT",
"format": "string",
"description": "LangSmith API endpoint URL"
},
{
"name": "METADATA_INDEXED_FIELDS",
"format": "string",
"description": "Comma-separated list of metadata fields to index (field:type format)"
},
{
"name": "METADATA_INDEX_SYNC_MODE",
"format": "string",
"description": "Index sync mode: strict (fail), auto (sync), warn (log), additive (default, add missing only)"
},
{
"name": "MCP_TRANSPORT",
"format": "string",
"description": "Transport mode: stdio for local, http for Docker/remote"
},
{
"name": "FASTMCP_HOST",
"format": "string",
"description": "HTTP bind address (use 0.0.0.0 for Docker)"
},
{
"name": "FASTMCP_PORT",
"format": "number",
"description": "HTTP port number"
},
{
"name": "FASTMCP_STATELESS_HTTP",
"format": "boolean",
"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."
},
{
"name": "DISABLED_TOOLS",
"format": "string",
"description": "Comma-separated list of tools to disable (e.g., delete_context,update_context)"
},
{
"name": "MCP_AUTH_TOKEN",
"format": "string",
"isSecret": true,
"description": "Bearer token for HTTP authentication (required when using SimpleTokenVerifier)"
},
{
"name": "MCP_AUTH_CLIENT_ID",
"format": "string",
"description": "Client ID to assign to authenticated requests"
},
{
"name": "MCP_AUTH_PROVIDER",
"format": "string",
"description": "Authentication provider: none (default), simple_token"
},
{
"name": "MCP_SERVER_INSTRUCTIONS",
"format": "string",
"description": "Custom server instructions text. Overrides built-in default. Set to empty string to disable."
}
]
}
],
"repository": {
"url": "https://github.com/alex-feel/mcp-context-server",
"source": "github"
},
"description": "An MCP server that provides persistent multimodal context storage for LLM agents."
}