↳ Zápisky

Jak nechat AI psát příspěvky do WordPressu – bezpečně přes MCP a Abilities API

Možná vás taky láká nechat AI asistenta (já si hraju s Claude Code) připravovat příspěvky rovnou ve WordPressu – a zároveň vám z té představy naskakuje husina, protože byste jí kvůli tomu museli dát do ruky celé REST API a administrátorský účet. Mně teda naskakovala:) Když jsem si tohle rozjížděl na svém webu hilgert.cz, hledal jsem cestu, jak AI pustit jen k pár konkrétním, ohlídaným akcím, a ne jí předat klíče od celého baráku. A ono to jde. Pojďme si projít, co k tomu potřebujete, co kde nastavit a hlavně proč to takhle dává smysl – a rovnou ukážu i cestu, jak se obejít úplně bez psaní kódu.

Co budeme skládat dohromady?

Celé to stojí na třech dílcích, kde každý má jednu roli:

  • Abilities API – registr „schopností“ webu. Každá schopnost (ability) je pojmenovaná akce, např. create-post, s jasně danými vstupy a kontrolou oprávnění.
  • MCP Adapter – plugin, který tyhle schopnosti vystaví ven přes protokol MCP, aby na ně AI klient dosáhl.
  • MCP klient – tady Claude Code, ale funguje libovolný nástroj, který MCP umí.

K tomu budete potřebovat WordPress 6.9+, jeden Application Password a chvilku na nastavení. Pojďme na to popořadě.

Je potřeba něco instalovat? (Abilities API)

Dobrá zpráva: pokud jedete na WordPressu 6.9 nebo novějším, Abilities API je rovnou v jádře a nemusíte instalovat nic. Ve zkratce jde o registr akcí – místo abyste AI pustili k „libovolnému SQL“, definujete přesně ohraničené schopnosti, u kterých si pohlídáte, kdo a co s nimi smí.

Kde vzít MCP Adapter?

MCP Adapter je oficiální plugin, ale pozor – nenajdete ho v adresáři pluginů na WordPress.org, takže ho v adminu přes vyhledávání jen tak nedohledáte. Bydlí na GitHubu v repozitáři WordPress/mcp-adapter. Nejjednodušší je stáhnout poslední mcp-adapter.zip ze sekce Releases a nahrát ho v adminu přes Pluginy → Přidat nový → Nahrát plugin – stejně jako kterýkoli jiný plugin ze ZIPu. Po aktivaci vystaví schopnosti jako MCP nástroje na adrese typu https://vasweb.cz/wp-json/mcp/mcp-adapter-default-server. Tím máte most mezi WordPressem a MCP hotový – jen zatím nemá co nabízet.

Jak přidat akce, aniž byste psali řádek kódu?

Samotný adapter totiž žádné akce neumí – jen vystavuje to, co je přes Abilities API zaregistrované. Potřebujete tedy něco, co schopnosti pro práci s příspěvky zaregistruje. A tady mám dobrou zprávu: dost možná si vystačíte úplně bez kódu.

Plugin Enable Abilities for MCP z oficiálního adresáře přidá rovnou desítky hotových schopností – správu příspěvků, stránek, komentářů a médií, ale třeba i WooCommerce nebo SEO (Yoast, Rank Math, SEOPress). V jeho administraci si pak přepínači zaškrtnete přesně to, co chcete AI zpřístupnit, a zbytek necháte vypnutý. Pro většinu lidí je tohle úplně dostačující start.

Pokud chcete akce přesně na míru, napíšete si vlastní mini-plugin a schopnosti zaregistrujete přes wp_register_ability() na hooku wp_abilities_api_init. Já jsem touhle cestou nakonec šel, protože jsem chtěl mít pod palcem hlavně to, co která akce smí – u každé schopnosti si totiž nastavíte vlastní permission_callback, tedy přesně kdo a co s ní zvládne.

Celý svůj mini-plugin (jen pár schopností pro práci s příspěvky) jsem dal jako veřejný gist na GitHubu – klidně si ho vezměte jako základ a osekejte nebo přidejte, co potřebujete:

Důležité. Zaregistrované schopnosti nejsou do MCP vidět automaticky. Aby je AI vůbec uviděla, musí mít v metadatech příznak mcp.public = true. Je to whitelist, ne blacklist – co výslovně nepovolíte, zůstává schované. Mně osobně se tak spí o dost klidněji.

