Pāriet uz saturu
WordPress MCP Adapter: kā no Abilities API nonākt līdz AI aģentiem, kas droši izpilda funkcijas tavā vietnē
Jānis Kalniņš
Jānis Kalniņš 2026. gpmdpm 17. February · 18 min lasīšana

WordPress MCP Adapter: kā no Abilities API nonākt līdz AI aģentiem, kas droši izpilda funkcijas tavā vietnē

WordPress pusē pēdējā laikā notiek interesanta virzība: no “mēs varam uzrakstīt jebkuru custom endpoint” uz “mums ir vienots, tipēts, atklājams funkciju slānis, ko var izpildīt dažādos kontekstos”. Abilities API (kopš WordPress 6.9) jau dod šo pamatu, bet, ja mērķis ir AI automatizācija un aģentu darbplūsmas, ar to vien nepietiek – vajag protokolu, kā AI rīkiem dot kontekstu un droši pieslēgties izpildāmām funkcijām.

Te spēlē ienāk Model Context Protocol (MCP) un WordPress MCP Adapter – komponents, kas ļauj AI klientiem (piemēram, Claude Desktop, Claude Code, Cursor, VS Code) tieši atklāt un izsaukt WordPress Abilities kā MCP tools. Zemāk ir praktisks ceļvedis: instalācija, konfigurēšana, savienošana ar AI klientiem, custom MCP serveri spraudnim un drošības nianses.

Ātra atgādne: Abilities kā pamats

Abilities API WordPressā ievieš “pirmās klases”, starp-kontekstu (cross-context) funkcionālo API. Ideja vienkārša: gan Core, gan spraudņi var standartizēti aprakstīt, ko tie prot darīt, un pēc tam šo iespēju var gan atklāt (discover), gan izpildīt (execute) no PHP, JavaScript un arī caur REST API.

Vienu ability tu definē vienreiz, un tai ir vairākas būtiskas sastāvdaļas:

  • Unikāls nosaukums formā namespace/ability-name
  • Tipēta input schema un output schema (ievade/izvade)
  • permission_callback, kas piespiež pārbaudīt tiesības (capabilities)
  • execute_callback, kas reāli izpilda darbību (datu ielasīšana, atjaunināšana, diagnostika u.tml.)

WordPress 6.9 līdzi nāk ar trim Core abilities, kuras ir labs “testa poligons” MCP Adapterim:

  • core/get-site-info: atgriež WordPress konfigurēto vietnes informāciju; pēc noklusējuma visus laukus vai pēc izvēles filtrētu apakškopu.
  • core/get-user-info: atgriež pamata profila datus pašreiz autentificētajam lietotājam (personalizācijai, auditam, access-aware uzvedībai).
  • core/get-environment-info: atgriež runtime kontekstu diagnostikai un savietojamībai (environment, PHP runtime, DB servera info, WordPress versija).

Kas īsti ir WordPress MCP Adapter?

WordPress MCP Adapter ir oficiāla pakotne iniciatīvā AI Building Blocks for WordPress. Tā uzdevums ir “pārcelt” Abilities API reģistrētās iespējas uz MCP pasauli – t.i., pielāgot abilities MCP primitīviem (primitives), lai AI aģenti varētu:

  • atklāt un izsaukt vietnes funkcionalitāti kā MCP tools (izpildāmas funkcijas),
  • nolasīt WordPress datus kā MCP resources (pasīvi konteksta avoti).

Praktiskā nozīme izstrādātājam: ja tavs spraudnis jau reģistrē abilities, līdz “AI aģents var tās izmantot” tu esi vien neliela soļa attālumā.

MCP pamati: tools, resources un prompts

MCP mijiedarbību organizē trīs galvenajos primitīvos:

  • Tools – izpildāmas funkcijas, ko AI izsauc, lai veiktu darbību.
  • Resources – pasīvi datu avoti (piemēram, faili, datubāzes rindas), ko AI lasa kontekstam.
  • Prompts – iepriekš sagatavotas šablonu instrukcijas konkrētām darbplūsmām.

