use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct McpServerConfig {
pub url: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub http_headers: Option<IndexMap<String, String>>,
}
impl From<&objectiveai_sdk::mcp::Connection> for McpServerConfig {
fn from(conn: &objectiveai_sdk::mcp::Connection) -> Self {
let mut headers = conn.headers.clone();
if !conn.session_id.is_empty() {
headers.insert("Mcp-Session-Id".to_string(), conn.session_id.clone());
}
McpServerConfig {
url: conn.url.clone(),
http_headers: if headers.is_empty() { None } else { Some(headers) },
}
}
}