Към съдържанието
WordPress MCP Adapter: как Abilities API превръща плъгините ти в инструменти за AI агенти
Мария Иванова
Мария Иванова 17 February 2026 · 10 мин. четене

WordPress MCP Adapter: как Abilities API превръща плъгините ти в инструменти за AI агенти

Ако следиш накъде върви WordPress екосистемата, вероятно си усетил, че AI автоматизацията вече не е „някъде там“, а започва да става част от реалните dev workflows. Ключовият елемент тук е Abilities API (в WordPress 6.9) – начин да регистрираш функционалности, които са стандартизирани, откриваеми, типизирани и изпълними. А когато добавиш към това Model Context Protocol (MCP), получаваш мост между WordPress и AI агенти.

Точно тук влиза WordPress MCP Adapter – пакет/плъгин, който позволява AI инструменти (Claude Desktop, Claude Code, Cursor, VS Code) да намират и извикват WordPress Abilities директно като MCP tools. В този материал ще минем през инсталация, конфигурация, свързване на AI клиенти, използване на MCP tools, създаване на custom MCP server за плъгин и важните security практики.

Бърз контекст: Abilities API като основа

Abilities API дава на WordPress „first-class“ функционален API, който работи cross-context и стандартизира как Core и плъгините описват „какво могат да правят“.

Една ability се дефинира еднократно с:

  • Уникално име (namespace/ability-name)
  • Типизирана input schema и output schema
  • permission_callback, който прилага права/капабилитита
  • execute_callback, който реално изпълнява действието

Логиката в execute_callback може да е всичко: извличане на данни, ъпдейт на постове, диагностика, отчети – всяка отделна, добре дефинирана unit-of-work.

След регистрация ability-то става discoverable и executable от PHP, JavaScript и REST API.

Трите Core abilities в WordPress 6.9

WordPress 6.9 идва с 3 стандартни abilities, които са удобни за първи тестове с MCP Adapter:

  • core/get-site-info: връща информация за сайта (по подразбиране всички полета или опционално филтриран под-набор).
  • core/get-user-info: връща базови профилни детайли за текущия автентикиран потребител – полезно за персонализация, одитиране и access-aware поведение.
  • core/get-environment-info: връща данни за runtime контекста – среда, PHP runtime, информация за DB сървъра, версия на WordPress (за диагностика/съвместимост).

Какво представлява WordPress MCP Adapter?

WordPress MCP Adapter е официален пакет в инициативата AI Building Blocks for WordPress. Целта му е да „адаптира“ abilities, регистрирани през Abilities API, към примитивите (primitives) на Model Context Protocol (MCP), така че AI агентите:

  • да откриват и изпълняват функционалност като MCP tools
  • да четат WordPress данни като MCP resources

На практика това означава: ако плъгинът ти вече регистрира abilities, си на една стъпка от това AI агент да ги използва.

MCP накратко: tools, resources и prompts

MCP организира взаимодействията през три основни примитива:

  • Tools: изпълними функции, които AI извиква, за да направи действие.
  • Resources: пасивни източници на данни (като файлове или редове от база данни), които AI чете като контекст.
  • Prompts: предварително конфигурирани шаблони, които насочват конкретни workflow-и.

С MCP Adapter обичайният случай е abilities да се експонират като tools, защото представляват изпълнима логика (fetch, update, diagnostics). Но ако ability-то е read-only и връща контекст (примерно статична конфигурация или debug log), може да се конфигурира и като resource, за да може моделът да „погълне“ информацията без активно извикване.

Инсталиране на MCP Adapter

Най-бързият старт е като инсталираш MCP Adapter като плъгин от GitHub Releases страницата:

https://github.com/WordPress/mcp-adapter/releases

След активиране плъгинът регистрира default MCP server с име mcp-adapter-default-server и три custom abilities:

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

Тези abilities автоматично се експонират и като MCP tools:

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

Трите инструмента са замислени като „на слоеве“ достъп до Abilities: агентът първо открива какво е налично, после взима информация за конкретна ability, и накрая изпълнява ability-то.

Как да позволиш Abilities в default MCP server-а

По подразбиране abilities са достъпни през default MCP server-а само ако изрично ги маркираш като публични за MCP. Това става с флаг meta.mcp.public в аргументите при wp_register_ability().

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

За Core abilities (или за чужди abilities, които искаш да „ъпдейтнеш“ при регистрацията им) можеш да използваш филтъра wp_register_ability_args и да добавиш 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;
}

След това вече можеш да свържеш AI клиент към сайта си през MCP Adapter и да извикваш core abilities през MCP tools на default server-а.

Свързване на AI приложения към WordPress MCP server

Transport методи: STDIO и HTTP

За връзка към MCP server има два transport механизма: STDIO и HTTP. Изборът обикновено зависи от това къде ти е WordPress инсталацията.

