mcp_stdio_proxy/client/
cli.rs1use anyhow::{Result, bail};
6
7pub use crate::client::support::args::{Cli, Commands};
10
11pub async fn run_cli(cli: Cli) -> Result<()> {
19 match cli.command {
20 Some(Commands::Convert(args)) => {
21 crate::client::cli_impl::run_convert_command(args, cli.verbose, cli.quiet).await
22 }
23 Some(Commands::Check(args)) => {
24 crate::client::cli_impl::run_check_command(args, cli.verbose, cli.quiet).await
25 }
26 Some(Commands::Detect(args)) => {
27 crate::client::cli_impl::run_detect_command(args, cli.verbose, cli.quiet).await
28 }
29 Some(Commands::Health(args)) => {
30 crate::client::cli_impl::run_health_command(args, cli.quiet).await
31 }
32 Some(Commands::Proxy(args)) => {
33 super::proxy_server::run_proxy_command(args, cli.verbose, cli.quiet).await
34 }
35 None => {
36 if let Some(url) = cli.url {
38 let args = crate::client::support::args::ConvertArgs {
39 url: Some(url),
40 config: None,
41 config_file: None,
42 name: None,
43 protocol: None,
44 auth: None,
45 header: vec![],
46 retries: 0, allow_tools: None,
48 deny_tools: None,
49 ping_interval: 30, ping_timeout: 10, import_initialize: None,
52 import_initialize_file: None,
53 import_tools: None,
54 import_tools_file: None,
55 export_initialize: None,
56 export_tools: None,
57 logging: crate::client::support::LoggingArgs {
58 diagnostic: true, log_dir: None, log_file: None, otlp_endpoint: None, service_name: "mcp-proxy".to_string(),
63 },
64 };
65 crate::client::cli_impl::run_convert_command(args, cli.verbose, cli.quiet).await
66 } else {
67 bail!("请提供 URL 或使用子命令")
68 }
69 }
70 }
71}