Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| 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 Nosek | ai: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 ====== |
| // | // | ||
| - | [[https:// | + | [[https:// |
| - | ===== Proč mcpc vznikl | + | ===== TL;DR ===== |
| - | Kolem MCP a CLI nástrojů existuje staré pnutí: AI agenti někdy preferují CLI, protože ho znají „nazpaměť", | + | < |
| + | ~/ | ||
| + | ├── mcp.json | ||
| + | ├── secrets.env | ||
| + | └── 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 |
| + | ~/ | ||
| + | </ | ||
| - | Projekt byl představen na Vibecoding Talks v dubnu 2026 Janem Curnem z Apify. Apify zároveň deklarovalo záměr darovat | + | Volání '' |
| - | ===== Jak mcpc funguje | + | ===== Proč mcpc existuje |
| - | mcpc stojí na dvou vrstvách: **bridge** | + | Klasické MCP klienty |
| - | ==== 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 | ||
| - | Při prvním | + | mcpc řeší oboje: |
| + | |||
| + | * **Lazy loading**: AI volá '' | ||
| + | * **Sdílený bridge**: jeden bridge proces na server, sdílený napříč všemi klienty. Tři projekty = jedna instance. | ||
| + | |||
| + | Apify projekt | ||
| + | |||
| + | ===== Architektura ===== | ||
| + | |||
| + | < | ||
| + | ┌──────────────┐ | ||
| + | │ AI agent │ ─────────────────▶ │ mcpc CLI │ ────────────────▶ │ bridge | ||
| + | │ (CC/ | ||
| + | └──────────────┘ | ||
| + | 1 na server) | ||
| + | </ | ||
| + | |||
| + | * **mcpc CLI** — krátkodobý | ||
| + | * **Bridge** — daemon, který drží MCP připojení živé. Jeden bridge na pojmenovanou session (např. '' | ||
| + | * **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š ('' | ||
| + | |||
| + | ===== Instalace ===== | ||
| + | |||
| + | ==== Předpoklad: Bun ==== | ||
| + | |||
| + | mcpc je distribuovaný jako npm balíček, ale globálně ho lze instalovat přes Bun bez '' | ||
| + | |||
| + | ==== Instalace mcpc ==== | ||
| <code bash> | <code bash> | ||
| - | mcpc connect mcp.apify.com | + | bun install -g @apify/mcpc |
| + | |||
| + | # Ověření | ||
| + | mcpc --version | ||
| + | which mcpc | ||
| </ | </ | ||
| - | 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 | + | ==== 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) |
| + | |||
| + | To znamená: **na Dockeru/ | ||
| + | |||
| + | 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 | ||
| + | dbus-run-session -- bash -c "echo -n ' | ||
| </ | </ | ||
| - | Žádný automatický timeout po nečinnosti | + | V drtivé |
| - | ==== Průběh volání | + | ===== Centralizovaný hub config ===== |
| - | Když AI zavolá | + | Nyní k praktické části — jak nakonfigurovat |
| + | |||
| + | ==== Filozofie ==== | ||
| + | |||
| + | * **Jeden soubor pro všechny servery** ('' | ||
| + | * **Jeden soubor pro všechny tajnosti** | ||
| + | * **Bash funkce v '' | ||
| + | * **Registr serverů v '' | ||
| + | |||
| + | ==== Struktura ==== | ||
| < | < | ||
| - | AI agent | + | ~/.config/mcpc/ |
| - | → Bash(" | + | ├── README.md |
| - | → mcpc CLI | + | ├── mcp.json |
| - | → Unix socket IPC | + | └── secrets.env |
| - | → bridge | + | |
| - | → MCP protokol | + | ~/ |
| - | → Playwright MCP server | + | ~/ |
| - | ← výsledek | + | ~/ |
| - | ← výsledek | + | ~/ |
| - | ← výsledek | + | |
| - | | + | |
| - | ← AI vidí pouze tento výstup | + | |
| </ | </ | ||
| - | 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ů | + | <code bash> |
| + | mkdir -p ~/ | ||
| + | cat > ~/ | ||
| + | { | ||
| + | " | ||
| + | } | ||
| + | EOF | ||
| + | </ | ||
| - | < | + | === 2. Vytvoř '' |
| - | Bez mcpc: | + | |
| - | Projekt A → vlastní Playwright instance | + | |
| - | Projekt B → vlastní Playwright instance (150 MB) | + | |
| - | Projekt C → vlastní Playwright instance (150 MB) | + | |
| - | | + | |
| - | S mcpc: | + | <code bash> |
| - | | + | touch ~/.config/mcpc/ |
| - | Projekt B → mcpc bridge → jedna Playwright instance (150 MB) | + | chmod 600 ~/.config/mcpc/ |
| - | Projekt C ↗ | + | |
| - | = 150 MB + overhead | + | |
| </ | </ | ||
| - | Úspora spočívá ve sdílení jedné instance, ne v automatickém uvolňování paměti po nečinnosti. | + | === 3. Přidej bash funkci do '' |
| - | ===== Co AI vidí v kontextu ===== | + | <code bash> |
| + | cat >> ~/.bashrc <<' | ||
| - | Tohle je jeden z klíčových rozdílů oproti klasickým MCP klientům. Standardní klienti (Claude Code, OpenCode) nač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 subshell, not the interactive shell |
| + | mcpc() { | ||
| + | if [ -f " | ||
| + | ( set -a; . " | ||
| + | else | ||
| + | command mcpc " | ||
| + | fi | ||
| + | } | ||
| + | EOF | ||
| - | S mcpc se do kontextu dostane jen to, co AI explicitně zavolá: | + | source ~/.bashrc |
| + | type mcpc # mcpc is a function | ||
| + | </ | ||
| - | ^ Co AI zavolá ^ Co se dostane do kontextu ^ | + | **Jak to funguje:** |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | Tomuto přístupu se říká | + | * Závorky '' |
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * 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 v projektu přihlašovací údaje nevidí a nepotřebuje je znát**. | + | <code bash> |
| + | echo " | ||
| + | mcpc @ctx tools-list | ||
| + | echo " | ||
| + | </ | ||
| - | Standardně se credentials konfigurují jednou přes mcpc CLI ('' | + | === 4. Přidej sekci do '' |
| - | Z pohledu AI agenta probíhá volání takto: | + | V Claude Code je globální konfigurace v '' |
| <code bash> | <code bash> | ||
| - | # AI zavolá – žádné tokeny, žádné API klíče | + | mkdir -p ~/.claude |
| - | mcpc @apify tools-call search-actors keywords: | + | ln -s ~/ |
| - | # AI dostane – jen výsledek | + | |
| </ | </ | ||
| - | Přihlašovací údaje jsou tak centrálně spravované | + | (Pokud '' |
| - | * AI agent nemusí mít přístup k '' | + | Do '' |
| - | * Pokud agent selže nebo je kompromitovaný, | + | |
| - | * Přepínání mezi účty nebo prostředími | + | |
| - | Pro ještě přísnější izolaci | + | <code markdown> |
| + | # MCP servery přes mcpc | ||
| + | |||
| + | MCP servery se nepřipojují nativně v Claude Code/ | ||
| + | |||
| + | ## 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=~/ | ||
| + | mcpc connect $HUB:< | ||
| + | mcpc @< | ||
| + | mcpc @< | ||
| + | mcpc @< | ||
| + | mcpc --json @< | ||
| + | ``` | ||
| + | |||
| + | **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 @< | ||
| + | |||
| + | **Servery s API klíčem:** hodnota patří do `~/ | ||
| + | </ | ||
| + | |||
| + | ===== 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 '' | ||
| <code bash> | <code bash> | ||
| - | mcpc connect --proxy | + | echo ' |
| </ | </ | ||
| - | 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 '' |
| - | ===== Cíle projektu ===== | + | **2. Přidej entry do '' |
| - | * **Plná podpora MCP** – všechny funkce protokolu, HTTP i stdio transport | + | <code json> |
| - | | + | " |
| - | | + | |
| - | | + | |
| + | " | ||
| + | | ||
| + | } | ||
| + | </ | ||
| - | ===== Instalace ===== | + | Některé servery chtějí standardní '' |
| + | |||
| + | <code json> | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | mcpc umí libovolný název headeru. | ||
| + | |||
| + | **3. Otestuj:** | ||
| <code bash> | <code bash> | ||
| - | npm install -g @apify/mcpc | + | mcpc connect ~/.config/mcpc/mcp.json: |
| - | # nebo přes Bun | + | mcpc @ctx tools-list |
| - | bun install -g @apify/mcpc | + | |
| </ | </ | ||
| - | Na Linuxu bez grafického prostředí je pro bezpečné ukládání přihlašovacích údajů potřeba nainstalovat | + | **4. Aktualizuj tabulku v '' |
| - | ===== Základní použití ===== | + | < |
| + | | `context7` | `@ctx` | Aktuální dokumentace knihoven, frameworků, | ||
| + | </ | ||
| - | ==== Připojení a sessions | + | ==== B. stdio server (lokální proces, většinou bez klíče) |
| - | mcpc pracuje s pojmenovanými sessions prefixovanými | + | **1. Entry v '' |
| + | |||
| + | <code json> | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | "@playwright/ | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | ], | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | **Pozor:** stdio podproces dědí z prostředí jen whitelist ('' | ||
| + | |||
| + | **2. Otestuj a aktualizuj AGENTS.md** (stejně jako varianta A). | ||
| + | |||
| + | ==== C. HTTP server bez autentizace ==== | ||
| + | |||
| + | **1. Entry s jen '' | ||
| + | |||
| + | <code json> | ||
| + | " | ||
| + | </ | ||
| + | |||
| + | **2. Otestuj a aktualizuj AGENTS.md.** | ||
| + | |||
| + | ===== Použití ===== | ||
| + | |||
| + | ==== Základní | ||
| <code bash> | <code bash> | ||
| - | # Přihlášení | + | # Přehled aktivních sessions |
| - | 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 ~/ |
| - | # Volání nástroje | + | # Detail serveru, capabilities, |
| - | mcpc @apify tools-call | + | mcpc @< |
| + | |||
| + | # Seznam toolů | ||
| + | mcpc @< | ||
| + | mcpc @< | ||
| + | |||
| + | # Plné schéma jednoho toolu | ||
| + | mcpc @< | ||
| + | |||
| + | # Zavolat tool | ||
| + | mcpc @< | ||
| + | |||
| + | # Hledání napříč sessions | ||
| + | mcpc grep "search" | ||
| # Interaktivní shell | # Interaktivní shell | ||
| - | mcpc @apify shell | + | mcpc @< |
| + | |||
| + | # Restart bridge (ztratí state, ale obnoví spojení) | ||
| + | mcpc @< | ||
| + | |||
| + | # Zavřít session (uvolní paměť) | ||
| + | mcpc @< | ||
| + | |||
| + | # Úklid (live sessions zachová, smaže staré logy a zombie sockety) | ||
| + | mcpc clean | ||
| + | |||
| + | # Nuclear option — všechno | ||
| + | mcpc clean all | ||
| </ | </ | ||
| - | 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: |
| + | |||
| + | # Force string z čísla | ||
| + | mcpc @s tools-call get-by-id id: | ||
| + | |||
| + | # Inline JSON object (první arg začíná { nebo [) | ||
| + | mcpc @s tools-call create ' | ||
| + | |||
| + | # Z stdin | ||
| + | echo ' | ||
| </ | </ | ||
| - | ==== 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 |
| + | | jq -r ' | ||
| - | # Hledání jen v konkrétní session | + | # Skládání přes pipe |
| - | mcpc @apify grep "actor" | + | mcpc --json |
| + | | jq ' | ||
| + | | xargs -I {} mcpc @s2 tools-call process id:="{}" | ||
| </ | </ | ||
| - | ==== Code mode (--json) | + | ===== Operační charakteristiky ===== |
| - | Pro použití v AI agentech nebo shellových skriptech | + | ==== Cold start ==== |
| + | |||
| + | * **První '' | ||
| + | * **Další '' | ||
| + | * **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 '' | ||
| + | |||
| + | ==== 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 | ||
| + | * Bridge zemře jen na: explicitní '' | ||
| + | * '' | ||
| + | |||
| + | ===== 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: | + | cat ~/.mcpc/ |
| - | | jq ' | + | |
| </ | </ | ||
| - | ===== Klíčové funkce ===== | + | Časté důvody: |
| - | ==== Persistentní sessions | + | * **Auth chyba** (HTTP 401) — server vyžaduje klíč, ale '' |
| + | * **Stdio command nenalezen** — chybí '' | ||
| + | * **Stdio podproces napsal na stderr** — bridge log ti tail stderr ukáže (řádky s '' | ||
| - | 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" |
| - | Podporované metody autentizace: | + | Cold-start race: první '' |
| - | * Anonymní přístup (veřejné servery) | + | <code bash> |
| - | | + | mcpc connect ~/ |
| - | | + | sleep 8 # dej serveru čas na inicializaci |
| - | | + | mcpc @px tools-call search query: |
| + | </ | ||
| + | |||
| + | ==== „401 Unauthorized" | ||
| + | |||
| + | Server odmítl klíč: | ||
| + | |||
| + | | ||
| + | | ||
| + | |||
| + | <code bash> | ||
| + | mcpc @< | ||
| + | mcpc connect ~/ | ||
| + | </ | ||
| + | |||
| + | ==== Memory roste neúměrně ==== | ||
| + | |||
| + | mcpc samo nemá memory leak. Pokud RSS roste: | ||
| + | |||
| + | | ||
| + | - '' | ||
| + | - Pro restart konkrétního serveru: '' | ||
| + | - Pro všeobecný úklid: '' | ||
| + | |||
| + | ==== Bash funkce se neuplatňuje ==== | ||
| + | |||
| + | <code bash> | ||
| + | type mcpc | ||
| + | # Pokud výstup je "/ | ||
| + | source ~/.bashrc | ||
| + | type mcpc | ||
| + | # Teď musí být "is a function" | ||
| + | </ | ||
| + | |||
| + | V neinteraktivních shellech (CI, některé hooks) se '' | ||
| + | |||
| + | ===== Bezpečnost a izolace ===== | ||
| + | |||
| + | ==== Subshell isolation pattern ==== | ||
| + | |||
| + | Bash funkce '' | ||
| + | |||
| + | ^ Co ^ S auto-source v '' | ||
| + | | '' | ||
| + | | Jiný proces čte ''/ | ||
| + | | Náhodný npm balíček spuštěný uživatelem | vidí klíč ⚠️ | bez klíče ✅ | | ||
| + | | '' | ||
| + | |||
| + | ==== Co AI agent vidí vs. nevidí ==== | ||
| + | |||
| + | < | ||
| + | ✅ AI vidí: | ||
| + | ✅ AI vidí: | ||
| + | ❌ AI nevidí: | ||
| + | ❌ AI nevidí: | ||
| + | ❌ AI nevidí: | ||
| + | </ | ||
| + | |||
| + | ==== 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 ~/ | ||
| + | |||
| + | # AI v sandboxu: připojí se na proxy bez znalosti původních credentials | ||
| + | mcpc connect localhost: | ||
| + | mcpc @sandboxed tools-call search-actors keywords: | ||
| + | </ | ||
| + | |||
| + | 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í operace, které | + | Pro nasazení na nový stroj (např. Docker image, nový server): |
| - | ==== x402 platby ==== | + | - **Instalace mcpc** — viz sekce „Instalace" |
| + | - **Vytvoř hub config** — '' | ||
| + | - **Vytvoř '' | ||
| + | - **Přidej bash funkci** do '' | ||
| + | - **Vytvoř '' | ||
| + | - **Přidej sekci do '' | ||
| + | - **Postupně přidávej servery** dle Receptu výše | ||
| - | mcpc implementuje protokol | + | Šablonu hub '' |
| ===== 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é |
| - | + | ||
| - | ===== 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:// | * [[https:// | ||
| - | * [[https://apify.com|Apify]] – autoři projektu | + | * [[https://github.com/ |
| + | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| - | * Vibecoding Talks, 20. 4. 2026 – Jan Curn (@jancurn), Apify | + | |
| + | | ||