Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
ai:mcp:nastroje:mcpc [05.05.2026 09:47] – Nový článek: mcpc – univerzální CLI klient pro MCP Petr Nosekai:mcp:nastroje:mcpc [10.05.2026 20:06] (aktuální) – Uprava instalace mcpc pres Bun bez sudo Petr Nosek
Řádek 1: Řádek 1:
-====== mcpc – univerzální CLI klient pro MCP ======+====== mcpc — univerzální CLI klient pro MCP ======
  
 //Vytvořeno: **5.5.2026** | Aktualizováno: **~~LASTMOD~~**// //Vytvořeno: **5.5.2026** | Aktualizováno: **~~LASTMOD~~**//
  
-[[https://github.com/apify/mcpc|mcpc]] je open-source CLI klient pro Model Context Protocol (MCP), který vytvořil [[https://apify.com|Apify]]. Umožňuje komunikovat s MCP servery ímo z příkazové řádky – jak interaktivně pro testování a laděnítak programaticky pro použití v AI agentech shellových skriptech.+[[https://github.com/apify/mcpc|mcpc]] je open-source CLI klient pro [[https://modelcontextprotocol.io/specification/latest|Model Context Protocol]], který vytvořil [[https://apify.com|Apify]]. Tento článek pokrývá nejen co mcpc je, ale edevším **jak ho prakticky nasadit** jako centralizovaný hub pro MCP servery napříč AI nástroji (Claude CodeOpenCode), aby každý nový stroj šel nastavit za pár minut aby byly tajnosti bezpečně izolované.
  
-===== Proč mcpc vznikl =====+===== TL;DR =====
  
-Kolem MCP a CLI nástrojů existuje staré pnutí: AI agenti někdy preferují CLIprotožho znají „nazpaměť", spouštějí nástroje jako kód přes ''Bash()'' a nepotřebují nahrávat veškerou dokumentaci do kontextu najednou. MCP oproti tomu nabízí standardní protokol pro autentizaci, transport a přístup ke zdrojům – to CLI tradičně postrádá.+<code> 
 +~/.config/mcpc/ 
 +├── mcp.json       # všechny serverysecrets jako ${VAR} 
 +├── secrets.env    # API klíče (mode 0600) 
 +└── README.md      # lokální dokumentace
  
-Autoři projektu toto dilema pojmenovali přesně: problém není v MCP samotném, ale v tom, jak ho klienti implementují. Většina MCP klientů načítá všechny nástroje i jejich výsledky do kontextu najednou, což zbytečně zvyšuje cenu a způsobuje context rot. mcpc navrhuje jiný přístup: **kombinovat silné stránky obou světů** – MCP pro standardizovaný vzdálený přístup, CLI pro lokální rozhraní agenta.+~/.bashrc                       # bash funkce mcpc() — subshell izolace tajností 
 +~/.config/opencode/AGENTS.md    # registr serverů + quick start (sdílen s ~/.claude/CLAUDE.md) 
 +</code>
  
-Projekt byl představen na Vibecoding Talks v dubnu 2026 Janem Curnem z ApifyApify zároveň deklarovalo záměr darovat mcpc do Agentic AI Foundation (AAIF) jako kandidáta na oficiální MCP CLI klient pro shellové prostředí.+Volání ''mcpc @<session> tools-call ...'' funguje out-of-the-box, klíče jsou viditelné jen uvnitř mcpc subshellu, AI agent nikdy klíče nevidí v shellu ani jiných procesech.
  
-===== Cíle projektu =====+===== Proč mcpc existuje =====
  
-  * **Plná podpora MCP** – všechny funkce protokoluHTTP stdio transport +Klasické MCP klienty (Claude Code, OpenCode, Cursor) načtou při startu **všechny** definice nástrojů ze všech nakonfigurovaných MCP serverů do kontextu. To má dva praktické problémy: 
-  * **Lehký a minimálně závislý** – žádné LLMfunguje na Mac Windows / Linux + 
-  * **Přátelský pro agenty i lidi** – jeden nástrojdvě perspektivy použití +  - **Context bloat** — pokud máš 5 MCP serverůAI startuje s desítkami až stovkami definic nástrojů, které nikdy nepoužije. Token spotřeba a context rot. 
-  * **Code mode s --json** – výstup lze skládat v shellu es ''jq'' a pipelines+  - **Duplicita instancí** — každý AI nástroj si pro každý projekt spawnuje vlastní instanci MCP serveru. Třprojekty = tři běžící Playwright Chromium instance navíc. 
 + 
 +mcpc řeší oboje: 
 + 
 +  * **Lazy loading**: AI volá ''mcpc @server tools-call ...'' přes ''Bash()'' jen tehdy, když tool reálně potřebuje. Definice jsou na disku v configu, ne v kontextu. 
 +  * **Sdílený bridge**: jeden bridge proces na server, sdílený napříč všemi klienty. Tři projekty = jedna instance. 
 + 
 +Apify projekt představil na Vibecoding Talks 20. 4. 2026 (Jan Curn) s tezí, že „CLI vs. MCP" je falešná dichotomie — správně je **MCP pro vzdálený standard + CLI jako lokální rozhraní agenta**. 
 + 
 +===== Architektura ===== 
 + 
 +<code> 
 +┌──────────────┐       Bash()        ┌──────────┐    Unix socket    ┌────────┐    MCP    ┌────────────┐ 
 +│  AI agent    │ ─────────────────▶ │ mcpc CLI │ ────────────────▶ │ bridge │ ────────▶ │ MCP server │ 
 +│ (CC/OpenCode)│                     └──────────┘                    └────────┘           └────────────┘ 
 +└──────────────┘                                                  (perzistentní     (HTTP nebo lokální 
 +                                                                  1 na server)        stdio child process) 
 +</code> 
 + 
 +  * **mcpc CLI** — krátkodobý proceskterý volá AI nebo uživatel 
 +  * **Bridge** — daemon, který drží MCP ipojení živé. Jeden bridge na pojmenovanou session (např. ''@apify''
 +  * **MCP server** — pro HTTP servery vzdálená URL, pro stdio servery child proces bridge 
 + 
 +Bridge přežívá mezi voláními — žádný timeout po nečinnosti. Žije, dokud ho explicitně nezavřeš (''mcpc @session close'') nebo se nereboot stroj.
  
 ===== Instalace ===== ===== Instalace =====
 +
 +==== Předpoklad: Bun ====
 +
 +mcpc je distribuovaný jako npm balíček, ale globálně ho lze instalovat přes Bun bez ''sudo''. Potřebuješ nainstalovaný Bun a jeho binární adresář v ''PATH''.
 +
 +==== Instalace mcpc ====
  
 <code bash> <code bash>
-npm install -g @apify/mcpc 
-# nebo přes Bun 
 bun install -g @apify/mcpc bun install -g @apify/mcpc
 +
 +# Ověření
 +mcpc --version
 +which mcpc
 </code> </code>
  
-Na Linuxu bez grafického prostředí je pro bezpečné ukládání přihlašovacích údajů potřeba nainstalovat ''libsecret'' a ''gnome-keyring''.+==== Headless prostředí (Docker, server, CI) ====
  
-===== Základní použití =====+mcpc ukládá tajnosti (OAuth tokeny, bearer tokeny) do **OS keychainu** přes Secret Service API. Na desktopu (GNOME, KDE) to funguje automaticky. **Na headless systémech mcpc bezproblémově fallbackuje na file-based credential store** v ''~/.mcpc/credentials.json'' (mode 0600).
  
-==== Připojení a sessions ====+To znamená: **na Dockeru/Alpine/CI server nemusíš instalovat libsecret ani gnome-keyring**. Fallback je z bezpečnostního pohledu v izolovaném kontejneru ekvivalentní.
  
-mcpc pracuje s pojmenovanými sessions prefixovanými ''@''. Session je persistentní připojení k MCP serveru, které přežívá mezi příkazy.+Pokud chceš plnohodnotný OS keychain i v headless (ne nutné):
  
 <code bash> <code bash>
-Přihlášení a připojení k serveru +Ubuntu 
-mcpc login mcp.apify.com +sudo apt install -y libsecret-1-0 gnome-keyring dbus
-mcpc connect mcp.apify.com @apify+
  
-Výpis dostupných nástrojů +Alpine 
-mcpc @apify tools-list+sudo apk add libsecret gnome-keyring dbus
  
-Volání nástroje +Pak pouštět mcpc přes: 
-mcpc @apify tools-call search-actors keywords:="website crawler"+dbus-run-session -- bash -c "echo -n 'pwd' | gnome-keyring-daemon --unlock && mcpc ..." 
 +</code>
  
-Interaktivní shell +V drtivé většině případů to není potřeba. 
-mcpc @apify shell+ 
 +===== Centralizovaný hub config ===== 
 + 
 +Nyní k praktické části — jak nakonfigurovat mcpc tak, aby ho mohl AI agent využívat z více nástrojů, byly tajnosti izolované a přidávání nových serverů bylo triviální. 
 + 
 +==== Filozofie ==== 
 + 
 +  * **Jeden soubor pro všechny servery** (''~/.config/mcpc/mcp.json'') — nikoliv per-projekt 
 +  * **Jeden soubor pro všechny tajnosti** (''~/.config/mcpc/secrets.env'') — odděleně od configu, proto config může jít do gitu 
 +  * **Bash funkce v ''.bashrc''** — tajnosti se exportují jen do subshellu pro daný ''mcpc'' call, ne do interaktivního shellu 
 +  * **Registr serverů v ''AGENTS.md''** — krátká tabulka „kdo má co k dispozici", aby AI věděla, co volat 
 + 
 +==== Struktura ==== 
 + 
 +<code> 
 +~/.config/mcpc/ 
 +├── README.md       lokální dokumentace tohoto setupu 
 +├── mcp.json        # konfigurace všech serverů, secrets jako ${VAR} 
 +└── secrets.env     # API klíče v KEY=VALUE formátu (mode 0600) 
 + 
 +~/.bashrc                                  # obsahuje funkci mcpc() 
 +~/.config/opencode/AGENTS.md               # registr serverů (pro AI) 
 +~/.claude/CLAUDE.md → ~/.config/opencode/AGENTS.md   # symlink, sdíleno 
 +~/.mcpc/                                   # runtime state (sessions, sockety, logy) — nesahat
 </code> </code>
  
-Stav session může být: 🟢 live, 🟡 connecting / reconnecting / disconnected / crashed, 🔴 unauthorized / expired.+==== Nastavení krok za krokem ==== 
 + 
 +=== 1Vytvoř hub adresář a config ===
  
 <code bash> <code bash>
-mcpc @apify restart +mkdir -p ~/.config/mcpc 
-mcpc @apify close+cat > ~/.config/mcpc/mcp.json <<'EOF' 
 +
 +  "mcpServers": {} 
 +
 +EOF
 </code> </code>
  
-==== Hledání nástrojů napříč sessions ====+=== 2. Vytvoř ''secrets.env'' (zatím prázdný) ===
  
 <code bash> <code bash>
-Hledání napříč všemi sessions+touch ~/.config/mcpc/secrets.env 
 +chmod 600 ~/.config/mcpc/secrets.env 
 +</code> 
 + 
 +=== 3. Přidej bash funkci do ''~/.bashrc'' === 
 + 
 +<code bash> 
 +cat >> ~/.bashrc <<'EOF' 
 + 
 +mcpc — load secrets only into mcpc subshell, not the interactive shell 
 +mcpc() { 
 +    if [ -f "$HOME/.config/mcpc/secrets.env" ]; then 
 +        ( set -a; . "$HOME/.config/mcpc/secrets.env"; set +a; command mcpc "$@"
 +    else 
 +        command mcpc "$@" 
 +    fi 
 +
 +EOF 
 + 
 +source ~/.bashrc 
 +type mcpc       # mcpc is a function 
 +</code> 
 + 
 +**Jak to funguje:** 
 + 
 +  * Závorky ''(...)'' vytvoří **subshell** s vlastním env 
 +  * ''set -a'' zařídí, že každá proměnná z následujícího sourcu se exportuje 
 +  * ''. secrets.env'' načte tajnosti — jen subshellu 
 +  * ''command mcpc "$@"'' spustí reálný binární ''mcpc'' z ''/usr/local/bin/'' (klíčové slovo ''command'' přeskočí naši funkci, aby nevznikla rekurze) 
 +  * Subshell skončí → tajnosti zaniknou, parent shell je nedotčený 
 + 
 +**Ověření izolace:** 
 + 
 +<code bash> 
 +echo "$CONTEXT7_API_KEY"   # prázdné — klíč není v interaktivním shellu 
 +mcpc @ctx tools-list       # funguje — klíč se substituuje uvnitř subshellu 
 +echo "$CONTEXT7_API_KEY"   # pořád prázdné 
 +</code> 
 + 
 +=== 4. Přidej sekci do ''AGENTS.md'' / ''CLAUDE.md'' === 
 + 
 +V Claude Code je globální konfigurace v ''~/.claude/CLAUDE.md'', v OpenCode v ''~/.config/opencode/AGENTS.md''. Pro sdílení: 
 + 
 +<code bash> 
 +mkdir -p ~/.claude 
 +ln -s ~/.config/opencode/AGENTS.md ~/.claude/CLAUDE.md 
 +</code> 
 + 
 +(Pokud ''~/.claude/CLAUDE.md'' už existuje, prvně si ho zazálohuj a pak nahraď symlinkem.) 
 + 
 +Do ''~/.config/opencode/AGENTS.md'' přidej tuto sekci (na konec): 
 + 
 +<code markdown> 
 +# MCP servery přes mcpc 
 + 
 +MCP servery se nepřipojují nativně v Claude Code/OpenCode (úspora kontextu) — místo toho se on-demand spouští přes CLI `mcpc`. Hub config: `~/.config/mcpc/mcp.json`. Pro detaily použití mcpc (sessions, OAuth, troubleshooting) je k dispozici skill `mcpc` — načti přes Skill tool. 
 + 
 +## Dostupné servery 
 + 
 +| Entry | Session | Popis | Pozn. | 
 +|---|---|---|---| 
 +| (přidávej řádky podle reálně nakonfigurovaných serverů) | | | | 
 + 
 +## Quick start (platí pro libovolný entry z tabulky) 
 + 
 +```bash 
 +HUB=~/.config/mcpc/mcp.json 
 +mcpc connect $HUB:<entry> @<session>          # idempotentní; cold-start ~10–30 s, jinak instant 
 +mcpc @<session> tools-list                     # přehled toolů 
 +mcpc @<session> tools-get <tool>               # plné schéma jednoho toolu 
 +mcpc @<session> tools-call <tool> arg:=value   # zavolat tool 
 +mcpc --json @<session> tools-call <tool> ...   # JSON výstup pro pipeline 
 +``` 
 + 
 +**Sessions jsou warm pool — nezavírej je po dokončení úkolu.** Drží se v paměti záměrně kvůli rychlosti dalších volání. `mcpc @<session> close` volej jen na explicitní pokyn uživatele. 
 + 
 +**Servery s API klíčem:** hodnota patří do `~/.config/mcpc/secrets.env` (formát `KEY=VALUE`), v `mcp.json` se referencuje jako `${KEY}`. 
 +</code> 
 + 
 +===== Recept: přidat nový MCP server ===== 
 + 
 +Tři varianty podle typu serveru. 
 + 
 +==== A. HTTP server s API klíčem (např. context7, Apify, GitHub MCP) ==== 
 + 
 +**1. Přidej klíč do ''secrets.env'':** 
 + 
 +<code bash> 
 +echo 'CONTEXT7_API_KEY=ctx7sk-...' >> ~/.config/mcpc/secrets.env 
 +</code> 
 + 
 +(Žádné mezery kolem ''='', žádný ''export''.) 
 + 
 +**2. Přidej entry do ''mcp.json'':** 
 + 
 +<code json> 
 +"context7":
 +  "url": "https://mcp.context7.com/mcp", 
 +  "headers":
 +    "CONTEXT7_API_KEY": "${CONTEXT7_API_KEY}" 
 +  } 
 +
 +</code> 
 + 
 +Některé servery chtějí standardní ''Authorization: Bearer ...'': 
 + 
 +<code json> 
 +"apify":
 +  "url": "https://mcp.apify.com", 
 +  "headers":
 +    "Authorization": "Bearer ${APIFY_TOKEN}" 
 +  } 
 +
 +</code> 
 + 
 +mcpc umí libovolný název headeru. 
 + 
 +**3. Otestuj:** 
 + 
 +<code bash> 
 +mcpc connect ~/.config/mcpc/mcp.json:context7 @ctx 
 +mcpc @ctx tools-list 
 +</code> 
 + 
 +**4. Aktualizuj tabulku v ''AGENTS.md'':** 
 + 
 +<code> 
 +| `context7` | `@ctx` | Aktuální dokumentace knihoven, frameworků, SDK. | — | 
 +</code> 
 + 
 +==== B. stdio server (lokální proces, většinou bez klíče) ==== 
 + 
 +**1. Entry v ''mcp.json'':** 
 + 
 +<code json> 
 +"playwright":
 +  "command": "npx", 
 +  "args":
 +    "@playwright/mcp@latest", 
 +    "--isolated", 
 +    "--headless", 
 +    "--browser", "chrome" 
 +  ], 
 +  "env":
 +    "PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD": "1" 
 +  } 
 +
 +</code> 
 + 
 +**Pozor:** stdio podproces dědí z prostředí jen whitelist (''PATH'', ''HOME'', ''SHELL'', …). Cokoliv jiného (''HTTPS_PROXY'', ''NODE_EXTRA_CA_CERTS'', vlastní API klíč) musí být explicitně v ''env'' bloku, případně přes ''${VAR}'' reference na shell proměnnou (která může pocházet ze ''secrets.env''). 
 + 
 +**2. Otestuj a aktualizuj AGENTS.md** (stejně jako varianta A). 
 + 
 +==== C. HTTP server bez autentizace ==== 
 + 
 +**1. Entry s jen ''url'':** 
 + 
 +<code json> 
 +"my-public": { "url": "https://public.example.com/mcp"
 +</code> 
 + 
 +**2. Otestuj a aktualizuj AGENTS.md.** 
 + 
 +===== Použití ===== 
 + 
 +==== Základní příkazy ==== 
 + 
 +<code bash> 
 +# Přehled aktivních sessions a OAuth profilů 
 +mcpc 
 + 
 +# Připojit (idempotentní — když session už existuje, jen potvrdí) 
 +mcpc connect ~/.config/mcpc/mcp.json:<entry> @<alias> 
 + 
 +# Detail serveru, capabilities, instructions, tooly 
 +mcpc @<alias> 
 + 
 +# Seznam toolů 
 +mcpc @<alias> tools-list                # názvy + krátké popisy 
 +mcpc @<alias> tools-list --full         # plné schéma všech toolů 
 + 
 +# Plné schéma jednoho toolu 
 +mcpc @<alias> tools-get <tool-name> 
 + 
 +# Zavolat tool 
 +mcpc @<alias> tools-call <tool-name> arg:=value 
 + 
 +# Hledání napříč sessions
 mcpc grep "search" mcpc grep "search"
  
-Hledání jen v konkrétní session +Interaktivní shell 
-mcpc @apify grep "actor"+mcpc @<alias> shell 
 + 
 +# Restart bridge (ztratí state, ale obnoví spojení) 
 +mcpc @<alias> restart 
 + 
 +# Zavřít session (uvolní paměť) 
 +mcpc @<alias> close 
 + 
 +# Úklid (live sessions zachová, smaže staré logy a zombie sockety) 
 +mcpc clean 
 + 
 +# Nuclear option — všechno 
 +mcpc clean all
 </code> </code>
  
-==== Code mode (--json) ====+==== Argumenty toolů ====
  
-Pro použití v AI agentech nebo shellových skriptech mcpc vrací strojově čitelný JSON. Výstup lze přímo skládat s ''jq'':+<code bash> 
 +# String, number, bool — auto-parsing JSON 
 +mcpc @s tools-call search query:="hello world" limit:=10 enabled:=true 
 + 
 +# Force string z čísla 
 +mcpc @tools-call get-by-id id:='"123"' 
 + 
 +# Inline JSON object (první arg začíná { nebo [) 
 +mcpc @s tools-call create '{"name":"foo","tags":["a","b"]}' 
 + 
 +# Z stdin 
 +echo '{"query":"hello"}' | mcpc @s tools-call search 
 +</code> 
 + 
 +==== Code mode (JSON pipelines) ====
  
 <code bash> <code bash>
 +# Strojový JSON výstup
 mcpc --json @apify tools-call search-actors keywords:="scraper" \ mcpc --json @apify tools-call search-actors keywords:="scraper" \
-  | jq '.content[0].text | fromjson | .items[0].id'+  | jq -r '.content[0].text
 + 
 +# Skládání přes pipe 
 +mcpc --json @s1 tools-call get-data \ 
 +  jq '.id' 
 +  | xargs -I {} mcpc @s2 tools-call process id:="{}"
 </code> </code>
  
-Tento přístup je klíčový pro efektivní integraci s AI agenty: agent nepotřebuje znát celou definici MCP serveru dopředu, ale může nástroje postupně objevovat přes ''grep'' a volat je jako kód přes ''Bash()''.+===== Operační charakteristiky =====
  
-===== Klíčové funkce =====+==== Cold start ====
  
-==== Persistentní sessions a auth profily ====+  * **První ''connect''** na server, který ještě neběží: 10–30 s (HTTP servery rychlejší, stdio s těžkým podprocesem jako Puppeteer/Chromium pomalejší) 
 +  * **Další ''connect''** na live session: instantní (~50 ms, jen potvrzení) 
 +  * **Tool call přes existující session**: sub-sekundový režijní overhead, samotný call záleží na serveru
  
-Přihlašovací údaje jsou uloženy OS keychain (nikdy na disk). mcpc podporuje OAuth 2.1 s PKCEautomatické obnovování tokenů přepínání mezi více účty přes OAuth profily.+Pro AI workflow je proto idiomatické **vždy začít ''mcpc connect ...''** — díky idempotentnosti to nestojí nic, když session žije, a automaticky řeší cold start, když ne.
  
-Podporované metody autentizace:+==== Warm pool memory ====
  
-  * Anonymní přístup (veřejné servery) +Bridge proces drží spojení a typicky i podproces serveru živý. Memory pattern:
-  * Bearer tokeny (přes flag ''--header'', uložené jen pro danou session) +
-  * OAuth 2.1 s plnou registrací klienta +
-  * x402 platby (viz níže)+
  
-==== Postupné objevování nástrojů ====+^ Stav ^ Typický RSS ^ 
 +| Bridge bez spuštěného podprocesu | ~95 MB (node) | 
 +| Bridge + lehký HTTP server (context7) | ~95 MB | 
 +| Bridge + stdio server bez browseru (typický playwright neaktivní) | ~285 MB | 
 +| Bridge + stdio server s otevřeným headless Chromium (playwright aktivní, perplexity) | 1.2–2.0 GB |
  
-Místo načtení všech nástrojů do kontextu najednou může agent použít ''grep'' k hledání relevantních nástrojů a načítat jejich definice postupně. To výrazně snižuje spotřebu tokenů a omezuje context rot – jeden ze tří přístupů, které autoři prezentují jako řešení problémů současných MCP klientů.+Memory **nestoupá nekontrolovatelně** — pool má fixní velikostPo opakovaných voláních RSS osciluje kolem stabilní hodnoty (±50 MB).
  
-==== Asynchronní úlohy ====+==== Sessions persistence ====
  
-mcpc podporuje MCP async tasks – dlouhotrvající operace, které server spustí na pozadí. Klient může sledovat jejich průběh a výsledky načítat po dokončení.+  * Sessions přežívají mezi Claude Code/OpenCode sessions 
 +  * Bridge zemřjen na: explicitní ''mcpc @s close'', restart stroje, OOM kill 
 +  * ''mcpc clean'' neruší live sessions, jen úklid
  
-==== MCP proxy pro sandboxované agenty ====+===== Troubleshooting ===== 
 + 
 +==== „Bridge failed to start: socket file not created within timeout" ==== 
 + 
 +Bridge se spustil, ale rychle umřel a parent CLI to interpretoval jako timeout. **Skutečnou příčinu hledej v bridge logu**:
  
 <code bash> <code bash>
-mcpc connect --proxy+cat ~/.mcpc/logs/bridge-@<alias>.log
 </code> </code>
  
-Proxy režim izoluje přihlašovací údaje před AI agentem. Agent komunikuje přes proxy, ale k samotným credentials nemá přístup – ležité pro bezpečné nasazení v sandboxovaných prostředích, kde kód agenta není plně důvěryhodný.+Časté vody:
  
-==== x402 platby ====+  * **Auth chyba** (HTTP 401) — server vyžaduje klíč, ale ''${VAR}'' se nepřeložil. Zkontroluj ''secrets.env'' a že bash funkce ''mcpc()'' je aktivní (''type mcpc'' musí říct „is a function"). 
 +  * **Stdio command nenalezen** — chybí ''bun''/''npx''/zápis cesty. 
 +  * **Stdio podproces napsal na stderr** — bridge log ti tail stderr ukáže (řádky s ''[server stderr]'').
  
-mcpc implementuje protokol [[https://x402.org|x402]] pro autonomní mikroplatbyAgenti mohou platit za ístup k MCP nástrojům kryptoměnou na Base blockchainu bez ručního zásahuKlíče jsou uloženy oprávněními ''0600''.+==== „Page not initialized" u perplexity-mcp-zerver ==== 
 + 
 +Cold-start race: první ''search'' přišla dřív, než server stihl otevřít browser pool. Řešení: 
 + 
 +<code bash> 
 +mcpc connect ~/.config/mcpc/mcp.json:perplexity @px 
 +sleep 8                                    # dej serveru čas na inicializaci 
 +mcpc @px tools-call search query:="..."    # první call zabere ~30 s, další 13–18 s 
 +</code> 
 + 
 +==== „401 Unauthorized" session ve stavu 🔴 unauthorized ==== 
 + 
 +Server odmítl klíč: 
 + 
 +  - Zkontroluj, že hodnota v ''secrets.env'' je aktuální 
 +  - Restartuj session, ať mcpc znovu načte resolved config: 
 + 
 +<code bash> 
 +mcpc @<alias> close 
 +mcpc connect ~/.config/mcpc/mcp.json:<entry> @<alias> 
 +</code> 
 + 
 +==== Memory roste neúměrně ==== 
 + 
 +mcpc samo nemá memory leak. Pokud RSS roste: 
 + 
 +  - Spusť ''mcpc'' a zkontroluj počet sessions — možná máš živé session, o kterých nevíš 
 +  - ''ps aux grep -E 'bridge|mcp''' ukáže reálné procesy a jejich PIDs 
 +  - Pro restart konkrétního serveru: ''mcpc @<alias> restart'' 
 +  - Pro všeobecný úklid: ''mcpc clean sessions'' (zruší všechny) 
 + 
 +==== Bash funkce se neuplatňuje ==== 
 + 
 +<code bash> 
 +type mcpc 
 +# Pokud výstup je "/usr/local/bin/mcpc", funkce není načtená: 
 +source ~/.bashrc 
 +type mcpc 
 +# Teď musí být "is a function" 
 +</code> 
 + 
 +V neinteraktivních shellech (CI, některé hooks) se ''.bashrc'' automaticky nesourcuje — vyřeš nastavením ''BASH_ENV=$HOME/.bashrc'' nebo voláním ''bash -l'' (login shell). 
 + 
 +===== Bezpečnost a izolace ===== 
 + 
 +==== Subshell isolation pattern ==== 
 + 
 +Bash funkce ''mcpc()'' načte tajnosti **jen do subshellu pro daný call**To znamená: 
 + 
 +^ Co ^ S auto-source v ''.bashrc'' ^ S bash funkcí (náš setup) ^ 
 +| ''echo $API_KEY'' v terminálu | vrátí klíč ⚠️ | prázdné ✅ | 
 +| Jiný proces čte ''/proc/<pid>/environ'' shellu | vidí klíč ⚠️ | bez klíče ✅ | 
 +| Náhodný npm balíček spuštěný uživatelem | vidí klíč ⚠️ | bez klíče ✅ | 
 +| ''mcpc connect/call ...'' | funguje | funguje ✅ | 
 + 
 +==== Co AI agent vidí vs. nevidí ==== 
 + 
 +<code> 
 +✅ AI vidí:    výstup mcpc íkazů (stdout) 
 +✅ AI vidí:    seznam serverů v AGENTS.md (entry, popis, session alias) 
 +❌ AI nevidí:  obsah secrets.env (není v žádné šabloně/contextu) 
 +❌ AI nevidí:  hodnoty $API_KEY ve shellu (subshell isolation) 
 +❌ AI nevidí:  resolved hodnoty v mcp.json (substituce probíhá v paměti mcpc) 
 +</code> 
 + 
 +==== MCP proxy pro hard sandbox ==== 
 + 
 +Pro nedůvěryhodný kód můžeš spustit mcpc v proxy režimu: 
 + 
 +<code bash> 
 +# Ty jako uživatel: vytvoř autentizovanou session s proxy serverem 
 +mcpc connect ~/.config/mcpc/mcp.json:apify @ai-relay --proxy 8080 
 + 
 +# AI v sandboxu: připojí se na proxy bez znalosti původních credentials 
 +mcpc connect localhost:8080 @sandboxed 
 +mcpc @sandboxed tools-call search-actors keywords:="..." 
 +</code> 
 + 
 +AI vidí jen rozhraní proxy, ne původní OAuth tokeny ani API klíče. 
 + 
 +===== Dokumentační workflow pro fresh stroj ===== 
 + 
 +Pro nasazení na nový stroj (např. Docker image, nový server): 
 + 
 +  - **Instalace mcpc** — viz sekce „Instalace" výše 
 +  - **Vytvoř hub config** — ''mkdir -p ~/.config/mcpc/'' + ''mcp.json'' skeleton 
 +  - **Vytvoř ''secrets.env''** permissions 0600 
 +  - **Přidej bash funkci** do ''~/.bashrc'' 
 +  - **Vytvoř ''~/.config/mcpc/README.md''** (lokální dokumentace pro budoucí AI agenty na tomto stroji) 
 +  - **Přidej sekci do ''AGENTS.md'' / ''CLAUDE.md''** s registrem serverů 
 +  - **Postupně přidávej servery** dle Receptu výše 
 + 
 +Šablonu hub ''README.md'', který se na stroji vytvoří, najdeš v [[https://github.com/apify/mcpc/blob/main/docs/claude-skill/README.md|GitHub repo]] nebo si ji můžeš [[ai:mcp:nastroje:mcpc|stáhnout/přizpůsobit]] z této wiki.
  
 ===== Podpora MCP funkcí ===== ===== Podpora MCP funkcí =====
Řádek 119: Řádek 507:
 | Stránkování výsledků | ✅ automatické | | Stránkování výsledků | ✅ automatické |
 | Asynchronní úlohy | ✅ | | Asynchronní úlohy | ✅ |
 +| OAuth 2.1 + PKCE + DCR + CIMD | ✅ |
 +| x402 platby | ✅ (experimentální) |
 | Roots / Elicitation / Completion | 🚧 plánováno | | Roots / Elicitation / Completion | 🚧 plánováno |
-| Sampling | ❌ neaplikovatelné +| Sampling | ❌ neaplikovatelné (mcpc nemá vlastní LLM) |
- +
-===== Bezpečnost ===== +
- +
-  * OAuth tokeny uloženy výhradně v OS keychain, nikdy na disk +
-  * Credentials předávány přes Unix socket IPC, ne přes prostředí +
-  * HTTPS vynuceno pro vzdálené servery +
-  * OAuth callback vázán pouze na localhost +
-  * x402 wallet klíče s oprávněním ''0600'' +
-  * Credentials nejsou logovány ani ve verbose režimu +
- +
-===== Kontext vzniku ===== +
- +
-Jan Curn z Apify projekt představil na Vibecoding Talks 20. dubna 2026 s tezí: „CLI is better than MCP" je falešná dichotomie. Správná odpověď je MCP + CLI – využít standardizovaný protokol pro vzdálený přístup a shell jako lokální rozhraní agenta. Apify chce mcpc darovat Agentic AI Foundation jako zárodek oficiálního SDK pro shell, které dosud v MCP ekosystému chybí.+
  
 ===== Zdroje ===== ===== Zdroje =====
  
   * [[https://github.com/apify/mcpc|mcpc na GitHubu (apify/mcpc)]]   * [[https://github.com/apify/mcpc|mcpc na GitHubu (apify/mcpc)]]
-  * [[https://apify.com|Apify]] – autoři projektu+  * [[https://github.com/apify/mcpc/tree/main/docs/claude-skill|Oficiální Claude skill pro mcpc]] 
 +  * [[https://modelcontextprotocol.io/specification/latest|MCP specifikace]]
   * [[https://x402.org|x402 payment protocol]]   * [[https://x402.org|x402 payment protocol]]
-  * Vibecoding Talks, 20. 4. 2026 – Jan Curn (@jancurn), Apify+  * [[https://apify.com|Apify]] — autoři projektu 
 +  * Vibecoding Talks, 20. 4. 2026 — Jan Curn (@jancurn), Apify 
  • ai/mcp/nastroje/mcpc.1777967234.txt.gz
  • Poslední úprava: 05.05.2026 09:47
  • autor: Petr Nosek