WordPress MCP Adapter: kako Abilities pretvoriti u alate za AI agente
WordPress 6.9 je s Abilities API-jem (API za “mogućnosti”) napravio vrlo pragmatičan potez: umjesto da svaka integracija izmišlja vlastiti način pozivanja funkcionalnosti, dobili smo jedinstveni, pretraživ (discoverable), tipiziran i izvršiv sloj koji radi kroz PHP, JavaScript i REST API.
Ako ti je na radaru automatizacija uz Generative AI (izvještaji, dijagnostika, upravljanje sadržajem, operativni zadaci), sljedeća karika je Model Context Protocol (MCP). MCP omogućuje da AI alat dobije strukturirani “kontekst” i standardiziran način pozivanja funkcija i čitanja podataka iz sustava. U WordPress svijetu, tu ulogu preuzima WordPress MCP Adapter: on mapira Abilities u MCP primitive kako bi AI agent mogao otkriti i izvršiti mogućnosti tvoje stranice.
Brzi podsjetnik: što Abilities API zapravo standardizira
Abilities API uvodi “first-class” funkcionalni API kroz kontekste: core i pluginovi mogu izložiti što znaju napraviti na način koji je konzistentan, tipiziran i lako otkriven.
Jednu ability (mogućnost) definiraš jednom, kroz:
- Jedinstveno ime u formatu
namespace/ability-name. - Tipiziranu input schema i output schema (sheme ulaza/izlaza).
permission_callbackkoji provjerava capability-je (ovlasti) i kontrolira pristup.execute_callbackkoji izvršava stvarni posao (fetch podataka, update postova, dijagnostika ili bilo koja druga diskretna jedinica posla).
Nakon registracije, ability je otkriva i izvršiva iz PHP-a, JavaScripta i REST API-ja. To je bitno jer MCP Adapter koristi upravo taj standardizirani sloj kao temelj.
Core abilities koje dolaze uz WordPress 6.9
WordPress 6.9 dolazi s tri zadane (core) abilities, koje su zgodne za prvi test MCP Adaptera:
core/get-site-info: vraća informacije o webu konfigurirane u WordPressu. Po defaultu vraća sva polja, ili opcionalno filtrirani podskup.core/get-user-info: vraća osnovne profilne detalje za trenutno autentificiranog korisnika (personalizacija, auditiranje, ponašanje ovisno o pristupu).core/get-environment-info: vraća detalje o runtime kontekstu stranice za dijagnostiku i kompatibilnost (okruženje, PHP runtime, info o bazi, WordPress verzija).
Što je WordPress MCP Adapter (i zašto je praktičan)?
WordPress MCP Adapter je službeni paket unutar inicijative AI Building Blocks for WordPress. Njegova uloga je prilagoditi abilities registrirane preko Abilities API-ja u primitive koje MCP razumije, tako da AI agenti mogu:
- otkriti i izvršavati funkcionalnost stranice kao MCP tools (alati),
- čitati WordPress podatke kao MCP resources (resursi).
U praksi to znači: ako već registriraš abilities u pluginu, vrlo si blizu toga da AI agent može te abilities koristiti – bez izmišljanja “custom” protokola i bez vezanja za pojedini AI alat.
MCP “primitives”: tools, resources i prompts
MCP organizira interakcije kroz tri osnovna pojma:
- Tools: izvršive funkcije koje AI poziva kad želi nešto napraviti.
- Resources: pasivni izvori podataka (npr. fileovi, redovi iz baze) koje AI čita radi konteksta.
- Prompts: unaprijed pripremljeni predlošci (templatei) koji vode specifične workflowe.
S MCP Adapterom, abilities su najčešće izložene kao tools jer predstavljaju izvršivu logiku (dohvat podataka, update postova, dijagnostika). No adapter je fleksibilan: ako ability samo pruža read-only podatke (npr. debug log ili statična konfiguracija), može se konfigurirati i kao resource kako bi AI taj sadržaj “usisao” kao pozadinski kontekst, bez aktivnog pozivanja funkcije.
Instalacija MCP Adaptera kao plugina (najbrži start)
Najbrži put je preuzeti plugin s GitHub Releases stranice i instalirati ga kao standardni WordPress plugin.
Kad ga aktiviraš, plugin registrira default MCP server naziva mcp-adapter-default-server i tri vlastite abilities:
mcp-adapter/discover-abilitiesmcp-adapter/get-ability-infomcp-adapter/execute-ability
Te tri abilities se automatski izlože i kao MCP tools:
mcp-adapter-discover-abilitiesmcp-adapter-get-ability-infomcp-adapter-execute-ability
Za AI agente to je “slojeviti” pristup: prvo otkrij što postoji, zatim uzmi metapodatke o abilityju, pa ga izvrši.
Kako omogućiti abilities na default MCP serveru (meta.mcp.public)
Defaultno pravilo je strogo: abilities su dostupne preko default servera samo ako su eksplicitno označene kao javne za MCP. To se radi kroz meta.mcp.public flag u argumentima pri registraciji s wp_register_ability().
'meta' => array(
'mcp' => array(
'public' => true, // Required for MCP default server access
),
)Za core abilities (one koje dolaze iz WordPressa), ne mijenjaš core, nego se zakačiš na wp_register_ability_args filter i dopuniš argumente tako da uključe 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;
}
Kad ovo postaviš, AI klijenti se mogu spojiti na WordPress MCP server i pozivati ove core abilities preko default MCP tools.
Spajanje AI aplikacija: STDIO vs HTTP transport
MCP definira dva transport mehanizma: STDIO i HTTP. U pravilu, izbor ovisi o tome gdje ti je WordPress.
STDIO transport (lokalni dev) preko WP-CLI-ja
Za lokalne WordPress dev okoline najdirektnije je koristiti STDIO. MCP Adapter to omogućuje preko WP-CLI alata, pa ga moraš imati instaliranog lokalno.
Minimalna konfiguracija (općeniti primjer) izgleda ovako:
{
"wordpress-mcp-server": {
"command": "wp",
"args": [
"--path=/path/to/your/wordpress/installation",
"mcp-adapter",
"serve",
"--server=mcp-adapter-default-server",
"--user={admin_user}"
]
}
}Bitne stavke:
- Naziv servera (
wordpress-mcp-server) je proizvoljan – ti ga biraš. commandjewp(WP-CLI).--pathpokazuje na tvoju WordPress instalaciju.mcp-adapter servepokreće MCP Adapter server.--serverbira MCP server (ovdje default).--userdefinira WordPress korisnika za autentikaciju (npr. admin).
HTTP transport (javno dostupne instalacije) preko remote proxyja
Za javno dostupne WordPress instalacije (ili ako ne želiš STDIO), možeš koristiti HTTP uz remote proxy paket @automattic/mcp-wordpress-remote. Za to ti treba Node.js, a autentikaciju rješavaš preko WordPress application passwords (lozinke aplikacija) ili custom OAuth implementacije.
Minimalna konfiguracija za HTTP izgleda ovako:
{
"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}"
}
}
}Što ovdje treba zapamtiti:
commandjenpx(pokretanje Node.js paketa bez ručne instalacije).-yautomatski potvrđuje instalaciju paketa.@automattic/mcp-wordpress-remote@latestkoristi najnoviju verziju proxyja.WP_API_URLje MCP endpoint na tvojoj stranici.WP_API_USERNAMEiWP_API_PASSWORDsu kredencijali (application password).
Ako koristiš HTTP proxy i spajaš se na lokalni WordPress, korisno je baciti oko na troubleshooting smjernice: https://github.com/Automattic/mcp-wordpress-remote/blob/trunk/Docs/troubleshooting.md. Problemi su često povezani s više instalacija Node.js-a ili s lokalnim SSL certifikatima.
Konfiguracija po aplikacijama: Claude Desktop, Cursor, Claude Code i VS Code
Claude Desktop
Claude Desktop ima ugrađenu podršku za MCP servere. MCP servere dodaješ kroz Developer karticu (Claude → Settings → Developer) i opciju Edit config pod “Local MCP servers”.
To otvara lokaciju datoteke claude_desktop_config.json. U njoj definiraš MCP servere unutar mcpServers objekta:
{
"mcpServers": {
}
}Primjer konfiguracije 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"
]
}
}
}Primjer konfiguracije 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"
}
}
}
}Nakon spremanja, Claude Desktop treba restart jer MCP konfiguraciju čita samo pri pokretanju. U Developer tabu bi trebao vidjeti server i status running kad je sve OK.

