Zobrazit stránkuStarší verzeZpětné odkazyNahoru Tato stránka je pouze pro čtení. Můžete si pouze prohlédnout zdrojový kód, ale ne ho měnit. Zeptejte se správce, pokud si myslíte, že něco není v pořádku. ====== mcporter – TypeScript toolkit pro MCP ====== //Vytvořeno: **6.5.2026** | Aktualizováno: **~~LASTMOD~~**// [[https://github.com/openclaw/mcporter|mcporter]] je open-source TypeScript runtime, CLI a generátor kódu pro Model Context Protocol (MCP). Umožňuje volat MCP servery přímo z terminálu nebo z TypeScript kódu, generovat z nich standalone CLI nástroje nebo typované klientské wrappery – bez ručního psaní boilerplate nebo procházení schematu. Projekt vytvořil [[https://github.com/steipete|Peter Steinberger]], primárně pro vývojáře kteří chtějí MCP servery pohodlně volat z kódu, skládat automatizace a generovat artefakty z jejich definic. Distribuován je jako balíček [[https://www.npmjs.com/package/mcporter|mcporter na npm]] a přes Homebrew; licence MIT. ===== Proč mcporter ===== Projekt vychází z Anthropic doporučení pro „code execution" workflow – tedy přístupu, kdy AI agent volá nástroje přes shellový příkaz místo přes konfiguraci MCP klienta. mcporter se na tuto filozofii napojuje tím, že MCP server zpřístupňuje jako CLI příkaz, TypeScript API nebo vygenerovaný standalone binary. Klíčová výhoda: mcporter **automaticky čte existující konfigurace** MCP serverů z Claude Code, Cursor, Codex, Windsurf, OpenCode a VS Code. Nemusíš nic přepisovat – stačí spustit ''npx mcporter list'' a hned vidíš všechny servery, které máš nakonfigurované v těchto nástrojích. ===== Instalace ===== mcporter funguje ihned přes ''npx'' bez globální instalace: <code bash> npx mcporter list </code> Pro globální instalaci: <code bash> npm install -g mcporter # nebo pnpm add -g mcporter </code> Přes Homebrew: <code bash> brew tap steipete/tap brew install steipete/tap/mcporter </code> ===== Základní použití ===== ==== Výpis dostupných serverů a nástrojů ==== <code bash> # Výpis všech nakonfigurovaných serverů npx mcporter list # Výpis nástrojů konkrétního serveru (TypeScript-style signatury) npx mcporter list linear # Výpis se všemi parametry včetně volitelných npx mcporter list linear --all-parameters # JSON výstup pro strojové zpracování npx mcporter list linear --json </code> mcporter zobrazí nástroje ve formátu TypeScript signatur – je tak jasné, jak nástroj volat: <code> linear - Hosted Linear MCP; exposes issue search, create, and workflow tooling. 23 tools · 1654ms · HTTP https://mcp.linear.app/mcp /** * Create a comment on a specific Linear issue * @param issueId The issue ID * @param body The content of the comment as Markdown */ function create_comment(issueId: string, body: string, parentId?: string); </code> ==== Volání nástrojů ==== mcporter podporuje tři syntaxe pro volání – všechny jsou ekvivalentní: <code bash> # Colon-delimited (shell-friendly) npx mcporter call linear.create_comment issueId:ENG-123 body:'Looks good!' # Function-call styl (stejný jako v mcporter list výstupu) npx mcporter call 'linear.create_comment(issueId: "ENG-123", body: "Looks good!")' # Zkratka – bez slovesa call npx mcporter linear.create_comment issueId:ENG-123 body:'Looks good!' </code> Pokud zadáš špatný název nástroje, mcporter automaticky navrhne správný (fuzzy matching s ''Did you mean …?''). ==== Ad-hoc servery bez konfigurace ==== mcporter umí volat libovolný MCP endpoint bez toho, aby byl v config souboru: <code bash> # Připojení přes URL npx mcporter list --http-url https://mcp.linear.app/mcp --name linear # Lokální stdio server npx mcporter call --stdio "bun run ./local-server.ts" --name local-tools # Uložení definice pro opakované použití npx mcporter list --http-url https://mcp.example.com/mcp --name myserver --persist config/mcporter.json </code> ===== Generování standalone CLI ===== Jedna z klíčových funkcí: ''generate-cli'' převede definici MCP serveru na samostatné CLI: <code bash> # Z URL serveru npx mcporter generate-cli --command https://mcp.context7.com/mcp # Ze stdio příkazu npx mcporter generate-cli --command "npx -y chrome-devtools-mcp@latest" # S kompilací do binárního souboru (Bun) npx mcporter generate-cli --command https://mcp.context7.com/mcp --compile # Pouze vybrané nástroje npx mcporter generate-cli linear --include-tools create_issue,list_issues </code> Výstupem jsou soubory ''context7.ts'' (TypeScript šablona) a volitelně ''context7.js'' (bundlovaný CLI). Každý vygenerovaný artifact obsahuje regenerační metadata – lze ho snadno přegenerovat po aktualizaci serveru: <code bash> npx mcporter inspect-cli dist/context7.js npx mcporter generate-cli --from dist/context7.js </code> ===== TypeScript API ===== ==== Jednorázové volání ==== Pro jednoduché použití z kódu slouží ''callOnce'': <code typescript> import { callOnce } from 'mcporter'; const result = await callOnce({ server: 'firecrawl', toolName: 'crawl', args: { url: 'https://anthropic.com' }, }); console.log(result); </code> ''callOnce'' automaticky nalezne server v existujících konfiguracích, zpracuje OAuth a uzavře transport po dokončení. ==== Runtime pro opakované volání ==== Pokud voláš nástroje opakovaně nebo potřebuješ connection pooling, použij ''createRuntime'': <code typescript> import { createRuntime } from 'mcporter'; const runtime = await createRuntime(); const tools = await runtime.listTools('context7'); const result = await runtime.callTool('context7', 'resolve-library-id', { args: { libraryName: 'react' }, }); await runtime.close(); </code> ==== Proxy API pro typové volání ==== ''createServerProxy'' obalí MCP server do objektu s camelCase metodami: <code typescript> import { createRuntime, createServerProxy } from 'mcporter'; const runtime = await createRuntime(); const chrome = createServerProxy(runtime, 'chrome-devtools'); const linear = createServerProxy(runtime, 'linear'); const snapshot = await chrome.takeSnapshot(); console.log(snapshot.text()); const docs = await linear.searchDocumentation({ query: 'automations' }); console.log(docs.json()); </code> Výsledky jsou zabaleny do ''CallResult'' s pomocnými metodami ''.text()'', ''.markdown()'', ''.json()'', ''.images()''. ===== Generování TypeScript typů ===== ''emit-ts'' generuje ''.d.ts'' rozhraní nebo klientské wrappery pro volání MCP serverů se statickými typy: <code bash> # Pouze typy npx mcporter emit-ts linear --out types/linear-tools.d.ts # Typový klient (d.ts + helper wrapper) npx mcporter emit-ts linear --mode client --out clients/linear.ts # S volitelným i= parametry npx mcporter emit-ts linear --include-optional </code> ===== Daemon pro stavové servery ===== Servery jako Chrome DevTools nebo mobile-mcp potřebují udržovat stav mezi voláními (otevřené záložky, připojené zařízení). mcporter pro ně automaticky spustí background daemon: <code bash> # Stav daemonu mcporter daemon status # Ruční ovládání mcporter daemon start mcporter daemon stop mcporter daemon restart </code> Ostatní servery zůstávají ephemeral; daemon lze vynutit pro konkrétní server přes ''\"lifecycle\": \"keep-alive\"'' v konfiguraci nebo proměnnou prostředí ''MCPORTER_KEEPALIVE=nazev''. ===== Konfigurace ===== mcporter čte konfiguraci v tomto pořadí: ''--config'' flag → ''MCPORTER_CONFIG'' → ''config/mcporter.json'' → ''~/.mcporter/mcporter.json''. Formát sdílí strukturu s Cursor/Claude config soubory a podporuje importy z nich: <code json> { "mcpServers": { "context7": { "baseUrl": "https://mcp.context7.com/mcp" }, "chrome-devtools": { "command": "npx", "args": ["-y", "chrome-devtools-mcp@latest"] } }, "imports": ["claude-code", "cursor", "codex", "windsurf", "opencode", "vscode"] } </code> Konfigurace lze spravovat přes CLI bez ručního editování JSON: <code bash> mcporter config list mcporter config add notion https://mcp.notion.com/mcp --auth oauth mcporter config remove notion </code> ==== Filtrování nástrojů ==== Pro každý server lze omezit přístupné nástroje: <code json> { "mcpServers": { "slack-readonly": { "baseUrl": "https://example.com/slack/mcp", "allowedTools": ["channels_list", "conversations_history"] }, "filesystem-safe": { "command": "npx -y @modelcontextprotocol/server-filesystem ~/Downloads", "blockedTools": ["write_file", "delete_file"] } } } </code> ===== mcporter vs. mcpc ===== mcporter a [[ai:mcp:nastroje:mcpc|mcpc (apify/mcpc)]] se na první pohled překrývají – oba umožňují volat MCP servery z příkazové řádky. Cílí ale na jiné problémy a jiné uživatele. ^ Vlastnost ^ mcporter ^ [[ai:mcp:nastroje:mcpc|mcpc]] ^ | **Primární cílová skupina** | TypeScript vývojáři | AI agenti (Claude Code, OpenCode…) | | **Architektura** | npx toolkit, žádný trvalý démon | bridge démon + CLI obálka | | **Auto-discovery konfigurací** | ✅ čte Claude Code, Cursor, Codex, VS Code… | ❌ ruční ''mcpc connect'' | | **Generování CLI z MCP serveru** | ✅ ''generate-cli'' | ❌ | | **TypeScript typy a proxy API** | ✅ ''emit-ts'', ''createServerProxy'' | ❌ | | **Izolace credentials od AI** | ❌ | ✅ OS keychain + IPC, AI nevidí tokeny | | **Sandbox proxy režim** | ❌ | ✅ ''mcpc connect --proxy'' | | **Použití bez instalace** | ✅ ''npx mcporter call …'' | ❌ vyžaduje global install | | **x402 mikroplatby** | ❌ | ✅ | | **Daemon pro stavové servery** | ✅ ''mcporter daemon'' | ✅ bridge | **mcporter** je lepší volba, pokud: * Píšeš TypeScript aplikaci, která potřebuje volat MCP nástroje typově * Chceš z MCP serveru vygenerovat samostatné CLI nebo ''.d.ts'' typy * Potřebuješ rychle otestovat, co server nabízí – ''npx mcporter list'' bez instalace **mcpc** je lepší volba, pokud: * Nasazuješ AI agenta (Claude Code, OpenCode), který volá MCP přes ''Bash()'' * Záleží ti na tom, aby AI nikdy neviděla přihlašovací tokeny * Sdílíš jednu instanci Playwright MCP nebo jiného stavového serveru přes více projektů Oba projekty jsou aktivně vyvíjené a vzájemně se nevylučují – mcporter se hodí spíše ve fázi vývoje a integrace, mcpc ve fázi produkčního nasazení agenta. ===== Zdroje ===== * [[https://github.com/openclaw/mcporter|mcporter na GitHubu (openclaw/mcporter)]] * [[https://www.npmjs.com/package/mcporter|mcporter na npm]] * [[ai:mcp:nastroje:mcpc|mcpc – univerzální CLI klient pro MCP (apify)]] – srovnávaný projekt ai/mcp/nastroje/mcporter.txt Poslední úprava: 06.05.2026 05:35autor: Petr Nosek