За локална разработка най-директният вариант е STDIO транспорт. MCP Adapter го поддържа чрез WP-CLI (командния инструмент на WordPress), така че трябва да имаш WP-CLI инсталиран локално.

Минимална конфигурация за STDIO изглежда така:

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

Детайлите тук са важни:

  • Името на server-а в конфигурацията е wordpress-mcp-server – може да е каквото решиш.
  • command е wp (WP-CLI).
  • args включва:
  • --path към WordPress инсталацията.
  • mcp-adapter serve за стартиране на MCP Adapter server.
  • --server за избор на MCP server (тук default).
  • --user – WordPress потребителят, като който ще се автентикира (примерно admin).

За публично достъпни инсталации (или ако не искаш STDIO) можеш да минеш по HTTP чрез remote proxy пакета @automattic/mcp-wordpress-remote. Това изисква Node.js и автентикация през WordPress application passwords или custom OAuth имплементация.

Минимална конфигурация за HTTP транспорт:

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

Ключовите елементи:

  • command е npx (изпълнява Node.js packages).
  • -y приема автоматично инсталацията на пакета.
  • WP_API_URL сочи MCP endpoint-а на сайта.
  • WP_API_USERNAME е потребителят.
  • WP_API_PASSWORD е application password за този потребител.

Ако ползваш HTTP remote proxy и се свързваш към локална инсталация, пакетът има troubleshooting насоки (често проблемите са от множество Node версии или локални SSL сертификати): https://github.com/Automattic/mcp-wordpress-remote/blob/trunk/Docs/troubleshooting.md

Конфигурация по приложения

Най-честите клиенти в dev среда в момента са Claude Desktop, Cursor, Claude Code и VS Code. По-долу са местата, където се настройва MCP server.

Claude Desktop

В Claude Desktop MCP server-ите се добавят от Developer таба: Claude → Settings → Developer. В секцията Local MCP servers избери Edit config. Това ще отвори claude_desktop_config.json, където се добавят конфигурации в mcpServers обект.

Claude Desktop: панелът Developer settings
Forrás: WordPress Developer Blog
{
  "mcpServers": {
  }
}

Пример за STDIO транспорт:

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

Пример за HTTP транспорт:

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

Важно: след промяна на файла трябва рестарт на Claude Desktop, защото чете конфиговете само при старт.

Claude Desktop: списък с Local MCP servers, добавен WordPress MCP server със статус running
Forrás: WordPress Developer Blog

Cursor

В Cursor настройката е от Cursor → Settings → Cursor Settings, секция Tools and MCP. Натисни Add Custom MCP – това отваря mcp.json. Форматът е същият като при Claude Desktop. След запис Cursor ще покаже server-а в Tools and MCP и можеш да го включиш за coding sessions.

Cursor: Tools & MCP settings панел
Forrás: WordPress Developer Blog
Cursor: Tools & MCP settings панел с добавен WordPress MCP Server
Forrás: WordPress Developer Blog

Claude Code

В Claude Code имаш два пътя:

  • Добавяш mcpServers с нужните конфигурации в .claude.json в home директорията (глобално за всички проекти).
  • Или създаваш .mcp.json в директорията на проекта (различни MCP server-и за различни проекти).

И в двата случая форматът на конфигурацията е същият като при Cursor/Claude Desktop.

VS Code

В VS Code се използва JSON файл (обичайно mcp.json) в .vscode директорията на workspace-а. Разликата е, че server-ите се дефинират в servers обект (не mcpServers). Останалото е идентично.

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

След като файлът е наличен, VS Code показва MCP контролна лента за start/stop/restart на server-а. При успешен старт виждаш и колко tools са налични.

VS Code: mcp.json с конфигурация на MCP server за WordPress
Forrás: WordPress Developer Blog

Как се използват MCP tools (реален flow)

След като MCP server-ът е свързан към AI приложението, можеш да ползваш tools, експонирани от MCP Adapter. Типичен пример: в Claude Desktop задаваш задача от сорта на „вземи site info от WordPress“.

Какво се случва под капака:

  • Клиентът вижда, че има наличен MCP server.
  • Извиква mcp-adapter-discover-abilities, за да разбере кои abilities са налични.
  • Решава, че core/get-site-info е правилната ability за задачата.
  • Извиква mcp-adapter-execute-ability, като подава името core/get-site-info.
  • Връща се payload със site info и приложението форматира отговора.

Custom MCP server за твоя плъгин (когато default не ти стига)

Default server-ът покрива повечето случаи, но custom MCP server за плъгин ти дава по-фин контрол какви abilities да се експонират като MCP tools, както и как да се конфигурират transport, error handling и observability.

За това ти трябва MCP Adapter като dependency през Composer.

1) Инсталирай пакета