Cursor
U Cursoru ideš na Cursor → Settings → Cursor Settings, pa na sekciju Tools and MCP. Tamo klikneš Add Custom MCP, što otvara mcp.json konfiguraciju.

Format konfiguracije je isti kao za Claude Desktop. Nakon spremanja, vrati se u Tools and MCP i enable-aj server za korištenje u coding sessionima.
Claude Code
Za Claude Code imaš dvije opcije:
- Dodati
mcpServersobjekt s konfiguracijama u.claude.jsonu home direktoriju (globalno za sve projekte). - Kreirati
.mcp.jsonu direktoriju projekta (različite konfiguracije po projektu).
U oba slučaja, koristiš isti format konfiguracije kao Cursor ili Claude Desktop.
VS Code
VS Code traži JSON konfiguraciju MCP servera u workspaceu, tipično u .vscode/mcp.json. Detalji su u dokumentaciji: https://code.visualstudio.com/docs/copilot/customization/mcp-servers.
Ključna razlika je što VS Code koristi servers objekt (ne mcpServers):
{
"servers": {
// MCP server definitions go here
}
}Kad je datoteka na mjestu, VS Code prikazuje MCP control toolbar za start/stop/restart servera. Također prikazuje koliko je alata dostupno AI-u (u osnovnom slučaju: tri).
Kako izgleda korištenje MCP alata u praksi
Kad je MCP server spojen, AI aplikacija može koristiti MCP tools koje izlaže MCP Adapter. Primjer: u Claude Desktopu pitaš “Get the site info from my WordPress site”.
Tipičan tok je:
- AI prepozna da postoji MCP server i pozove
mcp-adapter-discover-abilitiesda vidi što je dostupno. - Zaključi da
core/get-site-inforješava zahtjev. - Pozove
mcp-adapter-execute-abilityi proslijedi ime abilityjacore/get-site-info. - Dobije strukturirani rezultat i “odgovori” s podacima o webu.
Kad default server nije dovoljan: custom MCP server u vlastitom pluginu
Default MCP server često će biti sasvim dovoljan. Ali ponekad želiš precizniju kontrolu nad time koje abilities izlažeš i kako se tvoj plugin prezentira AI klijentu. Tada radiš custom MCP server unutar plugina.
Za to MCP Adapter instaliraš kao dependency preko Composera i u pluginu registriraš server.
1) Instaliraj paket preko Composera
composer require wordpress/mcp-adapter2) Učitaj Composer autoloader
if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
require_once __DIR__ . '/vendor/autoload.php';
}Ako postoji šansa da više pluginova ovisi o MCP Adapteru ili Abilities API-ju, preporuka je koristiti Jetpack Autoloader kako bi se izbjegli version conflicts: https://github.com/WordPress/mcp-adapter/blob/trunk/docs/getting-started/installation.md#using-jetpack-autoloader-highly-recommended.
3) Inicijaliziraj MCP Adapter
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();
4) Kreiraj custom server preko mcp_adapter_init akcije
Kreiranje servera radiš tako da se zakačiš na mcp_adapter_init. U callbacku dobiješ adapter instance i pozoveš create_server() s konfiguracijom.
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 koje posebno paziš:
- 1) Prvi parametar je jedinstveni identifikator servera (koristi se kod startanja preko WP-CLI).
- 2) Drugi i treći parametar su REST API namespace i route za server.
- 3) Četvrti i peti parametar su naziv i opis servera (AI aplikacije ih prikazuju pri listanju servera).
- 4) Šesti parametar je verzija servera.
- 5) Deseti parametar je lista abilities koje želiš izložiti kao MCP tools (može ih biti više).
- 6) Ostalo definira transport metode, error handling i observability. Možeš koristiti ugrađene handlere ili napisati vlastite ako se želiš spojiti na svoj transport/logging/monitoring.
Primjer: dodavanje custom MCP servera u “List All URLs” plugin
Konkretan primjer je plugin List All URLs iz priče o Abilities API-ju. Cilj: izložiti samo ability list-all-urls/urls kao MCP tool kroz vlastiti server.
Prije početka
Ako ti je MCP Adapter plugin aktivan, prvo ga deaktiviraj.
1) Kloniraj plugin u wp-content/plugins
cd wp-content/plugins
git clone git@github.com:wptrainingteam/list-all-urls.git2) Prebaci se na branch s Abilities implementacijom
cd list-all-urls
git checkout abilities3) Instaliraj dependencies
composer install4) Dodaj wordpress/mcp-adapter dependency
composer require wordpress/mcp-adapter5) U list-all-urls.php inicijaliziraj MCP Adapter i registriraj server
Otvori list-all-urls.php i na dno datoteke dodaj:
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' ),
);
}
Ovdje je važna razlika: ne trebaš postavljati meta.mcp.public za list-all-urls/urls, jer ga eksplicitno izlažeš preko custom servera.
6) Aktiviraj plugin i ažuriraj MCP konfiguraciju u AI alatu
Aktiviraj List All URLs plugin u WP adminu. Zatim u AI aplikaciji promijeni MCP konfiguraciju da koristi novi server.
Primjer .vscode/mcp.json koji uključuje i default server i novi server, oba preko STDIO transporta:
{
"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"
]
}
}
}Možeš imati više MCP servera u istoj aplikaciji – praktično za prebacivanje između različitih WordPress siteova ili pluginova koji izlažu različite abilities.
Nakon promjene konfiguracije, restartaj AI aplikaciju ili pokreni server iz UI-ja aplikacije. Tada možeš tražiti “List all URLs on my WordPress site”, a AI će pozvati tool list-all-urls-urls preko MCP Adaptera.

