-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or requestsecuritySecurity relatedSecurity relatedv0.2Version 0.2 featuresVersion 0.2 features
Milestone
Description
Summary
Support loading environment variables from .env files for secrets injection into MCP servers.
Parent Epic
Part of #1 - Production Kubernetes & Container Support
Motivation
Currently, secrets must be passed via environment variables in the shell or hardcoded in catalog.yaml. Supporting .env files provides:
- Separation of secrets from configuration
- Easier local development
- Compatibility with existing workflows
- Better security (can be gitignored)
Proposed Syntax
Catalog Entry
servers:
- id: github-mcp
runtime:
type: local-process
command: github-mcp
env_file: .env.github
env:
# Additional env vars (can reference env_file vars)
LOG_LEVEL: debugMultiple Files
servers:
- id: multi-secret-server
env_files:
- .env.common
- .env.database
- .env.api-keys
env:
OVERRIDE: valueImplementation Details
Load Order
- Parent process environment
- env_file(s) in order specified
- Explicit
envmap - Later values override earlier ones
File Format
Standard .env format:
# Comments supported
DATABASE_URL=postgresql://localhost/db
API_KEY="quoted values work"
MULTILINE="line1\nline2"Security Considerations
- Files must be readable by gateway process
- Warn if file has loose permissions (not 0600)
- Support ${VAR} interpolation within env files
Acceptance Criteria
-
env_filekey loads .env format files -
env_fileskey supports multiple files - Variables are injected into server process
- Works with local-process runtime
- Works with docker runtime
- Warning logged for insecure file permissions
- Error if file not found (unless marked optional)
References
- dotenv crate
- dotenvy crate (maintained fork)
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or requestsecuritySecurity relatedSecurity relatedv0.2Version 0.2 featuresVersion 0.2 features