WordPress MCP Adapter: kako iz Abilities hitro prideš do AI agentov
WordPress je z Abilities API (predstavljen v WordPress 6.9) dobil nekaj, kar smo razvijalci dolgo pogrešali: enoten, odkrivljiv in tipiziran način, da jedro in vtičniki povedo, kaj znajo narediti – in to tako, da je istočasno uporabno iz PHP, JavaScripta in prek REST API. Če k temu dodaš še aktualni val avtomatizacije z generativno AI, je naslednji logični korak jasen: kako AI orodju varno in strukturirano omogočiti, da na tvojem WordPressu kaj izvede ali prebere kontekst.
Tu v igro stopi WordPress MCP Adapter – uradni paket v sklopu pobude AI Building Blocks for WordPress. Njegova ideja je preprosta: Abilities pretvori v gradnike protokola Model Context Protocol (MCP), tako da lahko AI odjemalci (npr. Claude Desktop, Claude Code, Cursor, VS Code) na tvojem spletišču odkrijejo in kličejo WordPress funkcionalnosti kot MCP tools ter po potrebi berejo podatke kot MCP resources.
Hitri opomnik: kaj so WordPress Abilities in zakaj so pomembne
Abilities API WordPressu doda “prvorazredni”, čezkontekstni funkcijski API (v praksi: standard, kako opisati in izpostaviti zmožnosti). Namesto da ima vsak vtičnik svoj slog endpointov in svoje neformalno dokumentiranje, Ability definiraš enkrat in dobiš odkrivljiv objekt, ki ga lahko kličeš iz različnih okolij.
Vsaka Ability je definirana z naslednjimi elementi:
- unikatno ime v obliki
namespace/ability-name - tipizirana shema za input in output (schema)
permission_callback, ki uveljavi pravice (capabilities)execute_callback, ki izvede dejansko delo
Kar se zgodi v execute_callback, je lahko praktično karkoli, kar je smiselno kot “diskretna enota dela”: branje podatkov, posodobitev objav, diagnostika, generiranje poročil … Ko je Ability registrirana, je odkrivljiva in izvedljiva iz PHP, JavaScripta in REST API.
WordPress 6.9 privzeto vključuje tri Core Abilities, ki so priročne za testiranje:
core/get-site-info: vrne informacije o spletišču, konfigurirane v WordPressu; privzeto vrne vsa polja, lahko pa tudi filtriran podnabor.core/get-user-info: vrne osnovne profilne podatke za trenutno avtenticiranega uporabnika – uporabno za personalizacijo, revizijo in “access-aware” obnašanje.core/get-environment-info: vrne jedrne podatke o runtime okolju (okolje, PHP runtime, podatki o podatkovni bazi, verzija WordPressa) za diagnostiko in kompatibilnost.
Kaj je WordPress MCP Adapter in kaj v praksi omogoča
Model Context Protocol (MCP) je način, kako AI modelu (oz. AI odjemalcu/agentu) standardizirano ponudiš dodatni kontekst in zmožnosti. MCP definira, kako odjemalec odkrije, kaj strežnik ponuja, in kako to tudi uporabi.
WordPress MCP Adapter naredi ključen most: Abilities, registrirane prek Abilities API, preslika v MCP primitive, ki jih AI agenti razumejo. To pomeni, da če tvoj vtičnik že registrira Abilities, si praktično korak stran od tega, da jih AI agent uporablja.
MCP v treh pojmih: tools, resources, prompts
MCP interakcije organizira v tri osnovne primitive:
- tools: izvedljive funkcije, ki jih AI kliče za akcije (npr. “pridobi podatke”, “posodobi objavo”, “zaženi diagnostiko”).
- resources: pasivni viri podatkov, ki jih AI bere kot kontekst (npr. datoteke, vrstice iz baze, logi).
- prompts: vnaprej pripravljene predloge, ki vodijo specifične tokove dela.
Pri MCP Adapterju so Abilities praviloma izpostavljene kot tools, ker predstavljajo izvedljivo logiko. Adapter pa je dovolj fleksibilen, da lahko Ability, ki je v resnici samo read-only vir (recimo statična konfiguracija ali debug log), konfiguriraš tudi kot resource – tako jo AI “posrka” kot ozadje, brez aktivnega klica orodja.
Namestitev MCP Adapterja (najhitrejša pot)
Najhitreje začneš tako, da MCP Adapter namestiš kot vtičnik z GitHub Releases strani: https://github.com/WordPress/mcp-adapter/releases. Po aktivaciji vtičnik registrira privzeti MCP strežnik z imenom mcp-adapter-default-server ter tri svoje Abilities:
mcp-adapter/discover-abilitiesmcp-adapter/get-ability-infomcp-adapter/execute-ability
Te tri Abilities so avtomatsko izpostavljene tudi kot MCP tools:
mcp-adapter-discover-abilitiesmcp-adapter-get-ability-infomcp-adapter-execute-ability
V praksi to AI agentu omogoča “plastni” pristop: najprej odkrije, katere Abilities obstajajo, potem dobi informacije o posamezni Ability, nato pa jo izvede.
Kako omogočiš Abilities na privzetem MCP strežniku
Privzeti MCP strežnik ne izpostavi vsake Ability avtomatsko. Da je Ability dosegljiva prek mcp-adapter-default-server, mora biti pri registraciji označena kot javna za MCP – z zastavico meta.mcp.public v argumentih wp_register_ability().
'meta' => array(
'mcp' => array(
'public' => true, // Required for MCP default server access
),
)Pri Core Abilities seveda ne urejaš jedra. Namesto tega uporabiš filter wp_register_ability_args in dopolniš argumente registracije, da se doda meta.mcp.public.
<?php
/**
* Plugin Name: Enable core abilities
* Version: 1.0.0
*
* @package enable-core-abilities
*/
add_filter( 'wp_register_ability_args', 'myplugin_enable_core_abilities_mcp_access', 10, 2 );
/**
* Enable MCP access for core abilities.
*
* @param array $args Ability registration arguments.
* @param string $ability_name Ability ID.
* @return array Modified ability registration arguments.
*/
function myplugin_enable_core_abilities_mcp_access( array $args, string $ability_name ) {
// Enable MCP access for the three current core abilities.
$core_abilities = array(
'core/get-site-info',
'core/get-user-info',
'core/get-environment-info',
);
if ( in_array( $ability_name, $core_abilities, true ) ) {
$args['meta']['mcp']['public'] = true;
}
return $args;
}
Ko je to nastavljeno, se lahko AI odjemalec poveže na tvoj WordPress in prek MCP tools kliče tudi te Core Abilities (prek privzetega strežnika).
Povezovanje AI aplikacij: STDIO vs HTTP transport
MCP definira dva transportna mehanizma: STDIO in HTTP. Izbira je v veliki meri odvisna od tega, kje WordPress teče.
STDIO transport (lokalni razvoj)
Za lokalna razvojna okolja je običajno najpreprostejši STDIO. MCP Adapter to omogoči prek WP-CLI (ukazno-orodje za WordPress), zato moraš imeti WP-CLI lokalno nameščen.
Minimalna konfiguracija (na strani AI odjemalca) izgleda takole:
"wordpress-mcp-server": {
"command": "wp",
"args": [
"--path=/path/to/your/wordpress/installation",
"mcp-adapter",
"serve",
"--server=mcp-adapter-default-server",
"--user={admin_user}"
]
}Pomen polj:
- ime strežnika (
wordpress-mcp-server) je poljubno – izbereš karkoli. commandjewp(WP-CLI).--pathkaže na WordPress namestitev.mcp-adapter servezažene MCP Adapter strežnik.--serverizbere MCP strežnik (tu privzeti).--userdoloči WordPress uporabnika, s katerim se odjemalec avtenticira (npr. admin).
HTTP transport (javno dostopna namestitev ali brez STDIO)
Za javno dostopne WordPress namestitve (ali če ne želiš STDIO) lahko uporabiš HTTP prek oddaljenega proxyja @automattic/mcp-wordpress-remote: https://www.npmjs.com/package/@automattic/mcp-wordpress-remote. To zahteva nameščen Node.js ter avtentikacijo prek WordPress application passwords ali lastne OAuth implementacije.
Minimalna konfiguracija za HTTP transport:
"wordpress-mcp-server": {
"command": "npx",
"args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
"env": {
"WP_API_URL": "https://yoursite.example/wp-json/mcp/mcp-adapter-default-server",
"WP_API_USERNAME": "{admin_user}",
"WP_API_PASSWORD": "{application-password}"
}
}Pomen polj:
commandjenpx(zaganjanje Node paketov).-ysamodejno potrdi namestitev paketa.@automattic/mcp-wordpress-remote@latestuporabi zadnjo različico proxy paketa.WP_API_URLkaže na MCP endpoint na tvojem WordPressu.WP_API_USERNAMEje uporabnik za avtentikacijo.WP_API_PASSWORDje application password za tega uporabnika.
Če HTTP proxy uporabljaš tudi za lokalne namestitve, so pogoste težave povezane z več različicami Node.js ali z lokalnimi SSL certifikati. V takem primeru pomaga dokument z nasveti za odpravljanje težav: https://github.com/Automattic/mcp-wordpress-remote/blob/trunk/Docs/troubleshooting.md.
Konfiguracije po aplikacijah: Claude Desktop, Cursor, Claude Code, VS Code
V nadaljevanju so tipične točke, kjer v posamezni aplikaciji nastaviš MCP strežnike. Format konfiguracije je v osnovi enak (JSON), razlika je predvsem v lokaciji datoteke in imenu root ključa.
Claude Desktop
V Claude Desktop pojdi v zavihek Developer (Claude → Settings → Developer). Pod Local MCP servers izberi Edit config. Odpre se lokacija datoteke claude_desktop_config.json, kjer dodaš MCP strežnike v objekt mcpServers.
{
"mcpServers": {
}
}Primer za STDIO transport:
{
"mcpServers": {
"wordpress-mcp-server": {
"command": "wp",
"args": [
"--path=/Users/jonathanbossenger/Studio/wordpress-mcp",
"mcp-adapter",
"serve",
"--server=mcp-adapter-default-server",
"--user=admin"
]
}
}
}Primer za HTTP transport:
{
"mcpServers": {
"wordpress-mcp-server": {
"command": "npx",
"args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
"env": {
"WP_API_URL": "http://localhost:8885/wp-json/mcp/mcp-adapter-default-server",
"WP_API_USERNAME": "admin",
"WP_API_PASSWORD": "2SEB qW5j D7CW fpsh pbmN RGva"
}
}
}
}Po shranjevanju konfiguracije moraš Claude Desktop ponovno zagnati, ker konfiguracijo MCP strežnikov prebere samo ob zagonu. Nato se v Developer zavihku pri Local MCP servers prikaže tvoj strežnik; status running pomeni, da je pripravljen.
Cursor
V Cursor pojdi v Settings (Cursor → Settings → Cursor Settings) in odpri sekcijo Tools and MCP. Klikni Add Custom MCP, kar odpre konfiguracijsko datoteko mcp.json. Format je isti kot pri Claude Desktop (torej mcpServers). Po shranjevanju se MCP strežnik prikaže v seznamu, kjer ga omogočiš za coding seje.

