WP Manifestindependent plugin directory
manifest / ai / wordpress-ability-plugin

WordPress MCP Ability Suite WP Registry grade B-. Medium-severity findings · 5 findingsWP RegistryMedium-severity findings · 5 findingsOpen the reportB-

Expose WordPress content operations to AI agents via Model Context Protocol (MCP) with app authentication support.

★ 0stars
29release downloads
v1.2.0latest · 8mo ago

Install

Download wordpress-mcp-ability-plugin-1.2.0.zip From the v1.2.0 release on GitHub, Feb 21, 2026

Upload it under Plugins → Add New Plugin → Upload Plugin, then activate.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/als141/wordpress-ability-plugin/releases/download/v1.2.0/wordpress-mcp-ability-plugin-1.2.0.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

WordPress サイトを AI エージェントに公開するための Model Context Protocol (MCP) サーバープラグインです。

概要

このプラグインは、WordPress の投稿・メディア・タクソノミーなどのコンテンツ操作を MCP ツールとして提供します。Claude、ChatGPT、その他の MCP 対応 AI エージェントから WordPress サイトを操作できます。

要件

  • PHP 8.1 以上
  • WordPress 6.0 以上

インストール

  1. wordpress-mcp-ability-plugin-x.x.x.zip をダウンロード
  2. WordPress 管理画面 → プラグイン → 新規追加 → プラグインのアップロード
  3. ZIP ファイルをアップロードして有効化
  4. 設定 → MCP 連携 から SaaS と連携

SaaS 連携(ワンクリック)

ユーザー向け手順

  1. プラグインを有効化
  2. WordPress 管理画面 → 設定 → MCP 連携
  3. SaaS の URL を入力
  4. 「SaaS と連携する」 ボタンをクリック
  5. SaaS サイトで連携を承認
  6. 自動的に WordPress に戻り、連携完了

連携解除は同じ画面から「連携を解除する」ボタンで行えます。


SaaS 開発者向け:連携フロー実装

連携フローの概要

┌──────────────────┐         ┌──────────────────┐
│   WordPress      │         │     SaaS         │
│   プラグイン      │         │   サービス       │
└────────┬─────────┘         └────────┬─────────┘
         │                            │
         │ 1. ユーザーが「連携」クリック │
         ├───────────────────────────>│
         │  (registration_code 付き)   │
         │                            │
         │ 2. SaaS が register API 呼出│
         │<───────────────────────────┤
         │  POST /wp-mcp/v1/register   │
         │                            │
         │ 3. credentials 返却        │
         ├───────────────────────────>│
         │  (access_token, api_key)   │
         │                            │
         │ 4. コールバックでリダイレクト │
         │<───────────────────────────┤
         │  ?status=success           │
         │                            │
         │ 5. MCP 通信開始            │
         │<─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┤
         │                            │

1. 連携リクエスト受信

ユーザーが「SaaS と連携する」をクリックすると、SaaS の以下の URL にリダイレクトされます:

https://your-saas.com/connect/wordpress?
  action=wordpress_mcp_connect&
  site_url=https://example.com&
  site_name=My%20WordPress%20Site&
  mcp_endpoint=https://example.com/wp-json/mcp/mcp-adapter-default-server&
  register_endpoint=https://example.com/wp-json/wp-mcp/v1/register&
  registration_code=xxxxxxxxxxxx&
  callback_url=https://example.com/wp-json/wp-mcp/v1/connection-callback

2. クレデンシャル取得 API

SaaS は register_endpoint に POST リクエストを送信してクレデンシャルを取得します:

POST /wp-json/wp-mcp/v1/register
Content-Type: application/json

{
  "registration_code": "xxxxxxxxxxxx",
  "saas_identifier": "Your SaaS Name"
}

レスポンス(成功):

{
  "success": true,
  "mcp_endpoint": "https://example.com/wp-json/mcp/mcp-adapter-default-server",
  "access_token": "永久有効なアクセストークン",
  "api_key": "mcp_xxxxxxxxxx",
  "api_secret": "xxxxxxxxxxxxxxxxxxxxxxxx",
  "site_url": "https://example.com",
  "site_name": "My WordPress Site"
}
  • access_token: Bearer トークンとして MCP リクエストに使用(永久有効)
  • api_key / api_secret: Basic 認証でも使用可能

