{"id":"philschmid-mcp-cli","name":"mcp-cli","homepage":null,"repo_url":"https://github.com/philschmid/mcp-cli","category":"devtools","subcategories":[],"tags":["mcp","cli","bun","typescript","tooling","agent-optimized","json","stdio","http"],"what_it_does":"mcp-cli is a Bun/TypeScript command-line tool that discovers and invokes Model Context Protocol (MCP) server tools. It supports MCP servers over stdio or HTTP, loads tool schemas on-demand, provides shell-friendly JSON output, and can use a per-server daemon/connection pooling via Unix sockets.","use_cases":["Discover MCP servers and list available tool schemas","Inspect tool input schemas (info) before invocation","Invoke MCP tools from shell scripts and CI using JSON in/out","Chain multiple tool calls using pipes and jq","Filter/allow/disable tools per MCP server via configuration","Use with AI coding agents that can run shell commands"],"not_for":["Building a long-running MCP gateway service (it’s a CLI, not a server)","Providing a direct REST/GraphQL API to your application users","Use as a security boundary for untrusted MCP servers (it orchestrates them)","Environments that require strict network egress controls without reviewing configured remote servers"],"best_when":"You want lightweight, scriptable access to MCP tools from the command line (including agent workflows) and can manage MCP server configuration locally.","avoid_when":"You need standardized HTTP endpoints, webhook delivery, or strong platform-level authz enforced by mcp-cli itself rather than by the underlying MCP servers.","alternatives":["Claude Desktop MCP integration","Gemini/Claude/OpenCode MCP integrations with their respective tooling/skills","Direct MCP client libraries (e.g., @modelcontextprotocol/sdk) embedded into your own code","Custom wrappers around MCP stdio/HTTP servers"],"af_score":71.5,"security_score":61.8,"reliability_score":38.8,"package_type":"mcp_server","discovery_source":["github"],"priority":"high","status":"evaluated","version_evaluated":null,"last_evaluated":"2026-03-30T13:24:53.715470+00:00","interface":{"has_rest_api":false,"has_graphql":false,"has_grpc":false,"has_mcp_server":true,"mcp_server_url":null,"has_sdk":true,"sdk_languages":["TypeScript","JavaScript"],"openapi_spec_url":null,"webhooks":false},"auth":{"methods":["Config-provided HTTP headers (e.g., Authorization: Bearer ...)"],"oauth":false,"scopes":false,"notes":"Authentication is delegated to MCP server configuration (e.g., headers for HTTP transports). No first-class OAuth flow is provided by mcp-cli itself."},"pricing":{"model":null,"free_tier_exists":false,"free_tier_limits":null,"paid_tiers":[],"requires_credit_card":false,"estimated_workload_costs":null,"notes":"No pricing model described (CLI tool)."},"requirements":{"requires_signup":false,"requires_credit_card":false,"domain_verification":false,"data_residency":[],"compliance":[],"min_contract":null},"agent_readiness":{"af_score":71.5,"security_score":61.8,"reliability_score":38.8,"mcp_server_quality":78.0,"documentation_accuracy":86.0,"error_message_quality":null,"error_message_notes":"README mentions actionable errors and provides some common error strings (e.g., UNKNOWN_SUBCOMMAND/AMBIGUOUS guidance). Specific machine-readable error codes are not evidenced in the provided text.","auth_complexity":90.0,"rate_limit_clarity":20.0,"tls_enforcement":80.0,"auth_strength":55.0,"scope_granularity":45.0,"dependency_hygiene":60.0,"secret_handling":70.0,"security_notes":"mcp-cli supports injecting Authorization headers via config and environment-variable substitution, which can be secure if users avoid logging. However, the excerpt does not describe TLS enforcement details (e.g., cert validation) beyond using HTTPS URLs in examples, nor does it detail how secrets are masked in logs. Tool filtering can reduce blast radius but is not a substitute for server-side authorization.","uptime_documented":0.0,"version_stability":60.0,"breaking_changes_history":40.0,"error_recovery":55.0,"idempotency_support":"false","idempotency_notes":"The CLI invokes MCP tools; idempotency depends on the underlying tool (e.g., write/delete tools may not be idempotent). No CLI-level idempotency controls are documented.","pagination_style":"none","retry_guidance_documented":true,"known_agent_gotchas":["Remember correct subcommands (use 'call' and 'info'; 'server tool' or 'run' are not valid)","When passing complex JSON, prefer stdin/heredoc to avoid shell-escaping issues","Tool filtering is applied globally—an agent may not see tools that are disabled/filtered in config","Remote HTTP servers require correct header configuration; missing env vars can fail unless MCP_STRICT_ENV=false"]}}