Vytvořeno: 6.5.2026 | Aktualizováno: 06.05.2026 05:35
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 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 mcporter na npm a přes Homebrew; licence MIT.
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.
mcporter funguje ihned přes npx bez globální instalace:
npx mcporter list
Pro globální instalaci:
npm install -g mcporter # nebo pnpm add -g mcporter
Přes Homebrew:
brew tap steipete/tap brew install steipete/tap/mcporter
# 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
mcporter zobrazí nástroje ve formátu TypeScript signatur – je tak jasné, jak nástroj volat:
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);
mcporter podporuje tři syntaxe pro volání – všechny jsou ekvivalentní:
# 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!'
Pokud zadáš špatný název nástroje, mcporter automaticky navrhne správný (fuzzy matching s Did you mean …?).
mcporter umí volat libovolný MCP endpoint bez toho, aby byl v config souboru:
# 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
Jedna z klíčových funkcí: generate-cli převede definici MCP serveru na samostatné CLI:
# 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
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:
npx mcporter inspect-cli dist/context7.js npx mcporter generate-cli --from dist/context7.js
Pro jednoduché použití z kódu slouží callOnce:
import { callOnce } from 'mcporter';
const result = await callOnce({
server: 'firecrawl',
toolName: 'crawl',
args: { url: 'https://anthropic.com' },
});
console.log(result);
callOnce automaticky nalezne server v existujících konfiguracích, zpracuje OAuth a uzavře transport po dokončení.
Pokud voláš nástroje opakovaně nebo potřebuješ connection pooling, použij createRuntime:
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();
createServerProxy obalí MCP server do objektu s camelCase metodami:
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());
Výsledky jsou zabaleny do CallResult s pomocnými metodami .text(), .markdown(), .json(), .images().
emit-ts generuje .d.ts rozhraní nebo klientské wrappery pro volání MCP serverů se statickými typy:
# 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
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:
# Stav daemonu mcporter daemon status # Ruční ovládání mcporter daemon start mcporter daemon stop mcporter daemon restart
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.
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:
{
"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"]
}
Konfigurace lze spravovat přes CLI bez ručního editování JSON:
mcporter config list mcporter config add notion https://mcp.notion.com/mcp --auth oauth mcporter config remove notion
Pro každý server lze omezit přístupné nástroje:
{
"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"]
}
}
}
mcporter a 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 | 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:
.d.ts typynpx mcporter list bez instalacemcpc je lepší volba, pokud:
Bash()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.