Configuration & Deployment
Configuration Management
Hierarchical Configuration System
# Global configuration: ~/.config/airsprotocols-mcpserver-filesystem/config.toml
[server]
name = "airsprotocols-mcpserver-filesystem"
version = "1.0.0"
transport = "stdio"
[performance]
max_concurrent_operations = 10
cache_size_mb = 50
temp_directory = "/tmp/airsprotocols-mcpserver-filesystem"
[logging]
level = "info"
file = "~/.config/airsprotocols-mcpserver-filesystem/logs/airsprotocols-mcpserver-filesystem.log"
max_size_mb = 100
max_files = 10
# Project-specific configuration: ./.airsprotocols-mcpserver-filesystem.toml
[project]
name = "my-awesome-project"
root_path = "./"
exclude_patterns = ["node_modules/**", ".git/**", "target/**"]
[security]
# Override global security settings for this project
allowed_write_paths = ["./src/**", "./docs/**", "./tests/**"]
require_approval_for_writes = false # Relaxed for development
Environment-Based Configuration
#[derive(Deserialize)]
pub struct FsConfig {
pub server: ServerConfig,
pub security: SecurityConfig,
pub performance: PerformanceConfig,
pub logging: LoggingConfig,
pub project: Option<ProjectConfig>,
}
impl FsConfig {
pub fn load() -> Result<Self, ConfigError> {
let mut config = Self::load_global_config()?;
// Override with project-specific config if present
if let Ok(project_config) = Self::load_project_config() {
config.merge_project_config(project_config)?;
}
// Override with environment variables
config.apply_env_overrides()?;
Ok(config)
}
fn load_global_config() -> Result<Self, ConfigError> {
let config_path = dirs::config_dir()
.ok_or(ConfigError::NoConfigDir)?
.join("airsprotocols-mcpserver-filesystem")
.join("config.toml");
if config_path.exists() {
let content = std::fs::read_to_string(&config_path)?;
Ok(toml::from_str(&content)?)
} else {
Ok(Self::default())
}
}
}
Deployment Strategies
Development Deployment
# Install from source for development
git clone https://github.com/airsstack/airsprotocols.git
cd airs
cargo build --release --bin airsprotocols-mcpserver-filesystem
# Configure for Claude Desktop
# Add to Claude Desktop MCP configuration:
{
"mcpServers": {
"airsprotocols-mcpserver-filesystem": {
"command": "path/to/airsprotocols-mcpserver-filesystem",
"args": ["--config", "./.airsprotocols-mcpserver-filesystem.toml"]
}
}
}
Production Deployment
# Install via cargo
cargo install airsprotocols-mcpserver-filesystem
# System-wide configuration
sudo mkdir -p /etc/airsprotocols-mcpserver-filesystem
sudo cp config.toml /etc/airsprotocols-mcpserver-filesystem/
# User configuration
mkdir -p ~/.config/airsprotocols-mcpserver-filesystem
cp user-config.toml ~/.config/airsprotocols-mcpserver-filesystem/config.toml
# Systemd service for enterprise environments
[Unit]
Description=AIRS MCP-FS Server
After=network.target
[Service]
Type=simple
User=mcp-fs
ExecStart=/usr/local/bin/airsprotocols-mcpserver-filesystem --daemon
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target