MCLIP

MCP Command-Line Interface Profile

A CLI conformance profile over MCP. If a service exposes an MCP server, any MCLIP-conformant client produces the same scriptable surface for it — the same command shape, the same flags, the same JSON envelope, the same exit codes.

New to MCP? It's the open standard for connecting AI applications to external tools and data — modelcontextprotocol.io.

MCP does not define a CLI itself. MCLIP defines a canonical CLI projection from MCP's protocol objects — a deterministic rendering layer that turns any MCP server into a uniform shell surface.

A tool's inputSchema becomes long flags. A tools/call result becomes a JSON envelope on stdout. An MCP error becomes a specific exit code.

The problem

The MCP-to-CLI translation space is already crowded: mcp2cli, MCPorter, MCPShim, FastMCP generate-cli, Apify mcpc, IBM mcp-cli, developit/mcp-cmd, f/mcptools. Each picks its own flag conventions, command shapes, output formats, error structures, and resource/prompt surfaces.

Result: N MCP wrappers, N different CLI surfaces over the same MCP server. A script written against one wrapper does not run against another. Five concrete portability breakages span the eight wrappers: argument-passing style, JSON output flag + shape, invocation pattern, array encoding, and server reference.

MCLIP standardises the translation itself, so any conformant tool produces the same scriptable surface for the same MCP server. It is not a new protocol. It is not a vendor-side standard. It applies to the tools that translate MCP into CLI — telling them how to do it consistently.

Concretely — the same MCP tool, across wrappers:

# f/mcptools
mcp call create_issue --params '{"title":"Bug","body":"..."}' \
  npx -y @modelcontextprotocol/server-github

# Apify mcpc
mcpc @github tools-call create_issue title:="Bug" body:="..."

# Under MCLIP, every conformant wrapper:
<binary> github tools call create_issue --title "Bug" --body "..."

Different command verbs, different argument styles, different server references, different output shapes. MCLIP-Core (§1.2, §2.5, §5) pins all four.

How MCP maps to the CLI

MCLIP doesn't try to turn every MCP message into a shell command. The projection draws three lines:

MCP element MCLIP treatment
Tools, resources, prompts User-facing commands. Tool input schemas project to long flags; results project to a JSON envelope on stdout. Resources expose list/read/templates/watch; prompts expose list/get.
Sampling, elicitation, roots Runtime mechanics, not standalone commands. Surface as flags, interactive prompts (with non-interactive refusal per §14.12), or config — not invocations.
Initialize, transport, pagination, auth, progress, cancellation, diagnostics CLI infrastructure: hidden handshake, --transport, --timeout, --cursor/--limit/--no-paginate, env-var credentials (§11), NDJSON progress on stderr (MCLIP-Streaming), SIGINT cancellation (§6.2), --verbose/--quiet.

MCP primitives become commands; MCP schemas become input contracts; MCP responses become a JSON envelope; MCP lifecycle and interaction mechanics become CLI runtime behaviour. The nine conformance modules in profile-v0.md §0.7 are organised around this split.

What the profile defines

MCLIP-Core plus eight independently-claimable modules. A wrapper can claim conformance on Core plus any subset of the modules its UX supports.

Specifications

Source of truth lives in the GitHub repository. The files below are the v0 draft set; everything is pre-publication and subject to revision.

Schema namespace

The canonical MCLIP config schema is hosted under mclip.dev. Clients and editors validating an mclip.json file should reference the versioned URL below.

https://mclip.dev/schemas/config/v0.json

Draft 2020-12 JSON Schema. Tracks profile-v0.md §13.3. The schema URL is normatively cited from the profile; the schema body is hand-maintained against the spec until automated generation lands.

Current status

The specification set is written and internally consistent. The nine synthetic MCP fixture servers and the verify harness are built (Go, MCP SDK v1.6.0; under fixtures/). mclio — the production CLI that doubles as the standard's executable reference — is in active development as a separate Go binary; not yet released. Conformance harness and a companion consumer app follow once mclio is functional.