← Back to the catalog

Skill · Version 1.0.0

MCP and CLI integration

Connects agent capabilities through typed tools, resources and subprocesses with strict transport and lifecycle handling.

mcp-cli-integration

See how it helps

When is it useful?

Use when adding an MCP server or command-line integration to an agent runtime.

What does it help you do?

  • Separates tool actions, addressable resources and reusable prompts.
  • Protects protocol output and bounds execution time, payload size and workspace access.
  • Handles server identity, local transport exposure and process shutdown explicitly.

Try asking this

Integrate a local MCP server with clean JSON-RPC output, bounded responses and reliable cancellation of a hung tool call. Cancel an intentionally stalled tool and restart the client. No orphan process should remain, and diagnostic text must not corrupt the protocol stream.

Detailed documentation

Read the skill’s original instructions, examples and checks in their authored language.

Details…Show less

MCP & CLI Integration

Standardize external tool, resource, and subprocess integrations so the agent runtime interacts with third-party capabilities through clean lifecycle management, strict transport framing, and bounded security permissions.

Model Context Protocol (MCP) Architecture

MCP separates capabilities into three distinct primitives—use each for its intended purpose:

Primitive Direction & Purpose Design Rules
Tools (tools/list, tools/call) Model-controlled actions with typed JSON Schema inputs (inputSchema) and optional outputSchema Annotate with readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Return operational failures inside the result with isError: true (and structuredContent when outputSchema is defined) rather than JSON-RPC protocol errors.
Resources (resources/list, resources/read, resources/subscribe) Application/context-addressed read-only data identified by URI (file://, db://, git://) Use resources for large files, schemas, or live logs so tools can return lightweight resource links (resource_link) instead of bloating tool outputs.
Prompts (prompts/list, prompts/get) User- or workflow-invoked reusable templates with typed arguments Keep prompt templates parameterized and versioned cleanly.

Transport & Protocol Discipline

  1. stdio Transport (Local Subprocess Servers):
    • Stdout purity: The MCP server must write only newline-delimited JSON-RPC 2.0 messages to stdout. Any console.log, library banner, or debug print on stdout corrupts the JSON-RPC stream immediately—route all diagnostic logging strictly to stderr.
    • Subprocess lifecycle: Spawn with explicit working directory (cwd), minimal allowlisted environment variables (never dump the entire host process.env if it contains unrelated secrets), and clean shutdown (stdin.end() $\rightarrow$ SIGTERM $\rightarrow$ timeout $\rightarrow$ SIGKILL on the process group).
  2. Streamable HTTP Transport (Remote / Shared Servers):
    • Send JSON-RPC requests via POST to the MCP endpoint with MCP-Protocol-Version (and Mcp-Session-Id when stateful sessions are active).
    • Handle both application/json single responses and text/event-stream (SSE) streaming responses, supporting resumption via Last-Event-ID when supported by the server.
    • Validate Origin headers and bind local HTTP servers exclusively to 127.0.0.1 (never 0.0.0.0 without authentication) to prevent DNS-rebinding and cross-origin local execution attacks.

Defensive Client & Subprocess Guardrails

  • Treat third-party MCP servers as untrusted:
    • Pin or verify tools/list schemas to prevent tool poisoning and rug-pull attacks (where a server silently mutates a tool's description mid-session to inject hidden instructions or exfiltrate files).
    • Namespace tool names by server (<server>__<tool>) so one server cannot shadow built-in or high-trust tools.
  • Per-call timeouts and payload caps: Enforce a hard timeout (AbortSignal.timeout(ms)) and maximum byte limit on every tools/call and resources/read request so a hung MCP server or runaway CLI command cannot stall the entire agent worker.
  • Headless CLI Agent Integration: When invoking external agent CLIs (Claude Code, Codex, Gemini CLI), run non-interactively (stdin closed or structured protocol), stream structured JSONL events, capture exit codes and stderr ring buffers, and enforce workspace path sandboxing.

Included files 1

  • SKILL.md

About this skill package

mcp-cli-integration

mcp-cli-integration: Build AI agent features with explicit tool contracts, controlled permissions, durable state and observable model behavior.

Details…Show less

mcp-cli-integration

mcp-cli-integration: Build AI agent features with explicit tool contracts, controlled permissions, durable state and observable model behavior.

Includes the complete skill and its supporting files (1 files). The exact authored scope is preserved below.

Original skill description (source language)

Use when building or integrating Model Context Protocol (MCP) servers and clients, or orchestrating headless CLI agents and subprocesses via stdio or Streamable HTTP.

Install the skill, review its source and trust settings, then enable it for the relevant project or agent.

Requirements

  • Orqestria installed on your computer.