Sigurnost i preporučene prakse (ovo nije opcionalno)
MCP klijenti se ponašaju kao ulogirani WordPress korisnici. To znači da MCP integraciju treba tretirati kao dio attack surfacea aplikacije. Praktična pravila:
- Pažljivo piši
permission_callback: svaki ability treba provjeriti minimalnu potrebnu capability (npr.manage_options,edit_posts, itd.). - Izbjegavaj
__return_trueza destruktivne operacije (npr. brisanje sadržaja). - Koristi dedikirane korisnike za MCP pristup: posebno u produkciji kreiraj posebnog usera/role s ograničenim ovlastima.
- Ne izlaži moćne abilities neauditiranim AI klijentima.
- Preferiraj read-only abilities za javne MCP endpointove: kod HTTP transporta koji je izložen internetu fokusiraj se na read-only dijagnostiku, reporting i pristup sadržaju.
- Po potrebi implementiraj custom autentikaciju: default je application passwords, ali možeš implementirati OAuth ili druge metode radi bolje sigurnosti.
- Monitoriraj i logiraj korištenje: koristi custom error i observability handlere kako bi se spojio na svoj logging/monitoring stack.
Kako krenuti s eksperimentiranjem (minimalni “hello AI” put)
Minimalno što ti treba kao WordPress developer:
- Registrirati jedan ability (s tipiziranim input/output i dobrim
permission_callback). - Dodati MCP Adapter (kao plugin ili Composer dependency) i inicijalizirati ga.
- Spojiti MCP-aware AI klijent (Claude Desktop, Cursor, VS Code, Claude Code) i testirati pozivanje alata.
Ako već imaš pluginove koji koriste Abilities API, MCP Adapter ti ih pretvara u AI-ready API-je uz vrlo malo dodatnog posla. Najzdraviji pristup je krenuti s nekoliko ne-destruktivnih, read-only abilities kao MCP tools, testirati lokalno (Claude Desktop ili Cursor), pa tek onda širiti na složenije workflowe.
Dokumentacija koja se stalno isplati imati pri ruci: Abilities API https://developer.wordpress.org/apis/abilities/ i MCP Adapter repozitorij https://github.com/WordPress/mcp-adapter.
Reference / Izvori
- From Abilities to AI Agents: Introducing the WordPress MCP Adapter
- Abilities API in WordPress 6.9
- Introducing the WordPress Abilities API
- Model Context Protocol – Intro
- Model Context Protocol – Architecture (Primitives, Transport layer)
- Model Context Protocol – Transport layer
- MCP Adapter
- AI Building Blocks for WordPress
- mcp-adapter (GitHub)
- mcp-adapter Releases (GitHub)
- @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 servers configuration
- Build MCP tools like ogres (layers)
Ivana Babić
WordPress multisite i mrežna administratorica. Upravljanje velikim WordPress instalacijama je moja specijalnost. Skalabilnost i sigurnost iznad svega.
Svi članci