use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct McpServerConfig {
pub command: String,
#[serde(default)]
pub args: Vec<String>,
#[serde(default)]
pub env: HashMap<String, String>,
#[serde(default = "default_true")]
pub enabled: bool,
#[serde(default)]
pub auto_start: bool,
}
pub(super) fn default_true() -> bool {
true
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub(super) struct McpConfigFile {
#[serde(default, rename = "mcpServers")]
pub(super) mcp_servers: HashMap<String, McpServerConfig>,
}
#[derive(Debug, Deserialize)]
pub struct McpServerCreate {
pub name: String,
pub command: String,
#[serde(default)]
pub args: Vec<String>,
#[serde(default)]
pub env: HashMap<String, String>,
#[serde(default = "default_true")]
pub enabled: bool,
#[serde(default)]
pub auto_start: bool,
}
#[derive(Debug, Deserialize)]
pub struct McpServerUpdate {
pub command: Option<String>,
pub args: Option<Vec<String>>,
pub env: Option<HashMap<String, String>>,
pub enabled: Option<bool>,
pub auto_start: Option<bool>,
}