Ar MCP Adapteri abilities tipiski kļūst par tools, jo tās bieži nozīmē izpildāmu loģiku: paņemt datus, atjaunināt ierakstus, palaist diagnostiku. Taču adapters ir elastīgs: ja ability dod tikai read-only informāciju (piem., debug logu vai statisku konfigurāciju), to var konfigurēt arī kā resource, lai AI to vienkārši “ieēstu” kā fona kontekstu bez aktīva izsaukuma.

MCP Adapter instalēšana (ātrākais ceļš)

Ātrākais starts ir uzlikt MCP Adapter kā spraudni, lejuplādējot to no GitHub repozitorija Releases sadaļas un aktivizējot WordPress administrācijā.

Pēc aktivizēšanas adapters automātiski reģistrē:

  • noklusējuma MCP serveri ar nosaukumu mcp-adapter-default-server,
  • trīs custom abilities: mcp-adapter/discover-abilities, mcp-adapter/get-ability-info, mcp-adapter/execute-ability.

Šīs pašas trīs abilities uzreiz tiek eksponētas arī kā MCP tools:

  • mcp-adapter-discover-abilities
  • mcp-adapter-get-ability-info
  • mcp-adapter-execute-ability

AI aģentiem tas dod “slāņainu” pieeju darbībām: vispirms atklāt, kas ir pieejams, tad saņemt informāciju par konkrētu ability, un beigās to izpildīt.

Kā ļaut abilities piekļūt caur noklusējuma MCP serveri

Svarīga nianse: pēc noklusējuma abilities nav automātiski pieejamas caur mcp-adapter-default-server. Lai ability būtu redzama/izsaucama caur šo serveri, reģistrācijas argumentos jāieliek meta.mcp.public karogs.

'meta' => array(
    'mcp' => array(
        'public' => true,  // Required for MCP default server access
    ),
)

Ja gribi padarīt publiskas tieši Core abilities (piemēram, lai uzreiz varētu testēt), vari izmantot filtru wp_register_ability_args un papildināt reģistrācijas argumentus:

<?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 tas ir vietā, vari pieslēgt AI klientu pie WordPress caur MCP Adapteri un izsaukt šīs Core abilities caur noklusējuma servera MCP tools.

AI klientu pieslēgšana: transporti un konfigurācijas

Transporta metodes (STDIO un HTTP)

MCP komunikācijai ir divi galvenie transporta mehānismi: STDIO un HTTP. Izvēli parasti nosaka tas, kur atrodas WordPress instalācija.

Lokālai izstrādei visvienkāršāk ir izmantot STDIO transportu. MCP Adapter to nodrošina caur WP-CLI, tātad WP-CLI ir jābūt uzinstalētam lokāli.

Minimālā STDIO konfigurācija (piemērs MCP servera definīcijai AI klientā):

{
  "wordpress-mcp-server": {
    "command": "wp",
    "args": [
      "--path=/path/to/your/wordpress/installation",
      "mcp-adapter",
      "serve",
      "--server=mcp-adapter-default-server",
      "--user={admin_user}"
    ]
  }
}

Šeit būtiskās daļas ir:

  • Servera nosaukums (wordpress-mcp-server) ir brīvi izvēlams.
  • command ir wp (WP-CLI).
  • args ietver: --path uz WordPress instalāciju, mcp-adapter serve MCP servera palaišanai, --server ar MCP servera ID (šeit noklusējuma), un --user, ar kuru WordPress lietotāju autentificēties.

Publiski pieejamām WordPress instalācijām (vai arī, ja negribi STDIO) var izmantot HTTP transportu ar attālināto proxy pakotni @automattic/mcp-wordpress-remote. Tam vajag Node.js, un autentifikācijai – vai nu WordPress application passwords, vai custom OAuth realizāciju.

Minimālā HTTP konfigurācija izskatās šādi:

{
  "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}"
    }
  }
}