composer require wordpress/mcp-adapter

2) Зареди autoloader-а

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

Когато има шанс няколко плъгина да зависят от MCP Adapter или Abilities API, препоръчително е да ползваш Jetpack Autoloader, за да избегнеш version conflicts: https://github.com/WordPress/mcp-adapter/blob/trunk/docs/getting-started/installation.md#using-jetpack-autoloader-highly-recommended

3) Инициализирай 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) Създай custom server през mcp_adapter_init

Hook-ваш се в mcp_adapter_init. Callback-ът получава инстанция на McpAdapter, а ти използваш create_server() за дефиницията.

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).
    );
}

Параметрите, които реално ще пипаш най-често:

  • (1) Уникален идентификатор на server-а – това ползваш при стартиране през WP-CLI.
  • (2) и (3) REST API namespace и route за MCP server-а.
  • (4) и (5) име и описание – това се вижда в AI приложенията.
  • (6) версия на server-а.
  • (10) списък с ability имена, които искаш да експонираш като MCP tools (можеш да подадеш повече от едно).
  • Останалото са transport methods, error handling и observability handlers – можеш да ползваш готовите от пакета или да направиш свои за собствен transport/logging/monitoring.

Пример: добавяне на MCP server към плъгина List All URLs

За конкретен пример може да се вземе плъгинът List All URLs (който вече има Abilities API имплементация) и да му се добави custom MCP server: https://github.com/wptrainingteam/list-all-urls

Важно

Преди да продължиш, деактивирай MCP Adapter плъгина, ако е активен като отделен плъгин. В този сценарий MCP Adapter ще бъде dependency на плъгина през Composer.

1) Клонирай плъгина в директорията на плъгините

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

2) Превключи към branch с Abilities API

cd list-all-urls
git checkout abilities

3) Инсталирай зависимостите

composer install

4) Добави mcp-adapter

composer require wordpress/mcp-adapter

5) Добави код в list-all-urls.php за инициализация и custom server

В основния файл list-all-urls.php добави в края:

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

Обърни внимание: тук не ти трябва meta.mcp.public за list-all-urls/urls, защото ability-то се експонира изрично през custom MCP server-а.

6) Активирай плъгина и обнови MCP конфигурацията в AI клиента

Активирай List All URLs от WordPress админ панела. След това обнови конфигурацията на MCP server-ите в AI приложението, за да използваш новия server.

Пример за VS Code конфигурация, в която имаш и default server-а, и custom server-а (и двата през STDIO):

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

В един AI клиент можеш да имаш няколко MCP server-а – удобно е за превключване между различни WordPress сайтове или плъгини с различен набор от abilities.

След промени: рестартирай AI приложението или стартирай MCP server-а от контролите му. После можеш да поискаш от AI: „List all URLs on my WordPress site“ и то ще извика list-all-urls-urls tool през MCP Adapter.

Сигурност и добри практики

MCP клиентите действат като логнати WordPress потребители. Третирай ги като част от attack surface-а на приложението и спазвай тези практики:

  • Използвай permission_callback внимателно
  • Всяка ability трябва да проверява минимално нужните капабилитита (manage_options, edit_posts и т.н.).
  • Избягвай __return_true за разрушителни операции като триене на съдържание.
  • Използвай отделни потребители за MCP достъп
  • Особено в production: направи специален user/role с ограничени права.
  • Не експонирай мощни abilities към неаудитирани AI клиенти.
  • Предпочитай read-only abilities за публични MCP endpoints
  • За HTTP transport, изложен в интернет: фокус върху диагностика, репорти и read-only content access.
  • Имплементирай custom authentication при нужда
  • По подразбиране автентикацията е с application passwords, но можеш да реализираш OAuth или други методи за по-добра сигурност.
  • Наблюдавай и логвай употребата
  • Ползвай custom error/observability handlers, за да се вържеш към собствения logging/monitoring stack.

Как да започнеш да експериментираш още днес

Най-минималният „hello AI“ път за WordPress разработчик е:

  1. Регистрирай една ability (в идеалния случай read-only и неразрушителна).
  2. Добави MCP Adapter (като плъгин или Composer dependency) и го инициализирай.
  3. Свържи MCP-aware AI клиент (Claude Desktop, Cursor, VS Code и т.н.).

Ако вече имаш плъгини, които използват Abilities API, MCP Adapter на практика ги превръща в AI-ready APIs с минимални допълнителни промени.

Полезни ресурси за документация и детайли по имплементацията:

Присъединете се към общността на HelloWP!

Разговаряйте с нас за WordPress и уеб разработка и споделяйте опит с други разработчици.

- членове
- онлайн
Присъединяване

Използваме бисквитки, за да подобрим вашето изживяване. Продължавайки, вие се съгласявате с нашата Политика за бисквитки.