Turn any MCP server into a native command-line application.
mcp2cli discovers an MCP server's tools, resources, and prompts, and renders them as a typed CLI — required fields become required flags, JSON Schema drives argument parsing, dotted names become subcommands. One binary. Any server. Real CLI commands.
curl -fsSL https://mcp2cli.dev/install.sh | shAI agent — paste this into your assistant:
Read https://mcp2cli.dev/SKILL.md and set up a cli for my mcp serverAny MCP server, one binary away.
Full MCP 2025-11-25 — discovery, tools, resources, prompts, completions, elicitation, sampling, roots, notifications, and tasks. All mapped to CLI verbs.
Point mcp2cli at an MCP endpoint and start invoking tools. No custom client code, no JSON-RPC plumbing, no session boilerplate.
Exit codes, JSON / NDJSON output, background jobs, Ctrl+C cancellation, Unix-socket event streams. Built to pipe.
Everything an MCP client needs, on the terminal.
Discovery-driven CLI
→Server capabilities auto-generate typed clap commands with flags derived from JSON Schema.
Named configs & aliases
→Bind each server to a name; install symlinks so work, staging, prod feel like standalone apps.
Multiple transports
→Streamable HTTP and stdio out of the box. Ad-hoc --url / --stdio for zero-config runs.
Daemon mode
→Keep MCP connections warm between invocations. No init cost on every command.
Background jobs
→--background hands long-running ops to server-side tasks; jobs show / wait / cancel / watch.
Elicitation & sampling
→Interactive terminal prompts for server→client input; human-in-the-loop for LLM sampling.
Full MCP 2025-11-25 coverage.
13 capability groups — from lifecycle and discovery through bidirectional notifications and long-running tasks — each mapped to CLI verbs you can invoke today.
Lifecycle
→- initialize
- notifications/initialized
- ping
Discovery
→- tools/list
- resources/list
- resources/templates/list
- prompts/list
- */list_changed
Tools
→- tools/call
- _meta.progressToken
- _meta.task
Resources
↔- resources/read
- subscribe
- unsubscribe
- resources/updated
Prompts
→- prompts/get
Completions
→- completion/complete
- ref.context
Logging
↔- logging/setLevel
- notifications/message
Progress
←- notifications/progress
Cancellation
↔- notifications/cancelled
Elicitation
←- elicitation/create
Sampling
←- sampling/createMessage
Roots
←- roots/list
Tasks
→- tasks/get
- tasks/result
- tasks/cancel