Parametri šeit:

  • command: npx, lai izpildītu Node.js pakotni.
  • args: -y automātiskai instalācijas apstiprināšanai un @automattic/mcp-wordpress-remote@latest jaunākajai proxy versijai.
  • env: WP_API_URL uz MCP endpointu tavā vietnē, WP_API_USERNAME un WP_API_PASSWORD (application password).

Piezīme lokālam HTTP proxy

Ja lokāli mēģini pieslēgties caur mcp-wordpress-remote un ir problēmas, tipiskie iemesli ir vairākas Node.js versijas vienlaikus vai lokālie SSL sertifikāti. Noderīga ir pakotnes troubleshooting dokumentācija: https://github.com/Automattic/mcp-wordpress-remote/blob/trunk/Docs/troubleshooting.md

Konfigurācija pa lietotnēm

Tālāk – kur praksē ielikt MCP servera konfigurāciju populārākajos AI rīkos.

Claude Desktop

Claude Desktop jau sen ir iebūvēts MCP atbalsts. Lai pievienotu MCP serverus, ej uz Developer cilni (Claude → Settings → Developer) un zem “Local MCP servers” izvēlies Edit config. Tas atvērs claude_desktop_config.json faila atrašanās vietu.

Claude Desktop Developer iestatījumu panelis, kur var rediģēt MCP serveru konfigurāciju
Forrás: developer.wordpress.org

Failā serveri tiek definēti objektā mcpServers:

{
  "mcpServers": {
  }
}

STDIO piemērs:

{
  "mcpServers": {
    "wordpress-mcp-server": {
      "command": "wp",
      "args": [
        "--path=/Users/jonathanbossenger/Studio/wordpress-mcp",
        "mcp-adapter",
        "serve",
        "--server=mcp-adapter-default-server",
        "--user=admin"
      ]
    }
  }
}

HTTP piemērs:

{
  "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"
      }
    }
  }
}

Pēc faila saglabāšanas Claude Desktop ir jāpārstartē (konfigurācija tiek ielasīta tikai startējoties). Kad viss strādā, Developer sadaļā pie servera redzēsi statusu running un varēsi sākt izmantot tools sarunās.

Cursor

Cursorā atver Cursor → Settings → Cursor Settings, pēc tam sadaļu Tools and MCP. Spied Add Custom MCP – tas atvērs mcp.json konfigurācijas failu. Formāts ir tāds pats kā Claude Desktop (t.i., vari izmantot tos pašus servera definīciju blokus). Pēc saglabāšanas atgriezies Tools and MCP sadaļā – tur serveri varēs ieslēgt darbam kodēšanas sesijās.

Cursor iestatījumu sadaļa Tools & MCP
Forrás: developer.wordpress.org

Claude Code

Claude Code MCP serverus vari definēt divējādi:

  • pievienot mcpServers objektu ar serveru konfigurācijām failā .claude.json savā home direktorijā (globāli visiem projektiem),
  • vai izveidot .mcp.json konkrētā projekta direktorijā (lai katram projektam būtu savi MCP serveri).

Abos gadījumos formāts ir tāds pats kā Cursor un Claude Desktop.

VS Code

VS Code pusē MCP serveri tiek aprakstīti JSON konfigurācijas failā (parasti mcp.json), kas jāieliek projekta workspace mapē .vscode/. Ir viena atšķirība: Claude/Cursor izmanto mcpServers, bet VS Code – servers objektu. Pārējais (command/args/env) ir identisks.

{
  "servers": {
    // MCP server definitions go here
  }
}

Kad fails ir vietā, VS Code parādās MCP kontroles rīkjosla, kur var start/stop/restart serveri. Ja serveris startējas korekti, UI parādīs arī, cik tools ir pieejami (piemēra gadījumā – trīs). Dokumentācija: https://code.visualstudio.com/docs/copilot/customization/mcp-servers

Kā izskatās MCP tools izmantošana praksē

Kad AI klients ir pieslēgts MCP serverim, vari sākt izmantot MCP tools, ko eksponē adapters. Piemēram, Claude Desktop sarunā vari palūgt: “Get the site info from my WordPress site”.

