Hoppa till innehåll
WordPress MCP Adapter: så kopplar du Abilities API till AI-agenter via MCP
Erik Johansson
Erik Johansson 17 February 2026 · 17 min läsning

WordPress MCP Adapter: så kopplar du Abilities API till AI-agenter via MCP

WordPress har under det senaste året tagit flera tydliga steg mot att bli en plattform där AI-automation känns naturlig, inte påklistrad. Två byggstenar sticker ut: Abilities API (introducerat i WordPress 6.9) och den officiella WordPress MCP Adapter. Tillsammans gör de att en AI-agent kan upptäcka vad din sajt kan göra och sedan utföra det – på ett standardiserat och säkert sätt.

I den här genomgången får du en praktisk karta över hur MCP Adapter fungerar, hur du installerar den, hur du exponerar abilities som MCP tools, hur du kopplar upp vanliga AI-klienter (lokalt och publikt), hur du sätter upp en egen MCP-server för ett plugin – och vilka säkerhetsfällor du behöver ha koll på.

Snabb repetition: Abilities som grundplatta

Om du inte jobbat med Abilities API tidigare är kärnidén enkel: WordPress får ett förstklassigt, funktionsorienterat API över flera kontexter som standardiserar hur core och plugins beskriver vad de kan göra.

En ability definierar du en gång och kan sedan köra den från PHP, JavaScript och REST API.

  • Ett unikt namn (namespace/ability-name)
  • Ett typat input schema och output schema
  • En permission_callback som kontrollerar behörigheter/capabilities
  • En execute_callback som gör själva jobbet

Det du gör i execute_callback kan vara i princip vad som helst som är en avgränsad arbetsenhet: hämta data, uppdatera inlägg, köra diagnostik, och så vidare.

WordPress 6.9 kommer med tre core-abilities som är perfekta att testa med:

  • core/get-site-info: returnerar sajtens inställda information. Som standard alla fält, eller valfritt filtrerat urval.
  • core/get-user-info: returnerar grundläggande profildata för nuvarande autentiserad användare (för personalisering, audit och access-medvetet beteende).
  • core/get-environment-info: returnerar detaljer om runtime-kontexten (miljö, PHP runtime, databas-serverinfo, WordPress-version) för diagnostik och kompatibilitet.

Vad är WordPress MCP Adapter?

WordPress MCP Adapter är ett officiellt paket inom initiativet AI Building Blocks for WordPress. Jobbet den gör är att översätta abilities (registrerade via Abilities API) till de primitives som stöds av Model Context Protocol (MCP), så att AI-agenter kan:

  • upptäcka och köra sajt-funktionalitet som MCP tools
  • läsa WordPress-data som MCP resources

Praktiskt innebär det här: har du redan abilities i din kodbas, är du väldigt nära att göra dem åtkomliga för en MCP-kompatibel AI-klient.

Grundbegrepp i MCP: tools, resources och prompts

MCP organiserar interaktioner i tre primitives:

  • Tools: körbara funktioner som AI:n anropar för att utföra en åtgärd.
  • Resources: passiva datakällor (t.ex. filer eller DB-rader) som AI:n läser som kontext.
  • Prompts: förkonfigurerade mallar som guidar specifika arbetsflöden.

I MCP Adapter-exemplet exponeras abilities oftast som tools, eftersom de representerar körbar logik (hämta data, uppdatera inlägg, diagnostik). Men adaptern är flexibel: om en ability bara ger read-only-data (t.ex. en statisk konfiguration eller en logg), kan den även konfigureras som resource så att AI:n kan konsumera informationen som bakgrund utan att aktivt “köra” den.

Installera MCP Adapter (plugin-varianten)

Snabbaste vägen är att installera MCP Adapter som plugin via GitHub-releaser:

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

När pluginet är installerat och aktiverat registrerar det en default MCP server med namnet mcp-adapter-default-server samt tre egna abilities:

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

De här exponeras också automatiskt som MCP tools:

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

Tillsammans ger de en lager-på-lager-modell där agenten kan upptäcka vilka abilities som finns, läsa information om dem och sedan exekvera rätt ability.