Jak se klient k webu přihlásí?

MCP klient se k webu hlásí přes Application Password, což je standardní součást WordPressu. Vygenerujete ho v Uživatelé → Váš profil → Application Passwords: zadáte název (třeba „MCP klient“), WordPress vytvoří heslo a ukáže vám ho jen jednou – tak si ho hned zkopírujte. Tip z praxe: nepoužívejte na to admina, ale založte AI radši samostatného uživatele s omezenou rolí. Když se něco zvrtne, neprojde to přes celý web.

Jak připojit MCP klienta?

V Claude Code (a podobných nástrojích) se MCP servery nastavují v souboru .mcp.json. Přidáme do něj HTTP transport, adresu z předchozího kroku a Basic auth s naším Application Password (uživatelské jméno a heslo zakódované do Base64):

{
  "mcpServers": {
    "wordpress": {
      "type": "http",
      "url": "https://vasweb.cz/wp-json/mcp/mcp-adapter-default-server",
      "headers": {
        "Authorization": "Basic BASE64_UZIVATEL_DVOJTECKA_HESLO"
      }
    }
  }
}

Ten řetězec za Basic není heslo samo o sobě – je to uživatelské jméno a heslo spojené dvojtečkou a zakódované do Base64, tedy jméno:heslo. Když se třeba uživatel jmenuje mcp-redaktor a jeho application password je abcd EFGH ijkl MNOP, zakóduje se přesně tenhle text – i s mezerami v hesle:

mcp-redaktor:abcd EFGH ijkl MNOP

Z toho vznikne Base64 podoba, kterou vložíte za Basic :

bWNwLXJlZGFrdG9yOmFiY2QgRUZHSCBpamtsIE1OT1A=

Zakódovat si to můžete několika způsoby – nejbezpečnější lokálně, ať heslo neopustí váš počítač:

  • V terminálu (Linux/macOS): printf '%s' 'mcp-redaktor:abcd EFGH ijkl MNOP' | base64. Použijte printf (nebo echo -n) – jinak se na konec přidá neviditelný řádkový zlom a přihlášení selže.
  • V konzoli prohlížeče (F12 → Console): btoa('mcp-redaktor:abcd EFGH ijkl MNOP').

Klient si podle type: http a url najde server a hlavičkou Authorization se přihlásí. Důležité. Hlavně dejte pozor, ať vám soubor .mcp.json s heslem nikam neunikne – třeba do veřejného gitového repozitáře. Klidně si ho rovnou přidejte do .gitignore.

Ještě jeden předpoklad k té adrese: tvar s /wp-json/ funguje, jen když máte zapnuté hezké (pretty) permalinky. Na výchozích plain permalinkách vám endpoint vrátí 404, takže sáhněte po tvaru https://vasweb.cz/?rest_route=/mcp/mcp-adapter-default-server.

A funguje to?

Po připojení by měl klient vidět nástroje jako discover-abilities, get-ability-info a execute-ability. Pak už stačí napsat třeba „vypiš poslední příspěvky“, „založ koncept článku o X“ nebo „zkontroluj mi gramatiku a překlepy v mých příspěvcích“ a ono se to stane. Jen pozor – cokoli AI takhle spustí, se děje na živém webu, takže dokud si nejste jistí, hrajte si radši na lokálu nebo stagingu. Mimochodem – tenhle zápisek jsem do WordPressu založil přesně takhle, jako koncept přes MCP:)

Závěr

Celé kouzlo je v tom, že AI nedostane široký přístup do webu, ale jen úzká, ohlídaná dvířka – přesně ta, co zrovna potřebuje, a ani o klíč víc. A pokud vám stačí běžná správa příspěvků, dost možná se obejdete úplně bez kódu a vystačíte si s pluginem Enable Abilities for MCP. Až budete chtít něco extra na míru, doplníte si vlastní schopnost. Mně tahle hračička udělala radost – a snad bude užitečná i vám:)

Kde se dočíst víc: hezký úvod do celé téhle novinky najdete na WordPress Developer Blogu, kód a dokumentaci pak v repu WordPress/mcp-adapter.

↳ Poznámku napsal

Potřebujete upravit web?

Nejsem fanoušek desítek pluginů, které web zpomalí. Co jde, vyřeším čistým kódem - bez zbytečné zátěže navíc.

Probrat úpravu webu