Rozdíly

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

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
ai:mcp:nastroje:mcpc [05.05.2026 10:20] – Doplněno: jak mcpc funguje technicky, bridge architektura, co AI vidí v kontextu, sdílení instance a paměť, přihlašovací údaje 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.
  
-===== Jak mcpc funguje =====+===== Proč mcpc existuje =====
  
-mcpc stojí na dvou vrstvách: **bridge** (background procesa **CLI íkazy** (co volá AI nebo uživatel).+Klasické MCP klienty (Claude Code, OpenCode, Cursornačtou i startu **všechny** definice nástrojů ze všech nakonfigurovaných MCP serverů do kontextuTo má dva praktické problémy:
  
-==== Bridge ====+  - **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. 
 +  - **Duplicita instancí** — každý AI nástroj si pro každý projekt spawnuje vlastní instanci MCP serveru. Tři projekty tři běžící Playwright Chromium instance navíc.
  
-Při prvním ipojení k serveru mcpc nastartuje background bridge proces:+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 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ý proces, který volá AI nebo uživatel 
 +  * **Bridge** — daemon, který drží MCP př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 ===== 
 + 
 +==== PředpokladBun ==== 
 + 
 +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>
-mcpc connect mcp.apify.com @apify+bun install -g @apify/mcpc 
 + 
 +# Ověření 
 +mcpc --version 
 +which mcpc
 </code> </code>
  
-Bridge drží otevřené MCP připojení k serveru. Pro vzdálené HTTP servery se jen připojí přes síť. Pro lokální stdio servery (jako Playwright MCPsám spustí server jako child proces a drží ho živý.+==== Headless prostředí (Docker, server, CI====
  
-Bridge zůstává aktivní až do explicitního zavření:+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). 
 + 
 +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í. 
 + 
 +Pokud chceš plnohodnotný OS keychain i v headless (ne nutné):
  
 <code bash> <code bash>
-mcpc @apify close+# Ubuntu 
 +sudo apt install -y libsecret-1-0 gnome-keyring dbus 
 + 
 +# Alpine 
 +sudo apk add libsecret gnome-keyring dbus 
 + 
 +# Pak pouštět mcpc přes: 
 +dbus-run-session -- bash -c "echo -n 'pwd' | gnome-keyring-daemon --unlock && mcpc ..."
 </code> </code>
  
-Žádný automatický timeout po nečinnosti dokumentaci popsán není – persistentnost je záměrná, aby bylo ipojení okamžitě dostupné bez reconnect overhead.+V drtivé tšině ípadů to není potřeba.
  
-==== Průběh volání ====+===== Centralizovaný hub config =====
  
-Když AI zavolá mcpc příkaz přes ''Bash()'', komunikace probíhá takto:+Nyní k praktické části — jak nakonfigurovat mcpc tak, aby ho mohl AI agent využívat z více nástrojů, byly tajnosti izolované a 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ělaco volat 
 + 
 +==== Struktura ====
  
 <code> <code>
-AI agent +~/.config/mcpc/ 
-  → Bash("mcpc @playwright tools-call screenshot url:='https://example.com'"+├── README.md       # lokální dokumentace tohoto setupu 
-      → mcpc CLI +├── mcp.json        # konfigurace všech serverů, secrets jako ${VAR} 
-          → Unix socket IPC +└── secrets.env     # API klíče v KEY=VALUE formátu (mode 0600
-              → bridge (background proces+ 
-                  → MCP protokol +~/.bashrc                                  # obsahuje funkci mcpc() 
-                      → Playwright MCP server +~/.config/opencode/AGENTS.md               # registr serverů (pro AI) 
-                  ← výsledek +~/.claude/CLAUDE.md → ~/.config/opencode/AGENTS.md   # symlink, sdíleno 
-              ← výsledek +~/.mcpc/                                   # runtime state (sessions, sockety, logy— nesahat
-          ← výsledek +
-      → stdout (text nebo JSON) +
-  ← AI vidí pouze tento výstup+
 </code> </code>
  
-AI v žádném bodě tohoto řetězce nevidí přihlašovací údaje ani definice nástrojů, které si explicitně nevyžádala.+==== Nastavení krok za krokem ====
  
-==== Sdílení instance napříč projekty ====+=== 1. Vytvoř hub adresář a config ===
  
-Bridge je sdílený – pokud se více AI projektů připojí ke stejné pojmenované session, používají jeden společný bridge a tedy jednu instanci MCP serveru:+<code bash> 
 +mkdir -~/.config/mcpc 
 +cat > ~/.config/mcpc/mcp.json <<'EOF' 
 +
 +  "mcpServers"{} 
 +
 +EOF 
 +</code>
  
-<code> +=== 2. Vytvoř ''secrets.env'' (zatím prázdný) ===
-Bez mcpc: +
-  Projekt A → vlastní Playwright instance (150 MB) +
-  Projekt B → vlastní Playwright instance (150 MB) +
-  Projekt C → vlastní Playwright instance (150 MB) +
-  450 MB+
  
-S mcpc: +<code bash> 
-  Projekt A ↘ +touch ~/.config/mcpc/secrets.env 
-  Projekt B  → mcpc bridge → jedna Playwright instance (150 MB) +chmod 600 ~/.config/mcpc/secrets.env
-  Projekt C ↗ +
-  = 150 MB + overhead mcpc bridge (zanedbatelný)+
 </code> </code>
  
-Úspora spočívá ve sdílení jedné instance, ne v automatickém uvolňování paměti po nečinnosti.+=== 3Přidej bash funkci do ''~/.bashrc'' ===
  
-===== Co AI vidí v kontextu =====+<code bash> 
 +cat >> ~/.bashrc <<'EOF'
  
-Tohle je jeden z klíčových rozdílů oproti klasickým MCP klientům. Standardní klienti (Claude CodeOpenCodenačtou při startu **všechny** definice nástrojů ze všech nakonfigurovaných MCP serverů do kontextu – ještě než AI začne pracovat.+# mcpc — load secrets only into mcpc subshellnot 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
  
-mcpc se do kontextu dostane jen to, co AI explicitně zavolá:+source ~/.bashrc 
 +type mcpc       # mcpc is a function 
 +</code>
  
-^ Co AI zavolá ^ Co se dostane do kontextu ^ +**Jak to funguje:**
-| ''mcpc @server tools-list'' | seznam jmen nástrojů (stručný) | +
-| ''mcpc @server tools-show search-actors'' | definice jednoho konkrétního nástroje | +
-| ''mcpc grep "search"'' | jen nástroje odpovídající hledání | +
-| ''mcpc @server tools-call search-actors ...''**výsledek** volání (ne definice nástroje) |+
  
-Tomuto přístupu se říká **progressive tool discovery** – AI si definice nástrojů dohledává postupně podle potřebyne najednou na začátku. Výsledkem je méně spotřebovaných tokenů a méně context rot.+  * 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 v 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ý
  
-===== Přihlašovací údaje a bezpečnost =====+**Ověření izolace:**
  
-Jedna z hlavních výhod mcpc je, že **AI nikde projektu přihlašovací údaje nevidí a nepotřebuje je znát**.+<code bash> 
 +echo "$CONTEXT7_API_KEY"   # prázdné — klíč není interaktivním shellu 
 +mcpc @ctx tools-list       # funguje — klíč se substituuje uvnitř subshellu 
 +echo "$CONTEXT7_API_KEY"   # pořád prázdné 
 +</code>
  
-Standardně se credentials konfigurují jednou přes mcpc CLI (''mcpc login'') a uloží do OS keychain. Bridge je pak předává MCP serveru přes Unix socket IPC – ne přes proměnné prostředí, ne přes stdout, ne přes konfigurační soubory dostupné AI agentovi.+=== 4. Přidej sekci do ''AGENTS.md'' / ''CLAUDE.md'' ===
  
-Z pohledu AI agenta probíhá volání takto:+V Claude Code je globální konfigurace v ''~/.claude/CLAUDE.md'', v OpenCode v ''~/.config/opencode/AGENTS.md''. Pro sdílení:
  
 <code bash> <code bash>
-# AI zavolá – žádné tokeny, žádné API klíče +mkdir -p ~/.claude 
-mcpc @apify tools-call search-actors keywords:="scraper" +ln -s ~/.config/opencode/AGENTS.md ~/.claude/CLAUDE.md
-# AI dostane – jen výsledek+
 </code> </code>
  
-Přihlašovací údaje jsou tak centrálně spravované izolovanéTo má praktické dopady:+(Pokud ''~/.claude/CLAUDE.md'' už existuje, prvně si ho zazálohuj pak nahraď symlinkem.)
  
-  * AI agent nemusí mít přístup k ''.env'' souborům ani konfiguracím +Do ''~/.config/opencode/AGENTS.md'' přidej tuto sekci (na konec):
-  * Pokud agent selže nebo je kompromitovaný, credentials nezíská +
-  * Přepínání mezi účty nebo prostředími (dev / prod) se řeší na úrovni mcpc session, ne v kódu projektu+
  
-Pro ještě ísnější izolaci (například nedůvěryhodný AI kód v sandboxu) mcpc nabízí proxy režim:+<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 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 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> <code bash>
-mcpc connect --proxy+echo 'CONTEXT7_API_KEY=ctx7sk-...' >> ~/.config/mcpc/secrets.env
 </code> </code>
  
-V proxy režimu mcpc samo funguje jako MCP server. Agent vidí jen rozhraní proxy – ne přímý přístup k reálnému serveru ani jeho credentials.+(Žádné mezery kolem ''='', žádný ''export''.)
  
-===== Cíle projektu =====+**2. Přidej entry do ''mcp.json'':**
  
-  * **Plná podpora MCP** – všechny funkce protokolu, HTTP i stdio transport +<code json> 
-  * **Lehký a minimálně závislý** – žádné LLM, funguje na Mac Windows Linux +"context7": { 
-  * **Přátelský pro agenty i lidi** – jeden nástroj, dvě perspektivy použití +  "url": "https://mcp.context7.com/mcp", 
-  * **Code mode s --json** – výstup lze skládat v shellu přes ''jq'' a pipelines+  "headers":
 +    "CONTEXT7_API_KEY": "${CONTEXT7_API_KEY}" 
 +  
 +
 +</code>
  
-===== Instalace =====+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> <code bash>
-npm install -g @apify/mcpc +mcpc connect ~/.config/mcpc/mcp.json:context7 @ctx 
-# nebo přes Bun +mcpc @ctx tools-list
-bun install -g @apify/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''.+**4. Aktualizuj tabulku v ''AGENTS.md'':**
  
-===== Základní použití =====+<code> 
 +| `context7` | `@ctx` | Aktuální dokumentace knihoven, frameworků, SDK. | — | 
 +</code>
  
-==== Připojení a sessions ====+==== B. stdio server (lokální proces, většinou bez klíče) ====
  
-mcpc pracuje s pojmenovanými sessions prefixovanými ''@''Session je persistentní ipojení k MCP serveru, které přežívá mezi příkazy.+**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, ípadně es ''${VAR}'' reference na shell proměnnou (která můž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> <code bash>
-# Přihlášení připojení k serveru +# Přehled aktivních sessions OAuth profilů 
-mcpc login mcp.apify.com +mcpc
-mcpc connect mcp.apify.com @apify+
  
-Výpis dostupných nástrojů +Připojit (idempotentní — když session už existuje, jen potvrdí) 
-mcpc @apify tools-list+mcpc connect ~/.config/mcpc/mcp.json:<entry> @<alias>
  
-Volání nástroje +Detail serveru, capabilities, instructions, tooly 
-mcpc @apify tools-call search-actors keywords:="website crawler"+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"
  
 # Interaktivní shell # Interaktivní shell
-mcpc @apify shell+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>
  
-Stav session může být: 🟢 live, 🟡 connecting / reconnecting / disconnected / crashed, 🔴 unauthorized / expired.+==== Argumenty toolů ====
  
 <code bash> <code bash>
-mcpc @apify restart +# String, number, bool — auto-parsing JSON 
-mcpc @apify close+mcpc @s tools-call search query:="hello world" limit:=10 enabled:=true 
 + 
 +# Force string z čísla 
 +mcpc @s 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>
  
-==== Hledání nástrojů napříč sessions ====+==== Code mode (JSON pipelines) ====
  
 <code bash> <code bash>
-Hledání napříč všemi sessions +Strojový JSON výstup 
-mcpc grep "search"+mcpc --json @apify tools-call search-actors keywords:="scraper"
 +  | jq -r '.content[0].text'
  
-Hledání jen v konkrétní session +Skládání přes pipe 
-mcpc @apify grep "actor"+mcpc --json @s1 tools-call get-data \ 
 +  | jq '.id'
 +  | xargs -I {} mcpc @s2 tools-call process id:="{}"
 </code> </code>
  
-==== Code mode (--json) ====+===== Operační charakteristiky =====
  
-Pro použití v AI agentech nebo shellových skriptech mcpc vrací strojově čitelný JSONVýstup lze ímo skládat s ''jq'':+==== Cold start ==== 
 + 
 +  * **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 
 + 
 +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. 
 + 
 +==== Warm pool memory ==== 
 + 
 +Bridge proces drží spojení a typicky i podproces serveru živý. Memory pattern: 
 + 
 +^ 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 | 
 + 
 +Memory **nestoupá nekontrolovatelně** — pool má fixní velikost. Po opakovaných voláních RSS osciluje kolem stabilní hodnoty (±50 MB). 
 + 
 +==== Sessions persistence ==== 
 + 
 +  * Sessions ežívají mezi Claude Code/OpenCode sessions 
 +  * Bridge zemře jen na: explicitní ''mcpc @close'', restart stroje, OOM kill 
 +  * ''mcpc clean'' neruší live sessions, jen úklid 
 + 
 +===== 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 --json @apify tools-call search-actors keywords:="scraper"+cat ~/.mcpc/logs/bridge-@<alias>.log
-  | jq '.content[0].text | fromjson | .items[0].id'+
 </code> </code>
  
-===== Klíčové funkce =====+Časté důvody:
  
-==== Persistentní sessions auth profily ====+  * **Auth chyba** (HTTP 401) — server vyžaduje klíč, ale ''${VAR}'' se nepřeložil. Zkontroluj ''secrets.env'' ž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]'').
  
-Přihlašovací údaje jsou uloženy v OS keychain (nikdy na disk). mcpc podporuje OAuth 2.1 s PKCE, automatické obnovování tokenů a přepínání mezi více účty přes OAuth profily.+==== „Page not initialized" u perplexity-mcp-zerver ====
  
-Podporované metody autentizace:+Cold-start race: první ''search'' přišla dřív, než server stihl otevřít browser pool. Řešení:
  
-  * Anonymní přístup (veřejné servery) +<code bash> 
-  * Bearer tokeny (přes flag ''--header'', uložené jen pro danou session) +mcpc connect ~/.config/mcpc/mcp.json:perplexity @px 
-  * OAuth 2.1 s plnou registrací klienta +sleep 8                                    # dej serveru čas na inicializaci 
-  * x402 platby (viz níže)+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é sessiono 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 pří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.
  
-==== Asynchronní úlohy ====+===== Dokumentační workflow pro fresh stroj =====
  
-mcpc podporuje MCP async tasks – dlouhotrvající operacekteré server spustí na pozadí. Klient může sledovat jejich průběh a výsledky načítat po dokončení.+Pro nasazení na nový stroj (např. Docker imagenový server):
  
-==== x402 platby ====+  - **Instalace mcpc** — viz sekce „Instalace" výše 
 +  - **Vytvoř hub config** — ''mkdir -p ~/.config/mcpc/'' + ''mcp.json'' skeleton 
 +  - **Vytvoř ''secrets.env''** s 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
  
-mcpc implementuje protokol [[https://x402.org|x402]] pro autonomní mikroplatby. Agenti mohou platit za ístup k MCP nástrojům kryptoměnou na Base blockchainu bez ručního zásahu. Klíče jsou uloženy s oprávněními ''0600''.+Š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/izpůsobit]] z této wiki.
  
 ===== Podpora MCP funkcí ===== ===== Podpora MCP funkcí =====
Řádek 210: Řá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) |
- +
-===== 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.1777969258.txt.gz
  • Poslední úprava: 05.05.2026 10:20
  • autor: Petr Nosek