Gör abilities tillgängliga i default-servern (meta.mcp.public)

I default-servern är det inte så att alla abilities blir åtkomliga per automatik. Du måste explicit markera en ability som publik för MCP genom att sätta flaggan meta.mcp.public i argumenten när du registrerar den med wp_register_ability().

'meta' => array(
    'mcp' => array(
        'public' => true,  // Krävs för åtkomst via MCP Adapters default-server
    ),
),

För core-abilities (de som WordPress själv registrerar) kan du använda filtret wp_register_ability_args för att injicera flaggan vid registreringen.

<?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;
}

När detta är på plats kan du koppla en MCP-kompatibel AI-klient till sajten och anropa core-abilities via default-serverns MCP tools.

Koppla AI-appar: transportmetoder och konfigurationer

Transport: STDIO eller HTTP

För att prata med en WordPress-sajt som agerar MCP-server finns två transportlager i MCP-arkitekturen: STDIO och HTTP. Valet styrs i praktiken av var WordPress körs och hur du vill koppla upp dig.

För lokala utvecklingsmiljöer är STDIO ofta enklast. MCP Adapter stöder detta via WP-CLI, så WP-CLI behöver finnas installerat lokalt.

Minsta konfiguration för STDIO ser ut så här:

{
  "wordpress-mcp-server": {
    "command": "wp",
    "args": [
      "--path=/path/to/your/wordpress/installation",
      "mcp-adapter",
      "serve",
      "--server=mcp-adapter-default-server",
      "--user={admin_user}"
    ]
  }
}
  • Servernamnet här är wordpress-mcp-server (valfritt namn).
  • command är wp (WP-CLI).
  • --path pekar på din WordPress-installation.
  • mcp-adapter serve startar MCP Adapter-servern.
  • --server väljer vilken MCP-server som ska användas (default-servern här).
  • --user anger vilken WordPress-användare klienten autentiserar som (t.ex. en admin vid test).

För publikt åtkomliga installationer – eller om du inte vill använda STDIO – kan du köra HTTP via en remote proxy: @automattic/mcp-wordpress-remote. Det kräver att du har Node.js installerat och att du sätter upp autentisering via WordPress application passwords eller en egen OAuth-lösning.

Minsta HTTP-konfiguration ser ut så här:

{
  "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 är npx (kör Node.js-paket).
  • -y accepterar installation utan interaktiv prompt.
  • @automattic/mcp-wordpress-remote@latest använder senaste versionen av proxyn.
  • WP_API_URL pekar på MCP-endpointen på din sajt.
  • WP_API_USERNAME anger användaren.
  • WP_API_PASSWORD är användarens application password.

Om du kör HTTP remote proxy mot en lokal sajt och får problem finns felsökningstips här (vanliga orsaker är flera Node-versioner eller lokala SSL-certifikat): https://github.com/Automattic/mcp-wordpress-remote/blob/trunk/Docs/troubleshooting.md

App-specifika inställningar

Nedan är var du faktiskt stoppar in MCP-server-konfigurationen i några av de vanligaste AI-klienterna: Claude Desktop, Cursor, Claude Code och VS Code.

Exempelvärden

Exemplen använder en lokal Studio-sajt vid sökvägen /Users/jonathanbossenger/Studio/wordpress-mcp, åtkomlig på http://localhost:8885/, med admin-användaren admin. Byt ut till din egen path, URL och användare.

Claude Desktop

I Claude Desktop går du till Developer-fliken via Claude → Settings → Developer. Under Local MCP servers klickar du Edit config. Då öppnas en filväljare till claude_desktop_config.json.

Claude Desktop: Developer settings-panel
Forrás: developer.wordpress.org

MCP-servrar läggs in under ett mcpServers-objekt:

{
  "mcpServers": {
  }
}

STDIO-varianten:

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

HTTP-varianten:

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

När du sparat måste du starta om Claude Desktop (konfigurationen läses bara vid uppstart). I Developer-fliken ska du sedan se servern listad under Local MCP servers. Om status visar running är du redo att använda den.

Claude Desktop: WordPress MCP server tillagd under Local MCP servers
Forrás: developer.wordpress.org

Cursor

I Cursor går du till Cursor → Settings → Cursor Settings och väljer sektionen Tools and MCP.

Cursor: inställningspanelen Tools & MCP
Forrás: developer.wordpress.org

Klicka Add Custom MCP för att öppna mcp.json. Formatet är samma som i Claude Desktop. När du sparat, gå tillbaka till Tools and MCP så ser du servern listad och kan aktivera den för kodsessioner.

Cursor: Tools & MCP med WordPress MCP Server tillagd
Forrás: developer.wordpress.org

Claude Code

I Claude Code kan du antingen lägga mcpServers-objektet med relevanta serverkonfigurationer i .claude.json i din home-katalog, eller skapa en .mcp.json i projektkatalogen.

Skillnaden är praktisk: projektfilen låter dig ha olika MCP-servrar per projekt, medan home-filen gör dem globala. Oavsett använder du samma konfigurationsformat som Cursor/Claude Desktop.

VS Code

I VS Code konfigurerar du MCP via en JSON-fil (vanligen mcp.json) i en .vscode-katalog i din workspace. VS Codes format skiljer sig på en punkt: du definierar servrar i ett servers-objekt, inte mcpServers. Resten är samma.

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

När filen finns på plats visar VS Code en MCP-kontrollrad där du kan starta/stoppa/restarta servern. När allt fungerar ser du även hur många tools som är tillgängliga (i defaultfallet tre). Mer om VS Codes format finns här: https://code.visualstudio.com/docs/copilot/customization/mcp-servers

VS Code: mcp.json konfigurerad för WordPress MCP server
Forrás: developer.wordpress.org

Så används MCP tools i praktiken

När din MCP-server är kopplad till en AI-klient kan du börja använda verktygen som MCP Adapter exponerar.

Ett konkret exempel: i Claude Desktop kan du be den att “hämta site info från min WordPress-sajt”. Klienten ser att det finns en MCP-server och anropar mcp-adapter-discover-abilities för att se vilka abilities som finns. Därefter väljer den core/get-site-info och kör den via mcp-adapter-execute-ability, med ability-namnet som parameter. Resultatet kommer tillbaka som sajtens information, och klienten formulerar ett svar baserat på datan.

Claude Desktop: fråga som triggar MCP tools och returnerar site info från WordPress
Forrás: developer.wordpress.org

Egen MCP-server i ditt plugin (Composer + mcp_adapter_init)

Default-servern räcker långt, men ibland vill du ha en egen MCP-server per plugin för att styra exakt vilka abilities som exponeras (och hur). Då installerar du MCP Adapter som dependency via Composer och registrerar en custom server.

1) Installera paketet

Kör från din plugin-katalog:

composer require wordpress/mcp-adapter

2) Ladda Composers autoloader

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

Om det är rimligt att flera plugins på samma sajt beror på MCP Adapter eller Abilities API rekommenderas Jetpack Autoloader för att undvika versionskonflikter: https://github.com/WordPress/mcp-adapter/blob/trunk/docs/getting-started/installation.md#using-jetpack-autoloader-highly-recommended

3) Initiera MCP Adapter

if ( ! class_exists( WPMCPCoreMcpAdapter::class ) ) {
    // Om MCP Adapter inte finns tillgänglig: visa fel/admin notice, eller avbryt.
    return;
}

// Initialize MCP Adapter and its default server.
WPMCPCoreMcpAdapter::instance();

4) Skapa en custom server via mcp_adapter_init

Hooka in på mcp_adapter_init. Callbacken får en adapter-instans, och du använder create_server() för att definiera servern.

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

Parametrar att ha koll på:

  • (1) Unikt server-ID – används när du startar servern via WP-CLI.
  • (2) och (3) REST API namespace och route för servern.
  • (4) och (5) Visningsnamn och beskrivning – syns i AI-klienter när de listar MCP-servrar.
  • (6) Serverversion.
  • (10) En array med ability-namn som ska exponeras som MCP tools (flera går bra).
  • Övriga parametrar styr transport, error handling och observability. Du kan skriva egna handlers om du vill integrera med egna transport-/logg-/monitoringlösningar.