3. コールバック

クレデンシャル取得後、ユーザーを callback_url にリダイレクトします:

成功時:

GET /wp-json/wp-mcp/v1/connection-callback?status=success

失敗時:

GET /wp-json/wp-mcp/v1/connection-callback?status=error&error=エラーメッセージ

4. MCP 通信

取得した access_token を使用して MCP 通信を開始:

# セッション初期化
curl -X POST https://example.com/wp-json/mcp/mcp-adapter-default-server \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{...},"id":1}'

# ツール呼び出し(Mcp-Session-Id ヘッダー必須)
curl https://example.com/wp-json/mcp/mcp-adapter-default-server \
  -H "Authorization: Bearer {access_token}" \
  -H "Mcp-Session-Id: {session_id}" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{...},"id":2}'

利用可能な MCP ツール(25個)

投稿操作

ツール名 説明
wp-mcp-get-posts-by-category カテゴリ別投稿取得
wp-mcp-get-post-block-structure 投稿のブロック構造取得
wp-mcp-get-post-raw-content 投稿の生コンテンツ取得
wp-mcp-create-draft-post 新規下書き作成
wp-mcp-update-post-content 投稿コンテンツ更新
wp-mcp-update-post-meta 投稿メタ更新
wp-mcp-publish-post 投稿の公開
wp-mcp-delete-post 投稿削除

メディア操作

ツール名 説明
wp-mcp-get-media-library メディアライブラリ取得
wp-mcp-upload-media メディアアップロード
wp-mcp-set-featured-image アイキャッチ設定

タクソノミー操作

ツール名 説明
wp-mcp-get-categories カテゴリ一覧取得
wp-mcp-get-tags タグ一覧取得
wp-mcp-create-term カテゴリ・タグ作成

テーマ・ブロック

ツール名 説明
wp-mcp-get-theme-styles テーマスタイル取得
wp-mcp-get-block-patterns ブロックパターン取得
wp-mcp-get-reusable-blocks 再利用ブロック取得
wp-mcp-extract-used-blocks 使用ブロック抽出
wp-mcp-analyze-category-format-patterns カテゴリフォーマット分析

検証・情報

ツール名 説明
wp-mcp-validate-block-content ブロックコンテンツ検証
wp-mcp-check-regulation-compliance レギュレーション準拠チェック
wp-mcp-check-seo-requirements SEO 要件チェック
wp-mcp-get-article-regulations 記事レギュレーション取得
wp-mcp-get-site-info サイト情報取得
wp-mcp-get-post-types 投稿タイプ一覧取得

MCP リソース(4個)

リソース URI 説明
wordpress://mcp/block_schemas ブロックスキーマ
wordpress://mcp/style_guide スタイルガイド
wordpress://mcp/category_templates カテゴリテンプレート
wordpress://mcp/writing_regulations 執筆規約

MCP プロンプト(4個)

プロンプト名 説明
wp-mcp-article-generation 記事生成プロンプト
wp-mcp-format-conversion フォーマット変換プロンプト
wp-mcp-seo-optimization SEO 最適化プロンプト
wp-mcp-regulation-learning 規約学習プロンプト

セキュリティ

  • アクセストークンは永久有効(連携解除で無効化)
  • HTTPS 接続推奨
  • 監査ログで認証試行を記録
  • 連携解除時にすべてのトークンを無効化

ライセンス

GPL v2 or later

Releases

5 releases. Each count is every asset in that release; expand a row for the breakdown.

Tag
Published
Assets
Downloads
v1.2.0 latest
Feb 21, 2026 8mo ago
wordpress-mcp-ability-plugin-1.2.0.zip
15
Feb 3, 2026 9mo ago
wordpress-mcp-ability-plugin-1.1.2.zip
11
Feb 1, 2026 9mo ago
wordpress-mcp-ability-plugin-1.1.1.zip
0
Feb 1, 2026 9mo ago
wordpress-mcp-ability-plugin-1.1.0.zip
0
Feb 1, 2026 9mo ago
wordpress-mcp-ability-plugin-1.0.2.zip
3
B- grade