Claude Desktop saruna, kur AI izmanto WordPress MCP servera tools un atgriež site info
Forrás: developer.wordpress.org

Tipiska plūsma ir šāda:

  • AI saprot, ka ir pieejams MCP serveris, un izsauc mcp-adapter-discover-abilities, lai noskaidrotu, kādas abilities ir pieejamas.
  • Tad izvēlas, kura ability atbilst pieprasījumam (piem., core/get-site-info).
  • Pēc tam izsauc mcp-adapter-execute-ability, padodot ability nosaukumu, un atgriež rezultātu (vietnes informāciju).

Custom MCP serveris spraudnim (kad ar noklusējuma serveri nepietiek)

Noklusējuma mcp-adapter-default-server bieži būs pietiekams, bet spraudnim var gribēties atsevišķu MCP serveri – lai precīzi kontrolētu, kuras abilities un tiek eksponētas kā tools/resources/prompts.

Šajā gadījumā MCP Adapteri ieteicams pievienot kā Composer atkarību un spraudnī reģistrēt savu serveri.

1) Pievieno wordpress/mcp-adapter ar Composer

composer require wordpress/mcp-adapter

2) Ielādē Composer autoloader spraudņa galvenajā failā

if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
    require_once __DIR__ . '/vendor/autoload.php';
}

Versiju konflikti vairākos spraudņos

Ja ir reāla iespēja, ka vairāk nekā viens spraudnis vienā vietnē paļaujas uz MCP Adapteri vai Abilities API, drošāka pieeja ir Jetpack Autoloader izmantošana, lai mazinātu versiju konfliktus: https://github.com/WordPress/mcp-adapter/blob/trunk/docs/getting-started/installation.md#using-jetpack-autoloader-highly-recommended

3) Inicializē MCP Adapteri

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) Izveido custom MCP serveri ar mcp_adapter_init

Pievieno hook uz mcp_adapter_init. Callback saņem McpAdapter instanci, un ar create_server() tu definē servera parametrus.

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, kam parasti jāpievērš uzmanība:

  • 1. parametrs – unikāls servera identifikators (to izmantosi arī, startējot serveri ar WP-CLI).
  • 2. un 3. parametrs – REST API namespace un route šim MCP serverim.
  • 4. un 5. parametrs – servera nosaukums un apraksts, ko AI lietotnes rāda serveru sarakstos.
  • 6. parametrs – versija.
  • 10. parametrs – ability nosaukumu masīvs, kuras gribi eksponēt kā MCP tools (vari norādīt vairākas).
  • Pārējie parametri – transports, error handling, observability. Vari izmantot noklusējuma handlerus vai rakstīt savus, ja jāintegrējas ar savu logu/monitoringa infrastruktūru.

Praktisks piemērs: custom MCP serveris spraudnim “List All URLs”

Lai redzētu pilnu bildi, apskatām praktisku scenāriju ar spraudni List All URLs, kuram jau ir Abilities API implementācija (branch abilities). Šeit mērķis: pievienot custom MCP serveri, kas eksponē vienu ability list-all-urls/urls kā MCP tool.

Pirms sākuma

Ja MCP Adapter spraudnis ir aktivizēts kā atsevišķs spraudnis, šo piemēru veicot, to vajag deaktivizēt.

1) Klonē repozitoriju spraudņu mapē

cd wp-content/plugins
git clone git@github.com:wptrainingteam/list-all-urls.git

2) Pārslēdzies uz abilities branch

cd list-all-urls
git checkout abilities

3) Uzinstalē atkarības un pievieno MCP Adapteri

composer install
composer require wordpress/mcp-adapter

4) Inicializē MCP Adapteri un izveido serveri list-all-urls.php

Atver spraudņa galveno failu list-all-urls.php un pašās beigās pievieno šo kodu:

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' ),
    );
}

Te ir būtiska atšķirība pret noklusējuma serveri: tev nav jāliek meta.mcp.public karogs ability reģistrācijā, jo tu explicit norādi, ka šī ability ir jāeksponē caur custom MCP serveri.

