zag-cli 0.12.6

A unified CLI for AI coding agents — Claude, Codex, Gemini, Copilot, and Ollama
use anyhow::Result;
use zag_agent::mcp;

pub(crate) fn run(json: bool, root: Option<&str>) -> Result<()> {
    let servers = mcp::list_servers(root)?;
    if json {
        println!("{}", serde_json::to_string(&servers)?);
        return Ok(());
    }
    if servers.is_empty() {
        println!("No MCP servers found in {}", mcp::mcp_dir().display());
        println!(
            "Use 'zag mcp add <name>' to create one, or 'zag mcp import' to import from a provider."
        );
        return Ok(());
    }
    println!(
        "{:<20} {:<10} {:<30} DESCRIPTION",
        "NAME", "TRANSPORT", "COMMAND/URL"
    );
    println!("{}", "-".repeat(90));
    for server in &servers {
        let target = if server.transport == "stdio" {
            server.command.as_deref().unwrap_or("-")
        } else {
            server.url.as_deref().unwrap_or("-")
        };
        let target_display = if target.len() > 28 {
            format!("{}...", &target[..28])
        } else {
            target.to_string()
        };
        let desc = if server.description.len() > 30 {
            format!("{}...", &server.description[..30])
        } else {
            server.description.clone()
        };
        println!(
            "{:<20} {:<10} {:<30} {}",
            server.name, server.transport, target_display, desc
        );
    }
    Ok(())
}