Security

WordPress MCP Ability Suite 1.2.0 · audited by WP Registry

Medium-severity findings.

2 medium 3 low
Audited release
1.2.0
Findings
5
Worst severity
medium
Content hash
bc662cc571ba86dad541f0b4…

Findings

  • medium Subscriber-reachable read tools return password-protected and non-public published objects by ID

    information_disclosure

    Any logged-in user can mint their own API key (wp-mcp/v1/api-keys, is_user_logged_in) and call read abilities gated only on current_user_can('read'). get-post-raw-content and get-post-block-structure resolve the post through wp_mcp_get_post_or_error(), which only refuses non-'publish' posts the user cannot read_post. It does not check post_password or whether the post type is publicly viewable. A Subscriber can therefore enumerate IDs and read the raw and rendered content of password-protected posts and pages, and of 'publish'-status objects in non-public post types: synced patterns (wp_block), templates and navigation, and third-party CPTs that store data with publish status (e.g. Flamingo inbound messages holding contact-form PII). Rendered content also executes the_content shortcodes in the Subscriber's context.

    includes/helpers.php:36-49

    Recommendation

    Require current_user_can( 'read_post', $id ) unconditionally. Also refuse post_password_required() posts and post types where is_post_type_viewable() is false, unless the user can edit_post.

  • medium API key and token scopes are stored and advertised but never enforced

    missing_capability

    API keys default to scopes ['read'], the token endpoint copies a caller-supplied 'scope', and JWT carries 'scopes', but no code path consults them. check_permission() just calls wp_set_current_user($auth_result['user_id']), and each ability checks only WordPress capabilities. A key an administrator creates as 'read' for a third-party AI/SaaS therefore grants their full write and delete authority: publish-post, delete-post force, update-post-meta, create-term. Leaked or over-shared 'read-only' credentials have full account impact.

    includes/saas-auth/class-saas-auth-provider.php:196-218

    Recommendation

    Enforce scopes, e.g. a filter on ability permission callbacks that denies non-readonly abilities unless the token or key has 'write', and admin-level ones unless it has 'admin'. Alternatively, remove the scope UI so it does not imply a restriction.

  • low get-reusable-blocks exposes draft and published synced patterns to Subscribers

    information_disclosure

    The get-reusable-blocks ability is gated on 'read' and returns post_content of up to 200 wp_block posts in publish and draft status, from all authors. Core restricts wp_block reading to edit_posts. Impact is usually limited to design snippets.

    includes/abilities/tools.php:532-560

    Recommendation

    Gate on edit_posts and filter results by read_post.

  • low create-draft-post accepts any post type with only edit_posts

    missing_capability

    create-draft-post checks current_user_can('edit_posts'), then calls wp_insert_post with a caller-chosen post_type (any registered type: page, wp_template, wp_navigation, custom types) and arbitrary unprotected meta. It ignores the type's own create_posts/edit_posts capability. The result is only a draft and kses still applies, so impact is limited to creating unauthorized draft objects.

    includes/abilities/tools.php:653-706

    Recommendation

    Check get_post_type_object( $post_type )->cap->create_posts and restrict to show_in_rest post types.

  • low WP_DEBUG-gated unauthenticated auth-test route and credential-fragment logging

    debug_code

    With WP_DEBUG on, wp-mcp/v1/auth/test (permission_callback __return_true) echoes detailed authentication results for any supplied credentials. validate_access_token() and other paths also error_log token prefixes, stored hash prefixes and Authorization-header fragments. debug.log is commonly web-readable.

    includes/saas-auth/class-saas-auth-provider.php:739-750

    Recommendation

    Remove the debug route or require manage_options. Do not log any token or hash material.

WP Registry hashes the installable build and reports on that exact bytes-for-bytes copy. Embargoed findings are withheld until they are disclosed, so a clean verdict means nothing public is outstanding. WP Manifest does not audit code itself.