Exempel: lägg till en MCP-server i “List All URLs”

Ett konkret exempel är att ta pluginet List All URLs och lägga till en custom MCP-server som bara exponerar abilityn list-all-urls/urls som tool. Repo: https://github.com/wptrainingteam/list-all-urls

Förberedelser

  • Avaktivera MCP Adapter-pluginet om du har det aktiverat (så att du tydligt testar Composer-varianten i pluginet).
  • Klona repo:t i din WordPress-installations plugin-katalog.
cd wp-content/plugins
git clone git@github.com:wptrainingteam/list-all-urls.git

Byt till branchen som innehåller Abilities API-implementationen:

cd list-all-urls
git checkout abilities

Installera dependencies:

composer install

Lägg till mcp-adapter som dependency:

composer require wordpress/mcp-adapter

Kod: initiera och skapa server i list-all-urls.php

Öppna huvudfilen list-all-urls.php och lägg till följande längst ned:

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

Här behöver du inte sätta meta.mcp.publiclist-all-urls/urls, eftersom du explicit exponerar abilityn via din custom server.

Aktivera sedan pluginet i WordPress admin.

Uppdatera AI-klientens MCP-konfig för att använda custom servern

Uppdatera din MCP-konfiguration så att den pekar på den nya servern. Här är ett exempel för VS Code med både default-servern och den nya servern, båda via 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"
      ]
    }
  }
}

Du kan ha flera MCP-servrar i samma AI-app, vilket gör det enkelt att växla mellan olika sajter eller plugins som exponerar olika uppsättningar abilities.

När du ändrat konfigurationen: starta om appen eller starta MCP-servern i appens UI (beroende på klient). Därefter kan du be AI:n “lista alla URL:er på min WordPress-sajt”, och den kommer att anropa list-all-urls-urls via MCP Adapter.

VS Code: MCP tools används för att hämta List All URLs-data
Forrás: developer.wordpress.org

Säkerhet och best practices (viktigt på riktigt)

MCP-klienter agerar som inloggade WordPress-användare. Behandla därför MCP som en del av din applikations attackyta.

  • Var noggrann med permission_callback Varje ability ska kontrollera minsta nödvändiga capability (manage_options, edit_posts, osv.). Undvik __return_true för destruktiva operationer som att radera innehåll.
  • Använd dedikerade användare för MCP-access Särskilt i produktion: skapa en specifik roll/användare med begränsade rättigheter. Exponera inte kraftfulla abilities till AI-klienter som inte är granskade.
  • Föredra read-only abilities för publika MCP-endpoints Om du exponerar HTTP-transport över internet, fokusera på read-only: diagnostik, rapporter, och läsaccess till innehåll.
  • Implementera egen autentisering vid behov Standard är application passwords, men du kan implementera OAuth eller andra metoder för bättre säkerhet.
  • Övervaka och logga användning Använd egna error/observability-handlers för att koppla in din loggning och monitoring.

Kom igång idag: en minimal “hello AI”-väg

Vill du bara testa utan att bygga ett helt agentflöde direkt? En minimal start för en WordPress-utvecklare är:

  • Registrera en ability.
  • Installera/kräv och initiera MCP Adapter.
  • Koppla en MCP-aware AI-klient (t.ex. Claude Desktop eller Cursor).

Har du redan plugins som använder Abilities API blir MCP Adapter i praktiken en genväg till AI-redo API:er med väldigt lite extra jobb. Börja smått: exponera ett fåtal icke-destruktiva, read-only abilities som MCP tools, testa lokalt, och skala upp när du känner dig trygg. Dokumentation som är bra att ha nära: Abilities API: https://developer.wordpress.org/apis/abilities/ och MCP Adapter-repot: https://github.com/WordPress/mcp-adapter

Gå med i HelloWP-communityn!

Chatta med oss om WordPress, webbutveckling och dela erfarenheter med andra utvecklare.

- medlemmar
- online
Gå med

Vi använder cookies för att förbättra din upplevelse. Genom att fortsätta godkänner du vår Cookiepolicy.