cli2mcp
cli2mcp
Status: v0.1 — frühe Veröffentlichung. Nur Stdio-Transport. APIs können sich vor 1.0 noch ändern.
Stellen Sie jedes Befehlszeilen-Binary als Model Context Protocol-Tool bereit, indem Sie dessen --help-Ausgabe parsen und beim Start ein JSON-Schema synthetisieren. Ein Befehl, kein Boilerplate.
Funktioniert mit jedem MCP-kompatiblen Client — Claude Desktop, ChatGPT (via OpenAI Agents SDK), Cursor, Gemini CLI, Cline, Windsurf, Continue, Zed und allem anderen, das den MCP stdio transport unterstützt.
npx cli2mcp <command>Warum
Das Schreiben eines MCP-Servers für ein CLI, das Sie bereits besitzen, ist mechanische Arbeit: SDK instanziieren, Tool registrieren, Eingabeschema von Hand schreiben, Argumente marshallen, Subprozess starten, Ausgabe formatieren. Etwa 80–150 Zeilen TypeScript pro Binary, die sich immer wiederholen, wenn neue Tools herauskommen.
cli2mcp erledigt das mit einem Befehl. Das --help des CLIs selbst ist die Quelle der Wahrheit für das Schema — wenn rg morgen ein Flag hinzufügt, sieht die KI es morgen ohne Codeänderungen.
Related MCP server: MCP-OpenAPI
Installation
npm install -g cli2mcp
# or invoke without installing
npx cli2mcp <command>Erfordert Node.js 22+.
Konfigurieren Sie Ihren MCP-Client
cli2mcp wird von Ihrem Client als Stdio-Subprozess gestartet. Fügen Sie einen Eintrag pro CLI hinzu, das Sie bereitstellen möchten.
Claude Desktop
Speicherort der Konfigurationsdatei:
OS | Pfad |
macOS |
|
Windows |
|
Linux |
|
{
"mcpServers": {
"ripgrep": {
"command": "npx",
"args": ["-y", "cli2mcp", "rg", "--name", "ripgrep"]
},
"jq": {
"command": "npx",
"args": ["-y", "cli2mcp", "jq"]
}
}
}Starten Sie Claude Desktop nach dem Bearbeiten neu.
Andere Clients
Client | Konfigurationsdatei | Format |
ChatGPT (OpenAI Agents SDK) |
|
|
Cursor |
| Gleicher |
Cline | VS Code → Cline → MCP Settings → | Gleicher |
Windsurf |
| Gleicher |
Gemini CLI |
| Gleicher |
Continue |
| Gleicher Launcher |
Zed |
| Gleicher Launcher |
Jeder stdio-fähige MCP-Client | gemäß der Dokumentation des Clients | Gleicher Launcher: |
Beziehen Sie sich auf die Dokumentation des jeweiligen Clients für den genauen Konfigurationspfad auf Ihrer Plattform — diese entwickeln sich weiter und es gibt keine Garantie, dass sie mit der obigen Tabelle übereinstimmen.
Schnelle Erfolge — Copy-Paste-Konfigurationen
Fügen Sie einen dieser Blöcke in den mcpServers-Block Ihres Clients ein (Pfade siehe oben pro Client). Jeder davon verpackt ein beliebtes CLI als MCP-Tool, das eine KI direkt aufrufen kann.
{
"mcpServers": {
"ripgrep": {
"command": "npx",
"args": ["-y", "cli2mcp", "rg", "--name", "ripgrep",
"--description", "Recursively search files with regex"]
},
"jq": {
"command": "npx",
"args": ["-y", "cli2mcp", "jq",
"--description", "Query and transform JSON via stdin"]
},
"pandoc": {
"command": "npx",
"args": ["-y", "cli2mcp", "pandoc",
"--description", "Convert documents between markup formats"]
},
"sqlite3": {
"command": "npx",
"args": ["-y", "cli2mcp", "sqlite3",
"--description", "Run SQL against a SQLite database file",
"--cwd", "/path/to/safe/dir"]
},
"yt-dlp": {
"command": "npx",
"args": ["-y", "cli2mcp", "yt-dlp",
"--description", "Download media from URLs",
"--cwd", "/path/to/downloads",
"--timeout", "300000"]
}
}
}Jedes CLI muss bereits installiert sein und sich im
PATHbefinden.cli2mcpinstalliert diese nicht für Sie.
Vergleich
Ansatz | LOC pro CLI | Umgang mit neuen Flags | Wartung |
Handgeschriebener MCP-Server (TypeScript SDK) | ~80–150 | manuelle Schema-Bearbeitung | pro-CLI Release-Zyklus |
OpenAPI → MCP Generatoren | n/a | erfordert eine OpenAPI-Spezifikation | deckt keine beliebigen CLIs ab |
| ~10 | n/a — gibt der KI eine Shell | unsicher, kein Schema, keine Sandbox |
| 0 | automatisch beim nächsten Start | keine — liest |
Der nächste Nachbar ist FastMCPs from_openapi — es deckt keine beliebigen CLI-Binaries ab. Stand April 2026 gibt es kein anderes veröffentlichtes Tool, das eine beliebige --help-Ausgabe mit einem Befehl in ein typisiertes MCP-Tool verwandelt.
Verifizierte Ziele
Diese CLIs werden durch die Test-Suite abgedeckt oder wurden manuell von Ende zu Ende getestet:
CLI | Status | Notizen |
| ✅ getestet | help-on-stderr korrekt erfasst; |
| ✅ getestet | 90+ Flags abgeleitet; |
| ✅ Fixture | Form-Extraktion gegen gebündeltes Fixture validiert |
| ✅ Integrationstest | Ende-zu-Ende MCP-Handshake + |
Andere POSIX-artige CLIs (z. B. ffmpeg, yt-dlp, pandoc, sqlite3, imagemagick) sollten voraussichtlich funktionieren, sind aber noch nicht durch Tests abgedeckt. Melden Sie Fehler in den Issues.
Wie --help zu einem JSON-Schema wird
Hilfe-Fragment | MCP-Eigenschaft | ||
|
| ||
|
| ||
|
| ||
`--flag <a | b | c>` |
|
Wiederholbares Flag |
| ||
Positionale Argumente |
| ||
Reservierte Eingabe |
|
Wenn das Parsen bei einem unkonventionellen --help fehlschlägt, greift cli2mcp auf ein einzelnes variadisches args-Positional zurück, sodass das Tool weiterhin nutzbar ist — das Modell erhält lediglich eine freie Argumentliste anstelle von typisierten Flags.
Optionen
cli2mcp <command> [options]
--name <name> Tool name shown to the AI (default: <command>)
--description <text> Tool description shown to the AI (default: first --help line)
--timeout <ms> Subprocess timeout per call (default: 60000)
--cwd <path> Working directory for subprocess (default: process.cwd())
--env <KEY=VALUE> Extra environment variables (repeatable)
--stderr <mode> stderr handling:
include → appended to tool output (default)
drop → discarded
error → any stderr → isError: true
-h, --help Show helpPiping von stdin
Die reservierte Eingabeeigenschaft stdin wird an den Subprozess weitergeleitet:
{ "args": [".name"], "stdin": "{\"name\": \"cli2mcp\"}" }Funktionsweise
cli2mcp rg
│
├─ 1. spawn: rg --help → capture stdout + stderr
├─ 2. parse help text → CliShape { flags, positionals, description }
├─ 3. synthesize JSON Schema → inputSchema
├─ 4. register one MCP tool → name: "rg", schema: <above>
└─ 5. start stdio MCP server → await client connection
On tools/call:
{ args, flags, stdin? } → argv builder → execa(rg, argv, { stdin })
│
stdout (+ stderr) → content[text]Nicht-null-Exit → { isError: true, content: [{ type: "text", text: <stderr> }] } (außer --stderr drop).
Sicherheit
cli2mcp ermöglicht es einem KI-Agenten, die von Ihnen bereitgestellten CLIs mit den vom Agenten gewählten Argumenten aufzurufen. Sie sind dafür verantwortlich, was diese CLIs auf Ihrem Computer tun können.
Praktische Hinweise:
Stellen Sie nur CLIs bereit, deren Wirkungsbereich Sie akzeptieren.
jq,rg,pandocsind weitgehend sicher (schreibgeschützt, deterministisch).curl,ffmpeg --output,sqlite3,rm,kubectl,awssind es nicht.Die KI ist nicht in einer Sandbox. Ein Prompt-Injection-Angriff könnte dazu führen, dass ein bereitgestelltes
curlevil.example.comabruft, ein bereitgestelltesrmDateien löscht usw.Verwenden Sie
--cwd, um den Dateisystembereich einzuschränken, wenn Sie CLIs verpacken, die auf Dateien zugreifen.Verwenden Sie
--envbewusst. Geben Sie keine Anmeldeinformationen weiter, auf die das Modell nicht zugreifen sollte.Stellen Sie niemals
sh,bash,zsh,python -coder irgendetwas mit eval-Semantik bereit — das umgeht alle Sicherheitsvorkehrungen, diecli2mcpbietet.
Das Schema-aus-Hilfe-Design reduziert das Risiko von fehlerhaftem argv, aber es eliminiert nicht das Risiko des Missbrauchs. Behandeln Sie jedes bereitgestellte CLI als delegierte Fähigkeit, nicht als Sandbox.
Fehlerbehebung
Das CLI hat kein --help-Flag.
cli2mcp startet trotzdem mit einem einzelnen args-Positional. Die KI kann Argumente frei übergeben; Sie verlieren die typisierte Flag-Ableitung.
Das Schema ist leer / falsch.
Führen Sie cli2mcp <command> manuell aus und untersuchen Sie die tools/list-Antwort (verwenden Sie npx @modelcontextprotocol/inspector). Die häufigste Ursache ist eine nicht standardmäßige Hilfe-Formatierung (keine --long-form-Flags, falsch ausgerichtete Spalten). Eröffnen Sie ein Issue mit der angehängten <command> --help-Ausgabe.
Der Subprozess hängt.
Das Standard-Timeout von 60s beendet ihn. Erhöhen Sie es über --timeout. Wenn Ihr CLI interaktiv ist (auf ein TTY wartet), kann cli2mcp nicht helfen — leiten Sie die Eingabe stattdessen über stdin weiter.
Flag wird nicht übergeben.
Setzen Sie --stderr include (Standard) und untersuchen Sie content[].text. Wenn das Flag nicht in argv erscheint, konnte der Hilfe-Parser es nicht extrahieren — erstellen Sie ein Issue.
Mitwirken
Fehlerberichte und Patches sind willkommen. Fixtures für neue CLIs (test/fixtures/help/<cli>.txt + ein Form-Test) sind die Beiträge mit der größten Hebelwirkung.
pnpm install
pnpm test # vitest
pnpm typecheck # tsc --noEmit
pnpm lint # biome checkStar-Verlauf
Wenn cli2mcp Ihnen einen Nachmittag Arbeit beim Schreiben von MCP-Boilerplate erspart hat, hilft ein Stern anderen Leuten, es zu finden.
Autor
Erstellt von Ronie Neubauer — Principal Engineer, über 22 Jahre Erfahrung in der Bereitstellung von Produktionssystemen.
GitHub: @RonieNeubauer
Blog: ronieneubauer.com
Issues & Ideen: github.com/RonieNeubauer/cli2mcp/discussions
Lizenz
MIT © 2026 Ronie Neubauer.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseBqualityFmaintenanceCommand line interface with secure execution and customizable security policies2177MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that exposes HTTP methods defined in an OpenAPI specification as tools, enabling interaction with APIs via the Model Context Protocol.8MIT
- AlicenseCqualityDmaintenanceA CLI command execution server that enables running shell commands with structured output, providing detailed execution results including stdout, stderr, exit code, and execution duration.23512MIT
- FlicenseNot gradedqualityDmaintenanceA server implementation for the Model Context Protocol (MCP) that allows Claude AI to execute commands through a command-line interface, enabling direct system interactions from within Claude.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/RonieNeubauer/cli2mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server