Claude Code
V Claude Code lahko MCP strežnike dodaš na dva načina: (1) dodaš mcpServers objekt z nastavitvami v .claude.json v domačem imeniku ali (2) ustvariš .mcp.json v imeniku projekta. Prednost konfiguracije v projektu je, da lahko imaš različne MCP strežnike po projektih; konfiguracija v home direktoriju pa velja globalno. Format konfiguracije je enak kot pri Cursor/Claude Desktop.
VS Code
Za VS Code se MCP strežniki definirajo v JSON datoteki (običajno mcp.json) znotraj .vscode mape v tvojem workspace-u. Posebnost: namesto mcpServers uporabiš root ključ servers. Vse ostalo (command/args/env) ostane enako. VS Code nato prikaže kontrolno orodno vrstico za MCP, kjer strežnik zaženeš/ustaviš/restartaš.
{
"servers": {
// MCP server definitions go here
}
}Ko se strežnik pravilno zažene, VS Code pokaže tudi število razpoložljivih orodij (tools), ki jih AI lahko uporablja (v osnovnem primeru so to tri).
Uporaba MCP tools v praksi (primer poteka)
Ko je MCP strežnik povezan z izbrano AI aplikacijo, lahko začneš uporabljati tools, ki jih MCP Adapter izpostavi. Tipičen primer: v Claude Desktop v pogovor napišeš zahtevo tipa “Get the site info from my WordPress site”.
Agent najprej zazna, da obstaja MCP strežnik, in pokliče tool mcp-adapter-discover-abilities, da ugotovi, katere Abilities so na voljo. Nato sklepa, da za zahtevo ustreza core/get-site-info, in pokliče mcp-adapter-execute-ability, pri čemer kot parameter posreduje ime Ability core/get-site-info. Odgovor toola je strukturiran izhod Ability, aplikacija pa nato z njim sestavi človeško berljiv odgovor.
Ko privzeti strežnik ni dovolj: custom MCP server v tvojem vtičniku
Privzeti strežnik bo za veliko primerov dovolj, včasih pa želiš več nadzora nad tem, kaj točno se izpostavi kot tool/resource in pod katerim strežnikom. Takrat narediš custom MCP server v okviru svojega vtičnika.
Za to pot potrebuješ MCP Adapter kot PHP odvisnost prek Composerja. V mapi vtičnika zaženi:
composer require wordpress/mcp-adapterNato v glavnem plugin fajlu naloži Composer autoloader:
if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
require_once __DIR__ . '/vendor/autoload.php';
}Ker je realno možno, da bo na istem spletišču več vtičnikov odvisnih od MCP Adapterja ali Abilities API, se priporoča uporaba Jetpack Autoloaderja, da se izogneš konfliktom verzij: https://github.com/WordPress/mcp-adapter/blob/trunk/docs/getting-started/installation.md#using-jetpack-autoloader-highly-recommended.
Potem inicializiraš MCP Adapter (in s tem tudi njegov privzeti strežnik):
if ( ! class_exists( WPMCPCoreMcpAdapter::class ) ) {
// check if the MCP Adapter class is available, if not show some sort of error or admin notice
return;
}
// Initialize MCP Adapter and its default server.
WPMCPCoreMcpAdapter::instance();
Custom strežnik ustvariš tako, da se priklopiš na akcijo mcp_adapter_init. Callback dobi instanco adapterja, nato pa s create_server() definiraš strežnik in seznam Abilities, ki jih želiš izpostaviti kot tools.
add_action( 'mcp_adapter_init', 'myplugin_create_custom_mcp_server' );
function myplugin_create_custom_mcp_server( $adapter ) {
$adapter = WPMCPCoreMcpAdapter::instance();
$adapter->create_server(
'custom-mcp-server', // Unique server identifier.
'custom-mcp-server', // REST API namespace.
'mcp', // REST API route.
'Custom MCP Server', // Server name.
'Custom MCP Server', // Server description.
'v1.0.0', // Server version.
array( // Transport methods.
WPMCPTransportHttpTransport::class, // Recommended: MCP 2025-06-18 compliant.
),
WPMCPInfrastructureErrorHandlingErrorLogMcpErrorHandler::class, // Error handler.
WPMCPInfrastructureObservabilityNullMcpObservabilityHandler::class, // Observability handler.
array( 'namespace/ability-name' ), // Abilities to expose as tools
array(), // Resources (optional).
array(), // Prompts (optional).
);
}
Parametri, na katere je vredno biti posebej pozoren:
- 1. parameter: unikatni identifikator strežnika (uporabi se tudi, ko strežnik zaganjaš prek WP-CLI).
- 2. in 3. parameter: REST API namespace in route za MCP strežnik.
- 4. in 5. parameter: ime in opis strežnika (AI aplikacije to prikažejo, ko listajo strežnike).
- 6. parameter: verzija strežnika.
- 10. parameter: seznam Ability imen, ki jih izpostaviš kot MCP tools (lahko jih je več).
- ostali parametri: transport, error handler, observability handler – v primeru potrebuješ lahko tudi svoje lastne handlerje za integracijo v interno infrastrukturo.
Primer: dodaj custom MCP server v List All URLs
Konkretna demonstracija je nadgradnja vtičnika List All URLs, ki obstaja kot primer pri Abilities API. Najprej deaktiviraj MCP Adapter vtičnik, če je aktiven.
Nato kloniraj repo v wp-content/plugins:
cd wp-content/plugins
git clone git@github.com:wptrainingteam/list-all-urls.gitPreklopi na vejo, ki vključuje implementacijo Abilities API:
cd list-all-urls
git checkout abilitiesKer vtičnik že uporablja Composer, zaženi namestitev odvisnosti:
composer installNato dodaj mcp-adapter kot odvisnost:
composer require wordpress/mcp-adapterOdpri list-all-urls.php in na konec dodaj inicializacijo MCP Adapterja ter definicijo custom strežnika:
if ( ! class_exists( WPMCPCoreMcpAdapter::class ) ) {
return;
}
// Initialize MCP Adapter and its default server.
WPMCPCoreMcpAdapter::instance();
add_action( 'mcp_adapter_init', 'list_all_urls_create_custom_mcp_server' );
/**
* Create a custom MCP server for the List All URLs plugin.
*
* @param object $adapter WPMCPCoreMcpAdapter The MCP Adapter instance.
* @return void
*/
function list_all_urls_create_custom_mcp_server( $adapter ) {
$adapter = WPMCPCoreMcpAdapter::instance();
$adapter->create_server(
'list-all-urls-mcp-server',
'list-all-urls-mcp-server',
'mcp',
'List All URLS MCP Server',
'Custom MCP Server for the List All URLs plugin. Currently exposes only the list-all-urls/urls ability as an MCP Tool.',
'v1.0.0',
array(
WPMCPTransportHttpTransport::class,
),
WPMCPInfrastructureErrorHandlingErrorLogMcpErrorHandler::class,
WPMCPInfrastructureObservabilityNullMcpObservabilityHandler::class,
array( 'list-all-urls/urls' ),
);
}
Pomemben detajl: za list-all-urls/urls ti tukaj ni treba nastaviti meta.mcp.public, ker Ability izpostaviš eksplicitno prek custom strežnika.
Nato vtičnik aktiviraj v WordPress administraciji. Ko je aktiven, posodobi MCP konfiguracijo v AI aplikaciji, da uporablja tudi novi strežnik.
Primer mcp.json za VS Code, kjer imaš konfigurirana dva strežnika (oba prek STDIO): privzeti in custom list-all-urls-mcp-server.
{
"servers": {
"wordpress-mcp-server": {
"command": "wp",
"args": [
"--path=/Users/jonathanbossenger/Studio/wordpress-mcp",
"mcp-adapter",
"serve",
"--server=mcp-adapter-default-server",
"--user=admin"
]
},
"list-all-urls-mcp-server": {
"command": "wp",
"args": [
"--path=/Users/jonathanbossenger/Studio/wordpress-mcp",
"mcp-adapter",
"serve",
"--server=list-all-urls-mcp-server",
"--user=admin"
]
}
}
}Več MCP strežnikov v isti aplikaciji je povsem normalno: tako lahko preklapljaš med različnimi WordPressi ali med različnimi vtičniki, ki izpostavljajo različne nabore Abilities.
Po posodobitvi konfiguracije aplikacijo ponovno zaženi ali v aplikaciji zaženi MCP strežnik, odvisno od tega, kako tvoj odjemalec upravlja lifecycle. Ko je vse aktivno, lahko AI-ju naročiš npr. “List all URLs on my WordPress site” in agent bo uporabil tool list-all-urls-urls prek MCP Adapterja.
Varnost in dobre prakse: MCP odjemalec je prijavljen uporabnik
Največja mentalna sprememba pri MCP je ta: MCP odjemalci delujejo kot prijavljeni WordPress uporabniki. To pomeni, da jih moraš obravnavati kot del napadalne površine aplikacije. Priporočila, ki se jih splača držati:
- Premišljeno uporabi
permission_callback: vsaka Ability naj preveri minimalno potrebno capability (npr.manage_options,edit_posts…). Izogibaj se__return_truepri destruktivnih operacijah, kot je brisanje vsebine. - Uporabi namenske uporabnike za MCP dostop: posebej v produkciji naredi ločeno vlogo/uporabnika z omejenimi pravicami.
- Ne izpostavljaj močnih Abilities nepreverjenim AI odjemalcem: če AI klienta nimaš pod nadzorom ali ga nisi auditiral, bodi restriktiven.
- Za javne HTTP endpoint-e raje read-only Abilities: diagnostika, poročila, dostop do vsebine in konteksta; manj tveganja, več vrednosti.
- Po potrebi implementiraj lastno avtentikacijo: privzeto se zanašaš na application passwords, lahko pa dodaš OAuth ali druge pristope za boljšo varnost.
- Spremljaj in logiraj uporabo: z custom error in observability handlerji se poveži na svoj logging/monitoring stack.
Kako začeti danes: minimalna “hello AI” pot
Če želiš samo hitro preizkusiti, ali ti koncept sede, je minimalni recept za WordPress razvijalca kratek:
- registriraj eno Ability (idealno read-only, nedestruktivno),
- dodaj MCP Adapter kot odvisnost (ali ga namesti kot vtičnik) in ga inicializiraj,
- poveži MCP-aware AI odjemalca (Claude Desktop, Cursor, VS Code, Claude Code) prek STDIO ali HTTP,
- testiraj klic orodij in nato postopoma širi nabor Abilities.
Če imaš že obstoječe vtičnike, ki uporabljajo Abilities API, MCP Adapter iz njih z malo dodatnega dela naredi AI-ready API. Najbolj zdrava strategija je začeti z majhnim naborom read-only zmožnosti v lokalnem okolju, šele potem pa razmišljati o kompleksnejših workflowih.
Za poglobljeno branje sta uporabna predvsem uradna dokumentacija Abilities API: https://developer.wordpress.org/apis/abilities/ in repozitorij MCP Adapterja: https://github.com/WordPress/mcp-adapter.
Reference / Viri
- From Abilities to AI Agents: Introducing the WordPress MCP Adapter
- Abilities API introduced in WordPress 6.9
- Introducing the WordPress Abilities API
- Model Context Protocol
- AI Building Blocks for WordPress
- MCP Adapter
- wordpress/mcp-adapter (GitHub)
- WordPress MCP Adapter releases
- @automattic/mcp-wordpress-remote
- mcp-wordpress-remote troubleshooting
- WP-CLI
- Application Passwords Integration Guide
- List All URLs plugin
- Using Jetpack Autoloader (highly recommended)
- VS Code MCP server configuration
- Build MCP tools like ogres with layers
- Connect AI agents to WordPress (OAuth 2.1)
Luka Horvat
Razvijalec progresivnih spletnih aplikacij in offline-first pristopa. Service workerji in strategije predpomnjenja so moja specialnost. Splet naj deluje povsod!
Vse objave