lazyBoy/crates/contracts/src/mcp.rs

67 lines
1.8 KiB
Rust
Raw Normal View History

2026-09-04 05:41:09 +00:00
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<String>,
pub args: Vec<String>,
pub env: Map<String, Value>,
pub url: Option<String>,
pub headers: Map<String, Value>,
pub enabled: bool,
pub status: String,
pub error: Option<String>,
pub tools: Vec<McpTool>,
pub created_at: DateTime<Utc>,
pub updated_at: DateTime<Utc>,
}
#[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<String>,
#[serde(default)]
pub args: Vec<String>,
#[serde(default)]
pub env: Map<String, Value>,
#[serde(default)]
pub url: Option<String>,
#[serde(default)]
pub headers: Map<String, Value>,
#[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<String>,
pub transport: Option<String>,
pub command: Option<String>,
pub args: Option<Vec<String>>,
pub env: Option<Map<String, Value>>,
pub url: Option<String>,
pub headers: Option<Map<String, Value>>,
pub enabled: Option<bool>,
}