Preskoči na sadržaj
WordPress MCP Adapter: kako Abilities pretvoriti u alate za AI agente
Ivana Babić
Ivana Babić 17. February 2026. · 16 min čitanja

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_callback koji provjerava capability-je (ovlasti) i kontrolira pristup.
  • execute_callback koji 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-abilities
  • mcp-adapter/get-ability-info
  • mcp-adapter/execute-ability

Te tri abilities se automatski izlože i kao MCP tools:

  • mcp-adapter-discover-abilities
  • mcp-adapter-get-ability-info
  • mcp-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š.
  • command je wp (WP-CLI).
  • --path pokazuje na tvoju WordPress instalaciju.
  • mcp-adapter serve pokreće MCP Adapter server.
  • --server bira MCP server (ovdje default).
  • --user definira 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:

  • command je npx (pokretanje Node.js paketa bez ručne instalacije).
  • -y automatski potvrđuje instalaciju paketa.
  • @automattic/mcp-wordpress-remote@latest koristi najnoviju verziju proxyja.
  • WP_API_URL je MCP endpoint na tvojoj stranici.
  • WP_API_USERNAME i WP_API_PASSWORD su 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.

Claude Desktop prikazuje WordPress MCP server kao running
/ Kad je konfiguracija ispravna, server se vidi u Developer tabu — Forrás: WordPress Developer Blog

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.

Cursor Tools & MCP settings panel
/ Cursor: Tools and MCP postavke — Forrás: WordPress Developer Blog

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 mcpServers objekt s konfiguracijama u .claude.json u home direktoriju (globalno za sve projekte).
  • Kreirati .mcp.json u 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-abilities da vidi što je dostupno.
  • Zaključi da core/get-site-info rješava zahtjev.
  • Pozove mcp-adapter-execute-ability i proslijedi ime abilityja core/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-adapter

2) 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.git

2) Prebaci se na branch s Abilities implementacijom

cd list-all-urls
git checkout abilities

3) Instaliraj dependencies

composer install

4) Dodaj wordpress/mcp-adapter dependency

composer require wordpress/mcp-adapter

5) 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.

VS Code koristi MCP alate za dohvat URL-ova iz List All URLs plugina
/ VS Code: AI poziva MCP tool i dobiva listu URL-ova — Forrás: WordPress Developer Blog

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_true za 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:

  1. Registrirati jedan ability (s tipiziranim input/output i dobrim permission_callback).
  2. Dodati MCP Adapter (kao plugin ili Composer dependency) i inicijalizirati ga.
  3. 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.

Pridružite se HelloWP zajednici!

Razgovarajte s nama o WordPressu, web razvoju i podijelite iskustva s drugim developerima.

- članovi
- online
Pridruži se

Koristimo kolačiće kako bismo poboljšali vaše iskustvo. Nastavkom se slažete s našom Politikom kolačića.