{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/philschmid-de/2026-01-09-introducing-mcp-cli-a-way-to-call-mcp-servers-efficiently/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "> **Updated January 2026 for v0.3.0** — New 3-subcommand architecture (`info`, `grep`, `call`), connection pooling daemon, and tool filtering support.\n\nThe [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro) is an open standard for connecting AI agents to external tools, APIs, and data sources. However, as the ecosystem grows with more powerful MCP servers, developers and agent builders are hitting a scaling bottleneck: **context window bloat**.\n\n[mcp-cli](https://github.com/philschmid/mcp-cli) is a lightweight CLI that allows dynamic discovery of MCP, reducing token consumption while making tool interactions more efficient for AI coding agents.\n\nKey Features:\n\n- 🪶 Built on [Bun](https://bun.sh/), `mcp-cli` compiles to a single standalone binary.\n- 🔌 Works with both stdio (local) and HTTP (remote) MCP servers.\n- 🔍 Glob-based search across all servers `mcp-cli grep \"*mail*\" -d`.\n- 🤖 Designed for AI coding agents (Gemini CLI, Claude Code, etc.).\n- ⚡ Connection pooling with lazy-spawn daemon (60s idle timeout).\n- 🎛️ Tool filtering via `allowedTools` and `disabledTools` config.\n- � Server instructions support in output.\n- �💡 Structured error messages with recovery suggestions.\n\n## The Context Problem\n\nEvery MCP server comes with tool definitions schemas describing what each tool does, its parameters, types, and descriptions. Traditional MCP integration loads all of these schemas upfront into the agent's context window.\n\nHere's what that looks like in practice:\n\n![comparison](https://www.philschmid.de/static/blog/mcp-cli/comparison.jpeg)\n\n| Setup                   | Tokens Used     |\n| ----------------------- | --------------- |\n| 6 MCP servers, 60 tools | \\~47,000 tokens |\n| After dynamic discovery | \\~400 tokens    |\n\nThat is a **99% reduction** in MCP-related token usage for this scenario.\n\nWhen working with multiple MCP servers (GitHub, databases, browser automation—tool), definitions quickly consume a third or more of the effective context. This leads to:\n\n- **Reduced effective context length** for actual reasoning and code generation.\n- **More frequent context compactions** interrupting flow.\n- **Hard limits** on the number of simultaneous MCP servers you can use.\n- **Higher API costs** due to input token overhead.\n\n## Dynamic Context Discovery\n\nThe solution is dynamic context discovery. Instead of loading everything upfront (static context), agents pull in only the information they need, when they need it.\n\n![](https://www.philschmid.de/static/blog/mcp-cli/dynamic-discovery.jpg)\n\n`mcp-cli` implements this pattern for MCP:\n\n- Step 1: \"What servers exist?\" → `mcp-cli`\n- Step 2: \"What are the params for tool X?\" → `mcp-cli info github search_repositories`\n- Step 3: Execute → `mcp-cli call github search_repositories '{\"query\": \"mcp\"}'`\n\nMost Interactions only use a handful of tools, yet static loading consumes tokens for every tool definition. Dynamic discovery inverts this, you pay only for what you use.\n\n## Quick start\n\n[mcp-cli](https://github.com/philschmid/mcp-cli) allows dynamic discovery of MCP while making tool interactions more efficient for AI coding agents.\n\n### 1\\. Installation\n\nBash\n\n```bash\n# binary install\ncurl -fsSL https://raw.githubusercontent.com/philschmid/mcp-cli/main/install.sh | bash\n \n# requires bun install\nbun install -g https://github.com/philschmid/mcp-cli\n```\n\n### 2\\. Create a config file\n\nCreate `mcp_servers.json` in your current directory or `~/.config/mcp/`:\n\nJSON\n\n```json\n{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@modelcontextprotocol/server-filesystem\",\n        \".\"\n      ]\n    },\n    \"deepwiki\": {\n      \"url\": \"https://mcp.deepwiki.com/mcp\"\n    }\n  }\n}\n```\n\n### 3\\. Discover available tools\n\nBash\n\n```bash\n# List all servers and tools\nmcp-cli\n# deepwiki\n#  • read_wiki_structure\n#  • read_wiki_contents\n#  • ask_question\n#\n# filesystem\n#  • read_file\n#  • read_text_file\n#  • read_media_file\n#  • read_multiple_files\n# ...\n \n# With descriptions\n# mcp-cli -d\n```\n\n### 4\\. Call a tool\n\nBash\n\n```bash\n# View tool schema first\nmcp-cli info filesystem read_file\n# Tool: read_file\n# Server: filesystem\n#\n# Description:\n#  Read the complete contents of a file as text.\n#\n# Input Schema:\n# {\n#  \"type\": \"object\",\n#  \"properties\": {\n# ...\n```\n\n### 5\\. Execute the tool\n\nBash\n\n```bash\n# Call the tool\nmcp-cli call filesystem read_file '{\"path\": \"./README.md\"}'\n```\n\n### 6\\. Complex commands\n\nMCP CLI allows the model to generate commands that chain multiple tool calls together.\n\nBash\n\n```bash\n# Using a heredoc (no '-' needed with call subcommand)\nmcp-cli call server tool <<EOF\n{\"content\": \"Text with 'single quotes' and \\\"double quotes\\\"\"}\nEOF\n \n# From a file\ncat args.json | mcp-cli call server tool\n \n# Using jq to build complex JSON\njq -n '{query: \"mcp\", filters: [\"active\", \"starred\"]}' | mcp-cli call github search\n \n# Find all TypeScript files and read the first one\nmcp-cli call filesystem search_files '{\"path\": \"src/\", \"pattern\": \"*.ts\"}' \\\n  | jq -r '.content[0].text | split(\"\\n\")[0]' \\\n  | xargs -I {} mcp-cli call filesystem read_file '{\"path\": \"{}\"}'\n```\n\n## Tool Filtering\n\nYou can restrict which tools are available from a server using `allowedTools` and `disabledTools` in your config:\n\nJSON\n\n```json\n{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \".\"],\n      \"allowedTools\": [\"read_file\", \"list_directory\"],\n      \"disabledTools\": [\"delete_file\"]\n    }\n  }\n}\n```\n\n**Rules:**\n\n- `allowedTools`: Only tools matching these patterns are available (supports glob: `*`, `?`)\n- `disabledTools`: Tools matching these patterns are excluded\n- `disabledTools` takes precedence over `allowedTools`\n- Filtering applies globally to all CLI operations (info, grep, call)\n\n**Examples:**\n\nBash\n\n```bash\n# Only allow read operations\n\"allowedTools\": [\"read_*\", \"list_*\", \"search_*\"]\n \n# Allow all except destructive operations\n\"disabledTools\": [\"delete_*\", \"write_*\", \"create_*\"]\n \n# Combine: allow file operations but disable delete\n\"allowedTools\": [\"*file*\"],\n\"disabledTools\": [\"delete_file\"]\n```\n\n## Connection Pooling\n\nBy default, `mcp-cli` uses lazy-spawn connection pooling to avoid repeated MCP server startup latency:\n\n- **Automatic**: No manual start/stop needed\n- **Per-server**: Each MCP server gets its own daemon\n- **Stale detection**: Config changes trigger re-spawn\n- **60s idle timeout**: Configurable via `MCP_DAEMON_TIMEOUT`\n\nControl via environment:\n\nBash\n\n```bash\nMCP_NO_DAEMON=1 mcp-cli info      # Force fresh connection\nMCP_DAEMON_TIMEOUT=120 mcp-cli    # 2 minute idle timeout\n```\n\n## Integrating with AI Agents\n\n`mcp-cli` is designed to be used with AI Agents and bash tools. There are two main ways to integrate it:\n\n### Option 1: System Instructions Integration\n\nAdd this to your AI agent's system prompt for direct CLI access:\n\nXml\n\n````xml\n## MCP Servers\n \nYou have access to MCP servers via the `mcp-cli` CLI.\n \nCommands:\n \n```bash\nmcp-cli info                        # List all servers\nmcp-cli info <server>               # Show server tools  \nmcp-cli info <server> <tool>        # Get tool schema\nmcp-cli grep \"<pattern>\"            # Search tools\nmcp-cli call <server> <tool>        # Call tool (stdin auto-detected)\nmcp-cli call <server> <tool> '{}'   # Call with JSON args\n```\n \n**Both formats work:** `info <server> <tool>` or `info <server>/<tool>`\n \nWorkflow:\n \n1. **Discover**: `mcp-cli info` to see available servers\n2. **Inspect**: `mcp-cli info <server> <tool>` to get the schema\n3. **Execute**: `mcp-cli call <server> <tool> '{}'` with arguments\n \n### Examples\n \n```bash\n# Call with inline JSON\nmcp-cli call github search_repositories '{\"query\": \"mcp server\"}'\n \n# Pipe from stdin (no '-' needed)\necho '{\"path\": \"./file\"}' | mcp-cli call filesystem read_file\n \n# Heredoc for complex JSON\nmcp-cli call server tool <<EOF\n{\"content\": \"Text with 'quotes'\"}\nEOF\n```\n````\n\n### Option 2: Agent Skills\n\nFor AI agents that support [Agent Skills](https://agentskills.io/home) an upcoming standard for extending coding agents. mcp-cli ships with a ready-to-use skill definition.\n\nCreate `mcp-cli/SKILL.md` in your agent's skills directory:\n\nMarkdown\n\n````markdown\n---\nname: mcp-cli\ndescription: Interface for MCP (Model Context Protocol) servers via CLI. Use when you need to interact with external tools, APIs, or data sources through MCP servers.\n---\n \n# MCP-CLI\n \nAccess MCP servers through the command line. MCP enables interaction with external systems like GitHub, filesystems, databases, and APIs.\n \n## Commands\n \n| Command | Output |\n|---------|--------|\n| `mcp-cli` | List all servers and tool names |\n| `mcp-cli info <server>` | Show tools with parameters |\n| `mcp-cli info <server> <tool>` | Get tool JSON schema |\n| `mcp-cli grep \"<pattern>\"` | Search tools by name |\n| `mcp-cli call <server> <tool> '{}'` | Call tool with arguments |\n \n**Both formats work:** `info <server> <tool>` or `info <server>/<tool>`\n \n**Add `-d` to include descriptions** (e.g., `mcp-cli info filesystem -d`)\n \n## Workflow\n \n1. **Discover**: `mcp-cli` → see available servers and tools\n2. **Explore**: `mcp-cli info <server>` → see tools with parameters\n3. **Inspect**: `mcp-cli info <server> <tool>` → get full JSON input schema\n4. **Execute**: `mcp-cli call <server> <tool> '{}'` → run with arguments\n \n## Examples\n \n```bash\n# List all servers and tool names\nmcp-cli\n \n# See all tools with parameters\nmcp-cli info filesystem\n \n# With descriptions (more verbose)\nmcp-cli info filesystem -d\n \n# Get JSON schema for specific tool\nmcp-cli info filesystem read_file\n \n# Call the tool\nmcp-cli call filesystem read_file '{\"path\": \"./README.md\"}'\n \n# Search for tools\nmcp-cli grep \"*file*\"\n \n# Complex JSON with quotes (use heredoc or stdin)\nmcp-cli call server tool <<EOF\n{\"content\": \"Text with 'quotes' inside\"}\nEOF\n \n# Or pipe from a file/command\ncat args.json | mcp-cli call server tool\n \n# Chain: search and read first result\nmcp-cli call filesystem search_files '{\"path\": \"src/\", \"pattern\": \"*.ts\"}' \\\n  | jq -r '.content[0].text | split(\"\\n\")[0]' \\\n  | xargs -I {} mcp-cli call filesystem read_file '{\"path\": \"{}\"}'\n```\n \n## Options\n \n| Flag | Purpose |\n|------|---------|\n| `-d` | Include descriptions |\n| `-c <path>` | Custom config file path |\n \n## Exit Codes\n \n- `0`: Success\n- `1`: Client error (bad args, missing config)\n- `2`: Server error (tool failed)\n- `3`: Network error\n````\n\n## Conclusion\n\nThe AI Agent space is moving incredibly fast. `mcp-cli` tries to solve context tool discovery problem turning it into an iterative, just-in-time process. It allows agents to access a massive ecosystem of shared capabilities without the context bloat of static integration. Whether used within a Skill or as a standalone utility, it ensures your agent spends its tokens on reasoning, not configuration.\n\nThe project is open source and designed to fit into existing workflows. Give it a try and contribute at [github.com/philschmid/mcp-cli](https://github.com/philschmid/mcp-cli).\n\n* * *\n\nThanks for reading! If you have any questions or feedback, please let me know on [Twitter](https://twitter.com/_philschmid) or [LinkedIn](https://www.linkedin.com/in/philipp-schmid-a6a2bb196/).\n",
  "authors": [],
  "captured_at": "2026-09-27T19:29:15.293681927+00:00",
  "category": "programming",
  "content_html": "<blockquote>\n<p><strong>Updated January 2026 for v0.3.0</strong> — New 3-subcommand architecture (<code>info</code>, <code>grep</code>, <code>call</code>), connection pooling daemon, and tool filtering support.</p>\n</blockquote>\n<p>The <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://modelcontextprotocol.io/docs/getting-started/intro\">Model Context Protocol (MCP)</a> is an open standard for connecting AI agents to external tools, APIs, and data sources. However, as the ecosystem grows with more powerful MCP servers, developers and agent builders are hitting a scaling bottleneck: <strong>context window bloat</strong>.</p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/philschmid/mcp-cli\">mcp-cli</a> is a lightweight CLI that allows dynamic discovery of MCP, reducing token consumption while making tool interactions more efficient for AI coding agents.</p>\n<p>Key Features:</p>\n<ul>\n<li>🪶 Built on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://bun.sh/\">Bun</a>, <code>mcp-cli</code> compiles to a single standalone binary.</li>\n<li>🔌 Works with both stdio (local) and HTTP (remote) MCP servers.</li>\n<li>🔍 Glob-based search across all servers <code>mcp-cli grep &quot;*mail*&quot; -d</code>.</li>\n<li>🤖 Designed for AI coding agents (Gemini CLI, Claude Code, etc.).</li>\n<li>⚡ Connection pooling with lazy-spawn daemon (60s idle timeout).</li>\n<li>🎛️ Tool filtering via <code>allowedTools</code> and <code>disabledTools</code> config.</li>\n<li>� Server instructions support in output.</li>\n<li>�💡 Structured error messages with recovery suggestions.</li>\n</ul>\n<h2>The Context Problem</h2>\n<p>Every MCP server comes with tool definitions schemas describing what each tool does, its parameters, types, and descriptions. Traditional MCP integration loads all of these schemas upfront into the agent's context window.</p>\n<p>Here's what that looks like in practice:</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://www.philschmid.de/static/blog/mcp-cli/comparison.jpeg\" alt=\"comparison\" loading=\"eager\" decoding=\"async\" fetchpriority=\"high\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<table>\n<thead>\n<tr>\n<th>Setup</th>\n<th>Tokens Used</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>6 MCP servers, 60 tools</td>\n<td>~47,000 tokens</td>\n</tr>\n<tr>\n<td>After dynamic discovery</td>\n<td>~400 tokens</td>\n</tr>\n</tbody>\n</table>\n<p>That is a <strong>99% reduction</strong> in MCP-related token usage for this scenario.</p>\n<p>When working with multiple MCP servers (GitHub, databases, browser automation—tool), definitions quickly consume a third or more of the effective context. This leads to:</p>\n<ul>\n<li><strong>Reduced effective context length</strong> for actual reasoning and code generation.</li>\n<li><strong>More frequent context compactions</strong> interrupting flow.</li>\n<li><strong>Hard limits</strong> on the number of simultaneous MCP servers you can use.</li>\n<li><strong>Higher API costs</strong> due to input token overhead.</li>\n</ul>\n<h2>Dynamic Context Discovery</h2>\n<p>The solution is dynamic context discovery. Instead of loading everything upfront (static context), agents pull in only the information they need, when they need it.</p>\n<p><picture class=\"article-picture article-picture-fallback\" style=\"--image-ratio:16 / 9\"><img src=\"https://www.philschmid.de/static/blog/mcp-cli/dynamic-discovery.jpg\" alt=\"\" loading=\"lazy\" decoding=\"async\" fetchpriority=\"low\" referrerpolicy=\"no-referrer\" class=\"progressive-image\"></picture></p>\n<p><code>mcp-cli</code> implements this pattern for MCP:</p>\n<ul>\n<li>Step 1: &quot;What servers exist?&quot; → <code>mcp-cli</code></li>\n<li>Step 2: &quot;What are the params for tool X?&quot; → <code>mcp-cli info github search_repositories</code></li>\n<li>Step 3: Execute → <code>mcp-cli call github search_repositories '{&quot;query&quot;: &quot;mcp&quot;}'</code></li>\n</ul>\n<p>Most Interactions only use a handful of tools, yet static loading consumes tokens for every tool definition. Dynamic discovery inverts this, you pay only for what you use.</p>\n<h2>Quick start</h2>\n<p><a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/philschmid/mcp-cli\">mcp-cli</a> allows dynamic discovery of MCP while making tool interactions more efficient for AI coding agents.</p>\n<h3>1. Installation</h3>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> binary install</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">curl</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>fsSL</span> https://raw.githubusercontent.com/philschmid/mcp-cli/main/install.sh</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">bash</span></span>\n \n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> requires bun install</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">bun</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> install<span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>g</span> https://github.com/philschmid/mcp-cli</span>\n</span></span></code></pre>\n<h3>2. Create a config file</h3>\n<p>Create <code>mcp_servers.json</code> in your current directory or <code>~/.config/mcp/</code>:</p>\n<p>JSON</p>\n<pre><code class=\"language-json\"><span class=\"code-snippet\" data-language=\"JSON\"><span class=\"syntax-source syntax-json\"><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>mcpServers<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>filesystem<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>command<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>npx<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>args<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span>\n        <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>-y<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span>\n        <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>@modelcontextprotocol/server-filesystem<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span>\n        <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>.<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n      <span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>deepwiki<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>url<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>https://mcp.deepwiki.com/mcp<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span></span></code></pre>\n<h3>3. Discover available tools</h3>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> List all servers and tools</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mcp-cli</span></span>\n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> deepwiki</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  • read_wiki_structure</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  • read_wiki_contents</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  • ask_question</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> filesystem</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  • read_file</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  • read_text_file</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  • read_media_file</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  • read_multiple_files</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> ...</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span> \n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> With descriptions</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> mcp-cli -d</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span></span></code></pre>\n<h3>4. Call a tool</h3>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> View tool schema first</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mcp-cli</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> info filesystem read_file</span>\n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Tool: read_file</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Server: filesystem</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Description:</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  Read the complete contents of a file as text.</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Input Schema:</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> {</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  &quot;type&quot;: &quot;object&quot;,</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">  &quot;properties&quot;: {</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> ...</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span></span></code></pre>\n<h3>5. Execute the tool</h3>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Call the tool</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mcp-cli</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> call filesystem read_file <span class=\"syntax-string syntax-quoted syntax-single syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&#39;</span>{&quot;path&quot;: &quot;./README.md&quot;}<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&#39;</span></span></span>\n</span></span></code></pre>\n<h3>6. Complex commands</h3>\n<p>MCP CLI allows the model to generate commands that chain multiple tool calls together.</p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Using a heredoc (no &#39;-&#39; needed with call subcommand)</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mcp-cli</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> call server tool <span class=\"syntax-string syntax-unquoted syntax-heredoc syntax-shell\"><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-redirection syntax-shell\">&lt;&lt;</span><span class=\"syntax-keyword syntax-control syntax-heredoc-token syntax-shell\">EOF</span></span><span class=\"syntax-string syntax-unquoted syntax-heredoc syntax-shell\">\n{&quot;content&quot;: &quot;Text with &#39;single quotes&#39; and <span class=\"syntax-constant syntax-character syntax-escape syntax-backtick syntax-shell\">\\&quot;</span>double quotes<span class=\"syntax-constant syntax-character syntax-escape syntax-backtick syntax-shell\">\\&quot;</span>&quot;}\n<span class=\"syntax-keyword syntax-control syntax-heredoc-token syntax-shell\">EOF</span></span></span>\n \n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> From a file</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">cat</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> args.json</span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mcp-cli</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> call server tool</span>\n \n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Using jq to build complex JSON</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">jq</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>n</span> <span class=\"syntax-string syntax-quoted syntax-single syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&#39;</span>{query: &quot;mcp&quot;, filters: [&quot;active&quot;, &quot;starred&quot;]}<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&#39;</span></span></span> <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mcp-cli</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> call github search</span>\n \n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Find all TypeScript files and read the first one</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mcp-cli</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> call filesystem search_files <span class=\"syntax-string syntax-quoted syntax-single syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&#39;</span>{&quot;path&quot;: &quot;src/&quot;, &quot;pattern&quot;: &quot;*.ts&quot;}<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&#39;</span></span> <span class=\"syntax-punctuation syntax-separator syntax-continuation syntax-line syntax-shell\">\\\n</span></span>  <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">jq</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>r</span> <span class=\"syntax-string syntax-quoted syntax-single syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&#39;</span>.content[0].text | split(&quot;\\n&quot;)[0]<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&#39;</span></span> <span class=\"syntax-punctuation syntax-separator syntax-continuation syntax-line syntax-shell\">\\\n</span></span>  <span class=\"syntax-keyword syntax-operator syntax-logical syntax-pipe syntax-shell\">|</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">xargs</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"><span class=\"syntax-variable syntax-parameter syntax-option syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-parameter syntax-shell\"> -</span>I</span> <span class=\"syntax-meta syntax-group syntax-expansion syntax-brace syntax-shell\"><span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-begin syntax-shell\">{</span><span class=\"syntax-punctuation syntax-section syntax-expansion syntax-brace syntax-end syntax-shell\">}</span></span> mcp-cli call filesystem read_file <span class=\"syntax-string syntax-quoted syntax-single syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&#39;</span>{&quot;path&quot;: &quot;{}&quot;}<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&#39;</span></span></span>\n</span></span></code></pre>\n<h2>Tool Filtering</h2>\n<p>You can restrict which tools are available from a server using <code>allowedTools</code> and <code>disabledTools</code> in your config:</p>\n<p>JSON</p>\n<pre><code class=\"language-json\"><span class=\"code-snippet\" data-language=\"JSON\"><span class=\"syntax-source syntax-json\"><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n  <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>mcpServers<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n    <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>filesystem<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-begin syntax-json\">{</span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>command<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>npx<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>args<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>-y<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>@modelcontextprotocol/server-filesystem<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>.<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>allowedTools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>read_file<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-separator syntax-array syntax-json\">,</span> <span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>list_directory<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-pair syntax-json\">,</span></span>\n      <span class=\"syntax-meta syntax-structure syntax-dictionary syntax-key syntax-json\"><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>disabledTools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span></span><span class=\"syntax-meta syntax-structure syntax-dictionary syntax-value syntax-json\"><span class=\"syntax-punctuation syntax-separator syntax-dictionary syntax-key-value syntax-json\">:</span> <span class=\"syntax-meta syntax-structure syntax-array syntax-json\"><span class=\"syntax-punctuation syntax-section syntax-array syntax-begin syntax-json\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-json\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-json\">&quot;</span>delete_file<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-json\">&quot;</span></span><span class=\"syntax-punctuation syntax-section syntax-array syntax-end syntax-json\">]</span></span>\n    </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n  </span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span><span class=\"syntax-punctuation syntax-section syntax-dictionary syntax-end syntax-json\">}</span></span>\n</span></span></code></pre>\n<p><strong>Rules:</strong></p>\n<ul>\n<li><code>allowedTools</code>: Only tools matching these patterns are available (supports glob: <code>*</code>, <code>?</code>)</li>\n<li><code>disabledTools</code>: Tools matching these patterns are excluded</li>\n<li><code>disabledTools</code> takes precedence over <code>allowedTools</code></li>\n<li>Filtering applies globally to all CLI operations (info, grep, call)</li>\n</ul>\n<p><strong>Examples:</strong></p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Only allow read operations</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>allowedTools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span>:</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-keyword syntax-control syntax-regexp syntax-set syntax-begin syntax-shell\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>read_*<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span>, <span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>list_*<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span>, <span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>search_*<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-keyword syntax-control syntax-regexp syntax-set syntax-end syntax-shell\">]</span></span>\n \n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Allow all except destructive operations</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>disabledTools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span>:</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-keyword syntax-control syntax-regexp syntax-set syntax-begin syntax-shell\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>delete_*<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span>, <span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>write_*<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span>, <span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>create_*<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-keyword syntax-control syntax-regexp syntax-set syntax-end syntax-shell\">]</span></span>\n \n<span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Combine: allow file operations but disable delete</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span><span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>allowedTools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span>:</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-keyword syntax-control syntax-regexp syntax-set syntax-begin syntax-shell\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>*file*<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-keyword syntax-control syntax-regexp syntax-set syntax-end syntax-shell\">]</span>,</span>\n<span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\"><span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>disabledTools<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span>:</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> <span class=\"syntax-keyword syntax-control syntax-regexp syntax-set syntax-begin syntax-shell\">[</span><span class=\"syntax-string syntax-quoted syntax-double syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-shell\">&quot;</span>delete_file<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-shell\">&quot;</span></span><span class=\"syntax-keyword syntax-control syntax-regexp syntax-set syntax-end syntax-shell\">]</span></span>\n</span></span></code></pre>\n<h2>Connection Pooling</h2>\n<p>By default, <code>mcp-cli</code> uses lazy-spawn connection pooling to avoid repeated MCP server startup latency:</p>\n<ul>\n<li><strong>Automatic</strong>: No manual start/stop needed</li>\n<li><strong>Per-server</strong>: Each MCP server gets its own daemon</li>\n<li><strong>Stale detection</strong>: Config changes trigger re-spawn</li>\n<li><strong>60s idle timeout</strong>: Configurable via <code>MCP_DAEMON_TIMEOUT</code></li>\n</ul>\n<p>Control via environment:</p>\n<p>Bash</p>\n<pre><code class=\"language-bash\"><span class=\"code-snippet\" data-language=\"Shell\"><span class=\"syntax-source syntax-shell syntax-bash\"><span class=\"syntax-variable syntax-other syntax-readwrite syntax-assignment syntax-shell\">MCP_NO_DAEMON</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-shell\">=</span><span class=\"syntax-string syntax-unquoted syntax-shell\">1</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mcp-cli</span></span><span class=\"syntax-meta syntax-function-call syntax-arguments syntax-shell\"> info      <span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> Force fresh connection</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-assignment syntax-shell\">MCP_DAEMON_TIMEOUT</span><span class=\"syntax-keyword syntax-operator syntax-assignment syntax-shell\">=</span><span class=\"syntax-string syntax-unquoted syntax-shell\">120</span> <span class=\"syntax-meta syntax-function-call syntax-shell\"><span class=\"syntax-variable syntax-function syntax-shell\">mcp-cli    <span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-begin syntax-shell\">#</span></span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\"> 2 minute idle timeout</span><span class=\"syntax-comment syntax-line syntax-number-sign syntax-shell\">\n</span></span></span></span></span></code></pre>\n<h2>Integrating with AI Agents</h2>\n<p><code>mcp-cli</code> is designed to be used with AI Agents and bash tools. There are two main ways to integrate it:</p>\n<h3>Option 1: System Instructions Integration</h3>\n<p>Add this to your AI agent's system prompt for direct CLI access:</p>\n<p>Xml</p>\n<pre><code class=\"language-xml\"><span class=\"code-snippet\" data-language=\"XML\"><span class=\"syntax-text syntax-xml\">## MCP Servers\n \nYou have access to MCP servers via the `mcp-cli` CLI.\n \nCommands:\n \n```bash\nmcp-cli info                        # List all servers\nmcp-cli info <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">server</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span>               # Show server tools  \nmcp-cli info <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">server</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span> <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">tool</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span>        # Get tool schema\nmcp-cli grep &quot;<span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">pattern</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span>&quot;            # Search tools\nmcp-cli call <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">server</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span> <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">tool</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span>        # Call tool (stdin auto-detected)\nmcp-cli call <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">server</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span> <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">tool</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span> &#39;{}&#39;   # Call with JSON args\n```\n \n**Both formats work:** `info <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">server</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span> <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">tool</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span>` or `info <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">server</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span>/<span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">tool</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span>`\n \nWorkflow:\n \n1. **Discover**: `mcp-cli info` to see available servers\n2. **Inspect**: `mcp-cli info <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">server</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span> <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">tool</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span>` to get the schema\n3. **Execute**: `mcp-cli call <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">server</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span> <span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">tool</span><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-end syntax-xml\">&gt;</span></span> &#39;{}&#39;` with arguments\n \n### Examples\n \n```bash\n# Call with inline JSON\nmcp-cli call github search_repositories &#39;{&quot;query&quot;: &quot;mcp server&quot;}&#39;\n \n# Pipe from stdin (no &#39;-&#39; needed)\necho &#39;{&quot;path&quot;: &quot;./file&quot;}&#39; | mcp-cli call filesystem read_file\n \n# Heredoc for complex JSON\nmcp-cli call server tool <span class=\"syntax-invalid syntax-illegal syntax-missing-entity syntax-xml\">&lt;</span><span class=\"syntax-meta syntax-tag syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-tag syntax-begin syntax-xml\">&lt;</span><span class=\"syntax-entity syntax-name syntax-tag syntax-localname syntax-xml\">EOF</span>\n{<span class=\"syntax-string syntax-quoted syntax-double syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-xml\">&quot;</span>content<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-xml\">&quot;</span></span>: <span class=\"syntax-string syntax-quoted syntax-double syntax-xml\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-xml\">&quot;</span>Text with &#39;quotes&#39;<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-xml\">&quot;</span></span>}\nEOF\n```\n</span></span></span></code></pre>\n<h3>Option 2: Agent Skills</h3>\n<p>For AI agents that support <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://agentskills.io/home\">Agent Skills</a> an upcoming standard for extending coding agents. mcp-cli ships with a ready-to-use skill definition.</p>\n<p>Create <code>mcp-cli/SKILL.md</code> in your agent's skills directory:</p>\n<p>Markdown</p>\n<pre><code class=\"language-markdown\"><span class=\"code-snippet\" data-language=\"Markdown\"><span class=\"syntax-text syntax-html syntax-markdown\"><span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-meta syntax-separator syntax-thematic-break syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-thematic-break syntax-markdown\">---</span>\n</span></span><span class=\"syntax-meta syntax-paragraph syntax-markdown\">name: mcp-cli\ndescription: Interface for MCP (Model Context Protocol) servers via CLI. Use when you need to interact with external tools, APIs, or data sources through MCP servers.\n<span class=\"syntax-markup syntax-heading syntax-2 syntax-setext syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-setext syntax-markdown\">---</span></span></span>\n \n<span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-markup syntax-heading syntax-1 syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-begin syntax-markdown\">#</span> </span><span class=\"syntax-markup syntax-heading syntax-1 syntax-markdown\"><span class=\"syntax-entity syntax-name syntax-section syntax-markdown\">MCP-CLI</span><span class=\"syntax-meta syntax-whitespace syntax-newline syntax-markdown\">\n</span></span></span> \n<span class=\"syntax-meta syntax-paragraph syntax-markdown\">Access MCP servers through the command line. MCP enables interaction with external systems like GitHub, filesystems, databases, and APIs.\n \n</span><span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-begin syntax-markdown\">##</span> </span><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-entity syntax-name syntax-section syntax-markdown\">Commands</span><span class=\"syntax-meta syntax-whitespace syntax-newline syntax-markdown\">\n</span></span></span> \n<span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-meta syntax-table syntax-header syntax-markdown\"><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Command <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Output <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n</span><span class=\"syntax-meta syntax-table syntax-header-separator syntax-markdown\"><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span><span class=\"syntax-punctuation syntax-section syntax-table-header syntax-markdown\">---------</span><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span><span class=\"syntax-punctuation syntax-section syntax-table-header syntax-markdown\">--------</span><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n</span><span class=\"syntax-meta syntax-table syntax-markdown\"><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> List all servers and tool names <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n<span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli info &lt;server&gt;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Show tools with parameters <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n<span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli info &lt;server&gt; &lt;tool&gt;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Get tool JSON schema <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n<span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli grep &quot;&lt;pattern&gt;&quot;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Search tools by name <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n<span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli call &lt;server&gt; &lt;tool&gt; &#39;{}&#39;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Call tool with arguments <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n</span></span> \n<span class=\"syntax-meta syntax-paragraph syntax-markdown\"><span class=\"syntax-markup syntax-bold syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-bold syntax-begin syntax-markdown\">**</span>Both formats work:<span class=\"syntax-punctuation syntax-definition syntax-bold syntax-end syntax-markdown\">**</span></span> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>info &lt;server&gt; &lt;tool&gt;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> or <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>info &lt;server&gt;/&lt;tool&gt;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span>\n \n</span><span class=\"syntax-meta syntax-paragraph syntax-markdown\"><span class=\"syntax-markup syntax-bold syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-bold syntax-begin syntax-markdown\">**</span>Add <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>-d<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> to include descriptions<span class=\"syntax-punctuation syntax-definition syntax-bold syntax-end syntax-markdown\">**</span></span> (e.g., <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli info filesystem -d<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span>)\n \n</span><span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-begin syntax-markdown\">##</span> </span><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-entity syntax-name syntax-section syntax-markdown\">Workflow</span><span class=\"syntax-meta syntax-whitespace syntax-newline syntax-markdown\">\n</span></span></span> \n<span class=\"syntax-markup syntax-list syntax-numbered syntax-bullet syntax-markdown\">1<span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">.</span></span><span class=\"syntax-markup syntax-list syntax-numbered syntax-markdown\"> <span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\"><span class=\"syntax-markup syntax-bold syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-bold syntax-begin syntax-markdown\">**</span>Discover<span class=\"syntax-punctuation syntax-definition syntax-bold syntax-end syntax-markdown\">**</span></span>: <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> → see available servers and tools\n</span></span><span class=\"syntax-markup syntax-list syntax-numbered syntax-bullet syntax-markdown\">2<span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">.</span></span><span class=\"syntax-markup syntax-list syntax-numbered syntax-markdown\"><span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\"> <span class=\"syntax-markup syntax-bold syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-bold syntax-begin syntax-markdown\">**</span>Explore<span class=\"syntax-punctuation syntax-definition syntax-bold syntax-end syntax-markdown\">**</span></span>: <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli info &lt;server&gt;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> → see tools with parameters\n</span></span><span class=\"syntax-markup syntax-list syntax-numbered syntax-bullet syntax-markdown\">3<span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">.</span></span><span class=\"syntax-markup syntax-list syntax-numbered syntax-markdown\"><span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\"> <span class=\"syntax-markup syntax-bold syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-bold syntax-begin syntax-markdown\">**</span>Inspect<span class=\"syntax-punctuation syntax-definition syntax-bold syntax-end syntax-markdown\">**</span></span>: <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli info &lt;server&gt; &lt;tool&gt;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> → get full JSON input schema\n</span></span><span class=\"syntax-markup syntax-list syntax-numbered syntax-bullet syntax-markdown\">4<span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">.</span></span><span class=\"syntax-markup syntax-list syntax-numbered syntax-markdown\"><span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\"> <span class=\"syntax-markup syntax-bold syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-bold syntax-begin syntax-markdown\">**</span>Execute<span class=\"syntax-punctuation syntax-definition syntax-bold syntax-end syntax-markdown\">**</span></span>: <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>mcp-cli call &lt;server&gt; &lt;tool&gt; &#39;{}&#39;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> → run with arguments\n</span></span><span class=\"syntax-markup syntax-list syntax-numbered syntax-markdown\"> \n</span><span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-begin syntax-markdown\">##</span> </span><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-entity syntax-name syntax-section syntax-markdown\">Examples</span><span class=\"syntax-meta syntax-whitespace syntax-newline syntax-markdown\">\n</span></span></span> \n<span class=\"syntax-meta syntax-paragraph syntax-markdown\"><span class=\"syntax-markup syntax-raw syntax-code-fence syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-code-fence syntax-begin syntax-markdown\">```</span><span class=\"syntax-constant syntax-other syntax-language-name syntax-markdown\">bash</span>\n# List all servers and tool names\nmcp-cli\n \n# See all tools with parameters\nmcp-cli info filesystem\n \n# With descriptions (more verbose)\nmcp-cli info filesystem -d\n \n# Get JSON schema for specific tool\nmcp-cli info filesystem read_file\n \n# Call the tool\nmcp-cli call filesystem read_file &#39;{&quot;path&quot;: &quot;./README.md&quot;}&#39;\n \n# Search for tools\nmcp-cli grep &quot;*file*&quot;\n \n# Complex JSON with quotes (use heredoc or stdin)\nmcp-cli call server tool &lt;&lt;EOF\n{&quot;content&quot;: &quot;Text with &#39;quotes&#39; inside&quot;}\nEOF\n \n# Or pipe from a file/command\ncat args.json | mcp-cli call server tool\n \n# Chain: search and read first result\nmcp-cli call filesystem search_files &#39;{&quot;path&quot;: &quot;src/&quot;, &quot;pattern&quot;: &quot;*.ts&quot;}&#39; \\\n  | jq -r &#39;.content[0].text | split(&quot;\\n&quot;)[0]&#39; \\\n  | xargs -I {} mcp-cli call filesystem read_file &#39;{&quot;path&quot;: &quot;{}&quot;}&#39;\n<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-code-fence syntax-end syntax-markdown\">```\n</span></span> \n</span><span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-begin syntax-markdown\">##</span> </span><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-entity syntax-name syntax-section syntax-markdown\">Options</span><span class=\"syntax-meta syntax-whitespace syntax-newline syntax-markdown\">\n</span></span></span> \n<span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-meta syntax-table syntax-header syntax-markdown\"><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Flag <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Purpose <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n</span><span class=\"syntax-meta syntax-table syntax-header-separator syntax-markdown\"><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span><span class=\"syntax-punctuation syntax-section syntax-table-header syntax-markdown\">------</span><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span><span class=\"syntax-punctuation syntax-section syntax-table-header syntax-markdown\">---------</span><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n</span><span class=\"syntax-meta syntax-table syntax-markdown\"><span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>-d<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Include descriptions <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n<span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>-c &lt;path&gt;<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span> <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span> Custom config file path <span class=\"syntax-punctuation syntax-separator syntax-table-cell syntax-markdown\">|</span>\n</span></span> \n<span class=\"syntax-meta syntax-block-level syntax-markdown\"><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-heading syntax-begin syntax-markdown\">##</span> </span><span class=\"syntax-markup syntax-heading syntax-2 syntax-markdown\"><span class=\"syntax-entity syntax-name syntax-section syntax-markdown\">Exit Codes</span><span class=\"syntax-meta syntax-whitespace syntax-newline syntax-markdown\">\n</span></span></span> \n<span class=\"syntax-markup syntax-list syntax-unnumbered syntax-bullet syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">-</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-markdown\"> <span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\"><span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>0<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span>: Success\n</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-bullet syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">-</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-markdown\"><span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\"> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>1<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span>: Client error (bad args, missing config)\n</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-bullet syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">-</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-markdown\"><span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\"> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>2<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span>: Server error (tool failed)\n</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-bullet syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-list_item syntax-markdown\">-</span></span><span class=\"syntax-markup syntax-list syntax-unnumbered syntax-markdown\"><span class=\"syntax-meta syntax-paragraph syntax-list syntax-markdown\"> <span class=\"syntax-markup syntax-raw syntax-inline syntax-markdown\"><span class=\"syntax-punctuation syntax-definition syntax-raw syntax-begin syntax-markdown\">`</span>3<span class=\"syntax-punctuation syntax-definition syntax-raw syntax-end syntax-markdown\">`</span></span>: Network error\n</span></span></span></span></code></pre>\n<h2>Conclusion</h2>\n<p>The AI Agent space is moving incredibly fast. <code>mcp-cli</code> tries to solve context tool discovery problem turning it into an iterative, just-in-time process. It allows agents to access a massive ecosystem of shared capabilities without the context bloat of static integration. Whether used within a Skill or as a standalone utility, it ensures your agent spends its tokens on reasoning, not configuration.</p>\n<p>The project is open source and designed to fit into existing workflows. Give it a try and contribute at <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://github.com/philschmid/mcp-cli\">github.com/philschmid/mcp-cli</a>.</p>\n<hr />\n<p>Thanks for reading! If you have any questions or feedback, please let me know on <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://twitter.com/_philschmid\">Twitter</a> or <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://www.linkedin.com/in/philipp-schmid-a6a2bb196/\">LinkedIn</a>.</p>\n",
  "content_markdown": "> **Updated January 2026 for v0.3.0** — New 3-subcommand architecture (`info`, `grep`, `call`), connection pooling daemon, and tool filtering support.\n\nThe [Model Context Protocol (MCP)](https://modelcontextprotocol.io/docs/getting-started/intro) is an open standard for connecting AI agents to external tools, APIs, and data sources. However, as the ecosystem grows with more powerful MCP servers, developers and agent builders are hitting a scaling bottleneck: **context window bloat**.\n\n[mcp-cli](https://github.com/philschmid/mcp-cli) is a lightweight CLI that allows dynamic discovery of MCP, reducing token consumption while making tool interactions more efficient for AI coding agents.\n\nKey Features:\n\n- 🪶 Built on [Bun](https://bun.sh/), `mcp-cli` compiles to a single standalone binary.\n- 🔌 Works with both stdio (local) and HTTP (remote) MCP servers.\n- 🔍 Glob-based search across all servers `mcp-cli grep \"*mail*\" -d`.\n- 🤖 Designed for AI coding agents (Gemini CLI, Claude Code, etc.).\n- ⚡ Connection pooling with lazy-spawn daemon (60s idle timeout).\n- 🎛️ Tool filtering via `allowedTools` and `disabledTools` config.\n- � Server instructions support in output.\n- �💡 Structured error messages with recovery suggestions.\n\n## The Context Problem\n\nEvery MCP server comes with tool definitions schemas describing what each tool does, its parameters, types, and descriptions. Traditional MCP integration loads all of these schemas upfront into the agent's context window.\n\nHere's what that looks like in practice:\n\n![comparison](https://www.philschmid.de/static/blog/mcp-cli/comparison.jpeg)\n\n| Setup                   | Tokens Used     |\n| ----------------------- | --------------- |\n| 6 MCP servers, 60 tools | \\~47,000 tokens |\n| After dynamic discovery | \\~400 tokens    |\n\nThat is a **99% reduction** in MCP-related token usage for this scenario.\n\nWhen working with multiple MCP servers (GitHub, databases, browser automation—tool), definitions quickly consume a third or more of the effective context. This leads to:\n\n- **Reduced effective context length** for actual reasoning and code generation.\n- **More frequent context compactions** interrupting flow.\n- **Hard limits** on the number of simultaneous MCP servers you can use.\n- **Higher API costs** due to input token overhead.\n\n## Dynamic Context Discovery\n\nThe solution is dynamic context discovery. Instead of loading everything upfront (static context), agents pull in only the information they need, when they need it.\n\n![](https://www.philschmid.de/static/blog/mcp-cli/dynamic-discovery.jpg)\n\n`mcp-cli` implements this pattern for MCP:\n\n- Step 1: \"What servers exist?\" → `mcp-cli`\n- Step 2: \"What are the params for tool X?\" → `mcp-cli info github search_repositories`\n- Step 3: Execute → `mcp-cli call github search_repositories '{\"query\": \"mcp\"}'`\n\nMost Interactions only use a handful of tools, yet static loading consumes tokens for every tool definition. Dynamic discovery inverts this, you pay only for what you use.\n\n## Quick start\n\n[mcp-cli](https://github.com/philschmid/mcp-cli) allows dynamic discovery of MCP while making tool interactions more efficient for AI coding agents.\n\n### 1\\. Installation\n\nBash\n\n```bash\n# binary install\ncurl -fsSL https://raw.githubusercontent.com/philschmid/mcp-cli/main/install.sh | bash\n \n# requires bun install\nbun install -g https://github.com/philschmid/mcp-cli\n```\n\n### 2\\. Create a config file\n\nCreate `mcp_servers.json` in your current directory or `~/.config/mcp/`:\n\nJSON\n\n```json\n{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@modelcontextprotocol/server-filesystem\",\n        \".\"\n      ]\n    },\n    \"deepwiki\": {\n      \"url\": \"https://mcp.deepwiki.com/mcp\"\n    }\n  }\n}\n```\n\n### 3\\. Discover available tools\n\nBash\n\n```bash\n# List all servers and tools\nmcp-cli\n# deepwiki\n#  • read_wiki_structure\n#  • read_wiki_contents\n#  • ask_question\n#\n# filesystem\n#  • read_file\n#  • read_text_file\n#  • read_media_file\n#  • read_multiple_files\n# ...\n \n# With descriptions\n# mcp-cli -d\n```\n\n### 4\\. Call a tool\n\nBash\n\n```bash\n# View tool schema first\nmcp-cli info filesystem read_file\n# Tool: read_file\n# Server: filesystem\n#\n# Description:\n#  Read the complete contents of a file as text.\n#\n# Input Schema:\n# {\n#  \"type\": \"object\",\n#  \"properties\": {\n# ...\n```\n\n### 5\\. Execute the tool\n\nBash\n\n```bash\n# Call the tool\nmcp-cli call filesystem read_file '{\"path\": \"./README.md\"}'\n```\n\n### 6\\. Complex commands\n\nMCP CLI allows the model to generate commands that chain multiple tool calls together.\n\nBash\n\n```bash\n# Using a heredoc (no '-' needed with call subcommand)\nmcp-cli call server tool <<EOF\n{\"content\": \"Text with 'single quotes' and \\\"double quotes\\\"\"}\nEOF\n \n# From a file\ncat args.json | mcp-cli call server tool\n \n# Using jq to build complex JSON\njq -n '{query: \"mcp\", filters: [\"active\", \"starred\"]}' | mcp-cli call github search\n \n# Find all TypeScript files and read the first one\nmcp-cli call filesystem search_files '{\"path\": \"src/\", \"pattern\": \"*.ts\"}' \\\n  | jq -r '.content[0].text | split(\"\\n\")[0]' \\\n  | xargs -I {} mcp-cli call filesystem read_file '{\"path\": \"{}\"}'\n```\n\n## Tool Filtering\n\nYou can restrict which tools are available from a server using `allowedTools` and `disabledTools` in your config:\n\nJSON\n\n```json\n{\n  \"mcpServers\": {\n    \"filesystem\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \".\"],\n      \"allowedTools\": [\"read_file\", \"list_directory\"],\n      \"disabledTools\": [\"delete_file\"]\n    }\n  }\n}\n```\n\n**Rules:**\n\n- `allowedTools`: Only tools matching these patterns are available (supports glob: `*`, `?`)\n- `disabledTools`: Tools matching these patterns are excluded\n- `disabledTools` takes precedence over `allowedTools`\n- Filtering applies globally to all CLI operations (info, grep, call)\n\n**Examples:**\n\nBash\n\n```bash\n# Only allow read operations\n\"allowedTools\": [\"read_*\", \"list_*\", \"search_*\"]\n \n# Allow all except destructive operations\n\"disabledTools\": [\"delete_*\", \"write_*\", \"create_*\"]\n \n# Combine: allow file operations but disable delete\n\"allowedTools\": [\"*file*\"],\n\"disabledTools\": [\"delete_file\"]\n```\n\n## Connection Pooling\n\nBy default, `mcp-cli` uses lazy-spawn connection pooling to avoid repeated MCP server startup latency:\n\n- **Automatic**: No manual start/stop needed\n- **Per-server**: Each MCP server gets its own daemon\n- **Stale detection**: Config changes trigger re-spawn\n- **60s idle timeout**: Configurable via `MCP_DAEMON_TIMEOUT`\n\nControl via environment:\n\nBash\n\n```bash\nMCP_NO_DAEMON=1 mcp-cli info      # Force fresh connection\nMCP_DAEMON_TIMEOUT=120 mcp-cli    # 2 minute idle timeout\n```\n\n## Integrating with AI Agents\n\n`mcp-cli` is designed to be used with AI Agents and bash tools. There are two main ways to integrate it:\n\n### Option 1: System Instructions Integration\n\nAdd this to your AI agent's system prompt for direct CLI access:\n\nXml\n\n````xml\n## MCP Servers\n \nYou have access to MCP servers via the `mcp-cli` CLI.\n \nCommands:\n \n```bash\nmcp-cli info                        # List all servers\nmcp-cli info <server>               # Show server tools  \nmcp-cli info <server> <tool>        # Get tool schema\nmcp-cli grep \"<pattern>\"            # Search tools\nmcp-cli call <server> <tool>        # Call tool (stdin auto-detected)\nmcp-cli call <server> <tool> '{}'   # Call with JSON args\n```\n \n**Both formats work:** `info <server> <tool>` or `info <server>/<tool>`\n \nWorkflow:\n \n1. **Discover**: `mcp-cli info` to see available servers\n2. **Inspect**: `mcp-cli info <server> <tool>` to get the schema\n3. **Execute**: `mcp-cli call <server> <tool> '{}'` with arguments\n \n### Examples\n \n```bash\n# Call with inline JSON\nmcp-cli call github search_repositories '{\"query\": \"mcp server\"}'\n \n# Pipe from stdin (no '-' needed)\necho '{\"path\": \"./file\"}' | mcp-cli call filesystem read_file\n \n# Heredoc for complex JSON\nmcp-cli call server tool <<EOF\n{\"content\": \"Text with 'quotes'\"}\nEOF\n```\n````\n\n### Option 2: Agent Skills\n\nFor AI agents that support [Agent Skills](https://agentskills.io/home) an upcoming standard for extending coding agents. mcp-cli ships with a ready-to-use skill definition.\n\nCreate `mcp-cli/SKILL.md` in your agent's skills directory:\n\nMarkdown\n\n````markdown\n---\nname: mcp-cli\ndescription: Interface for MCP (Model Context Protocol) servers via CLI. Use when you need to interact with external tools, APIs, or data sources through MCP servers.\n---\n \n# MCP-CLI\n \nAccess MCP servers through the command line. MCP enables interaction with external systems like GitHub, filesystems, databases, and APIs.\n \n## Commands\n \n| Command | Output |\n|---------|--------|\n| `mcp-cli` | List all servers and tool names |\n| `mcp-cli info <server>` | Show tools with parameters |\n| `mcp-cli info <server> <tool>` | Get tool JSON schema |\n| `mcp-cli grep \"<pattern>\"` | Search tools by name |\n| `mcp-cli call <server> <tool> '{}'` | Call tool with arguments |\n \n**Both formats work:** `info <server> <tool>` or `info <server>/<tool>`\n \n**Add `-d` to include descriptions** (e.g., `mcp-cli info filesystem -d`)\n \n## Workflow\n \n1. **Discover**: `mcp-cli` → see available servers and tools\n2. **Explore**: `mcp-cli info <server>` → see tools with parameters\n3. **Inspect**: `mcp-cli info <server> <tool>` → get full JSON input schema\n4. **Execute**: `mcp-cli call <server> <tool> '{}'` → run with arguments\n \n## Examples\n \n```bash\n# List all servers and tool names\nmcp-cli\n \n# See all tools with parameters\nmcp-cli info filesystem\n \n# With descriptions (more verbose)\nmcp-cli info filesystem -d\n \n# Get JSON schema for specific tool\nmcp-cli info filesystem read_file\n \n# Call the tool\nmcp-cli call filesystem read_file '{\"path\": \"./README.md\"}'\n \n# Search for tools\nmcp-cli grep \"*file*\"\n \n# Complex JSON with quotes (use heredoc or stdin)\nmcp-cli call server tool <<EOF\n{\"content\": \"Text with 'quotes' inside\"}\nEOF\n \n# Or pipe from a file/command\ncat args.json | mcp-cli call server tool\n \n# Chain: search and read first result\nmcp-cli call filesystem search_files '{\"path\": \"src/\", \"pattern\": \"*.ts\"}' \\\n  | jq -r '.content[0].text | split(\"\\n\")[0]' \\\n  | xargs -I {} mcp-cli call filesystem read_file '{\"path\": \"{}\"}'\n```\n \n## Options\n \n| Flag | Purpose |\n|------|---------|\n| `-d` | Include descriptions |\n| `-c <path>` | Custom config file path |\n \n## Exit Codes\n \n- `0`: Success\n- `1`: Client error (bad args, missing config)\n- `2`: Server error (tool failed)\n- `3`: Network error\n````\n\n## Conclusion\n\nThe AI Agent space is moving incredibly fast. `mcp-cli` tries to solve context tool discovery problem turning it into an iterative, just-in-time process. It allows agents to access a massive ecosystem of shared capabilities without the context bloat of static integration. Whether used within a Skill or as a standalone utility, it ensures your agent spends its tokens on reasoning, not configuration.\n\nThe project is open source and designed to fit into existing workflows. Give it a try and contribute at [github.com/philschmid/mcp-cli](https://github.com/philschmid/mcp-cli).\n\n* * *\n\nThanks for reading! If you have any questions or feedback, please let me know on [Twitter](https://twitter.com/_philschmid) or [LinkedIn](https://www.linkedin.com/in/philipp-schmid-a6a2bb196/).\n",
  "dateCreated": "2026-09-27T19:29:15.293681927+00:00",
  "date_created": "2026-01-09T00:00:00+00:00",
  "date_modified": "2026-01-09T00:00:00+00:00",
  "date_published": "2026-01-09T00:00:00+00:00",
  "description": "Mcp-cli is a lightweight CLI that allows dynamic discovery of MCP, reducing token consumption while making tool interactions more efficient for AI coding agents.",
  "external_url": "https://www.philschmid.de/mcp-cli",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/philschmid-de/2026/01/2026-01-09-introducing-mcp-cli-a-way-to-call-mcp-servers-efficiently.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/philschmid-de/2026/01/2026-01-09-introducing-mcp-cli-a-way-to-call-mcp-servers-efficiently.md"
  },
  "id": "urn:aggr:item:54aa265c5d4dc1a397025077c08ad129491fb14a",
  "isBasedOn": {
    "@id": "https://www.philschmid.de/mcp-cli"
  },
  "mainEntity": {
    "@id": "https://www.philschmid.de/mcp-cli",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/philschmid-de/2026-01-09-introducing-mcp-cli-a-way-to-call-mcp-servers-efficiently/#webpage"
    },
    "dateModified": "2026-01-09T00:00:00+00:00",
    "datePublished": "2026-01-09T00:00:00+00:00",
    "headline": "Introducing MCP CLI: A way to call MCP Servers Efficiently",
    "timeRequired": "PT7M",
    "url": "https://www.philschmid.de/mcp-cli",
    "wordCount": 1436
  },
  "name": "Archived snapshot: Introducing MCP CLI: A way to call MCP Servers Efficiently",
  "preview": null,
  "reading_minutes": 7,
  "replicated_at": null,
  "source": "philschmid-de",
  "source_name": "philschmid.de - RSS feed",
  "summary": "Mcp-cli is a lightweight CLI that allows dynamic discovery of MCP, reducing token consumption while making tool interactions more efficient for AI coding agents.",
  "tags": [],
  "temporalCoverage": "2026-09-27T19:29:15.293681927+00:00",
  "title": "Introducing MCP CLI: A way to call MCP Servers Efficiently",
  "url": "https://aggr.aymericbeaumet.com/items/philschmid-de/2026-01-09-introducing-mcp-cli-a-way-to-call-mcp-servers-efficiently/",
  "word_count": 1436
}