Skip to main content

claude_codes/io/
mcp.rs

1use serde::{Deserialize, Serialize};
2
3/// MCP Server configuration types
4#[derive(Debug, Clone, Serialize, Deserialize)]
5#[serde(tag = "type", rename_all = "snake_case")]
6pub enum McpServerConfig {
7    Stdio(McpStdioServerConfig),
8    Sse(McpSseServerConfig),
9    Http(McpHttpServerConfig),
10}
11
12/// MCP stdio server configuration
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct McpStdioServerConfig {
15    pub command: String,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub args: Option<Vec<String>>,
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub env: Option<std::collections::HashMap<String, String>>,
20}
21
22/// MCP SSE server configuration
23#[derive(Debug, Clone, Serialize, Deserialize)]
24pub struct McpSseServerConfig {
25    pub url: String,
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub headers: Option<std::collections::HashMap<String, String>>,
28}
29
30/// MCP HTTP server configuration
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct McpHttpServerConfig {
33    pub url: String,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    pub headers: Option<std::collections::HashMap<String, String>>,
36}