5) Aktivizē spraudni un atjaunini MCP konfigurāciju AI lietotnē

Aktivizē List All URLs spraudni WordPress adminā. Pēc tam AI klienta MCP konfigurācijā pievieno jauno serveri. Zemāk ir VS Code piemērs, kur vienlaikus ir gan noklusējuma, gan List All URLs serveris, abi ar STDIO transportu:

{
  "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"
      ]
    }
  }
}

Vienā AI lietotnē vari turēt vairākus MCP serverus – tas ļauj pārslēgties starp dažādām WordPress vietnēm vai spraudņiem ar atšķirīgiem ability komplektiem. Pēc konfigurācijas izmaiņām parasti jāveic aplikācijas restarts vai jāstartē serveris no UI (atkarībā no klienta). Pēc tam vari dot uzdevumu, piemēram: “List all URLs on my WordPress site” – un AI izsauks list-all-urls-urls tool caur MCP Adapteri.

VS Code piemērs, kur AI izmanto MCP tools, lai iegūtu List All URLs spraudņa datus
Forrás: developer.wordpress.org

Drošība un labākā prakse (obligāti jāņem nopietni)

MCP klienti WordPress pusē strādā kā ielogoti WordPress lietotāji. Tas nozīmē, ka AI integrācija nav “ārējs skripts”, bet reāla tavas sistēmas virsmas daļa. Praktiski ieteikumi:

  • Rūpīgi veido permission_callback. Katrai ability pārbaudi minimāli vajadzīgās capabilities (manage_options, edit_posts u.c.).
  • Izvairies no __return_true destruktīvām darbībām (piem., satura dzēšana).
  • MCP piekļuvei izmanto atsevišķu lietotāju. Īpaši produkcijā izveido konkrētu user/role ar minimālām tiesībām.
  • Neeksponē jaudīgas abilities neauditētiem AI klientiem.
  • Publiski pieejamiem HTTP endpointiem dod priekšroku read-only abilities. Fokusējies uz diagnostiku, atskaitēm, satura piekļuvi.
  • Ja vajag, ievies custom autentifikāciju. Noklusējums balstās uz application passwords, bet drošībai vari izvēlēties OAuth vai citu pieeju.
  • Monitorē un logo izmantošanu. Ar custom error un observability handleriem vari integrēt savu logu/monitoringa steku.

Kā sākt eksperimentēt jau šodien (minimālais “hello AI” ceļš)

Minimālais ceļš WordPress izstrādātājam līdz pirmajam strādājošajam scenārijam izskatās šādi:

  • Reģistrē vienu ability (vēlams read-only).
  • Pievieno MCP Adapteri (kā spraudni vai kā Composer atkarību) un inicializē to.
  • Pieslēdz MCP-aware AI klientu (Claude Desktop, Cursor, VS Code, Claude Code) ar STDIO vai HTTP transportu.
  • Izsauc ability caur MCP tools un pārliecinies par tiesību pārbaudēm, žurnālošanu un paredzamu output schema.

Ja tev jau ir spraudņi, kas izmanto Abilities API, MCP Adapter faktiski pārvērš tos par “AI-ready API” ar minimālu papildus darbu. Labākā stratēģija ir sākt ar mazām, nedestruktīvām iespējām, lokāli notestēt, un tikai tad pakāpeniski paplašināt līdz sarežģītākām darbplūsmām.

Dokumentācija, kas noderēs ikdienas darbā: Abilities API – https://developer.wordpress.org/apis/abilities/ un MCP Adapter repozitorijs – https://github.com/WordPress/mcp-adapter.

Pievienojieties HelloWP kopienai!

Tērzējiet ar mums par WordPress, tīmekļa izstrādi un dalieties pieredzē ar citiem izstrādātājiem.

- biedri
- tiešsaistē
Pievienoties

Mēs izmantojam sīkdatnes, lai uzlabotu jūsu pieredzi. Turpinot, jūs piekrītat mūsu Sīkdatņu politikai.