use clap::Subcommand;
#[derive(Debug, Subcommand)]
pub(crate) enum McpCmd {
Add {
name: String,
#[arg(short = 't', long = "transport", value_enum, default_value_t = McpTransportArg::Stdio)]
transport: McpTransportArg,
#[arg(short = 'e', long = "env", value_name = "KEY=VALUE")]
env: Vec<String>,
#[arg(short = 'H', long = "header", value_name = "NAME: VALUE")]
header: Vec<String>,
#[arg(
trailing_var_arg = true,
allow_hyphen_values = true,
value_name = "COMMAND_OR_URL [ARGS...]"
)]
command_and_args: Vec<String>,
#[arg(long)]
root: Option<String>,
},
Remove {
name: String,
#[arg(long)]
root: Option<String>,
},
List {
#[arg(long)]
json: bool,
#[arg(long)]
root: Option<String>,
},
Get {
name: String,
#[arg(long)]
json: bool,
#[arg(long)]
root: Option<String>,
},
Test {
name: Option<String>,
#[arg(long)]
json: bool,
#[arg(long)]
root: Option<String>,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, clap::ValueEnum)]
pub(crate) enum McpTransportArg {
Stdio,
Http,
Sse,
}