use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use serde_json::{Map, Value}; #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct McpServer { pub id: String, pub name: String, pub transport: String, pub command: Option, pub args: Vec, pub env: Map, pub url: Option, pub headers: Map, pub enabled: bool, pub status: String, pub error: Option, pub tools: Vec, pub created_at: DateTime, pub updated_at: DateTime, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct McpTool { pub name: String, pub exposed_name: String, pub description: String, } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] #[serde(rename_all = "camelCase")] pub struct UpsertMcpServerInput { pub name: String, pub transport: String, #[serde(default)] pub command: Option, #[serde(default)] pub args: Vec, #[serde(default)] pub env: Map, #[serde(default)] pub url: Option, #[serde(default)] pub headers: Map, #[serde(default = "default_true")] pub enabled: bool, } fn default_true() -> bool { true } #[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)] #[serde(rename_all = "camelCase")] pub struct PatchMcpServerInput { pub name: Option, pub transport: Option, pub command: Option, pub args: Option>, pub env: Option>, pub url: Option, pub headers: Option>, pub enabled: Option, }