mcpField
W
WordPress MCP Server

WordPress MCP Server

ローカル
github.com/rnagaビジネス・マーケティング1014 週間前に更新

WordPress MCP Server について

WordPress MCP Serverは、コンテンツ編集やサイト管理でWordPressを操作するためのサーバーです。ローカルデータベース接続、Streamable HTTPサーバー、認証付きリモートアクセス用CLIプロキシを備えています。

主な機能

  1. 01投稿の作成・編集・参照・削除
  2. 02ユーザー、コメント、タクソノミーの管理
  3. 03リビジョン、メタデータ、設定の操作
  4. 04WordPress権限に基づくプリミティブの絞り込み
  5. 05Express HTTPサーバーのひな形作成
  6. 06OAuthまたはApplication PasswordによるリモートMCPリクエストのプロキシ

活用シーン

  1. 01MCPクライアントから投稿を下書き・公開
  2. 02ユーザーロールとサイト権限の確認
  3. 03コメントのモデレーションとカテゴリー管理
  4. 04ローカル接続のみ対応するMCPクライアントからリモートWordPressへ接続

MCP 対応

ローカルSTDIOまたはStreamable HTTPでWordPress用ツールを提供します。CLIプロキシはローカルSTDIOエンドポイントとして動作し、OAuthまたはWordPress Application Passwordで認証してリモートMCPサーバーへリクエストを中継します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"rnaga-wp": {
"command": "npx",
"args": [
"-y",
"@rnaga/wp-mcp"
],
"env": {
"LOCAL_USERNAME": "<LOCAL_USERNAME>",
"WP_DB_HOST": "<WP_DB_HOST>",
"WP_DB_PORT": "<WP_DB_PORT>",
"WP_DB_NAME": "<WP_DB_NAME>",
"WP_DB_USER": "<WP_DB_USER>",
"WP_DB_PASSWORD": "<WP_DB_PASSWORD>",
"LOCAL_MULTISITE": "<LOCAL_MULTISITE>",
"LOCAL_DEFAULT_BLOG_ID": "<LOCAL_DEFAULT_BLOG_ID>",
"LOCAL_DEFAULT_SITE_ID": "<LOCAL_DEFAULT_SITE_ID>",
"LOCAL_SSL_ENABLED": "<LOCAL_SSL_ENABLED>",
"LOCAL_SSL_CA_FILEPATH": "<LOCAL_SSL_CA_FILEPATH>",
"LOCAL_SSL_CERT_FILEPATH": "<LOCAL_SSL_CERT_FILEPATH>",
"LOCAL_SSL_KEY_FILEPATH": "<LOCAL_SSL_KEY_FILEPATH>"
}
}
}
}
起動コマンドnpx -y @rnaga/wp-mcp
設定が必要な環境変数
LOCAL_USERNAMEWordPress username to assume for capability checks
WP_DB_HOSTWordPress database host
WP_DB_PORTWordPress database port
WP_DB_NAMEWordPress database name
WP_DB_USERWordPress database user
WP_DB_PASSWORDシークレットWordPress database password
LOCAL_MULTISITEEnable WordPress multisite mode
LOCAL_DEFAULT_BLOG_IDDefault blog ID for multisite
LOCAL_DEFAULT_SITE_IDDefault site ID for multisite
LOCAL_SSL_ENABLEDEnable SSL for database connection
LOCAL_SSL_CA_FILEPATHPath to SSL CA certificate file
LOCAL_SSL_CERT_FILEPATHPath to SSL certificate file
LOCAL_SSL_KEY_FILEPATHシークレットPath to SSL key file

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@rnaga/wp-mcp1.0.9

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

wp-mcp

@rnaga/wp-mcp は、サイトを AI で操作できる環境に変える WordPress 用の Model Context Protocol(MCP)サーバーです。Claude Desktop などのクライアントに WordPress の CRUD 基本機能を公開することで、アシスタントが必要に応じて投稿の下書きを作成し、共同で内容を練り直し、wp-admin を経由せずにデータベースへ直接公開できます。

この機能で実現できる一般的なシナリオをいくつか紹介します。

  • Claude Desktop などの MCP クライアントから投稿を直接下書き、修正、公開します。
  • WordPress のユーザー、その権限、機能を調査して、サイトの権限を監査したり、アクセスレポートを作成したりします。

@rnaga/wp-node を基盤として構築されたこのサーバーには、投稿、ユーザー、コメント、ターム、リビジョン、メタデータ、オプション、サイト設定を網羅する、厳選された MCP ツールセットが含まれています。MCP サーバーは、次のデータベーステーブル/リソースを管理できます。

リソースできること
投稿投稿とそのリビジョンを作成、更新、読み取り、削除します。
コメントディスカッションスレッドをモデレートしたり、生成した返信を追加したりします。
ユーザー標準の権限チェックを使って、投稿者を登録し、権限を変更したり、アカウントを無効化したりします。
タームカテゴリー、タグ、カスタムタクソノミーを管理します。
メタデータ投稿、ユーザー、コメント、ターム、サイトのメタフィールドを調査、作成、更新、削除します。
設定とオプションサイトレベルの設定を安全に切り替えます。

データベースに直接アクセスする STDIO サーバー を起動することも、リモートアクセス用に Streamable HTTP MCP サーバー をホストすることもできます。利便性のため、MCP クライアントが HTTP サーバーへのローカルブリッジを必要とする場合は、CLI プロキシ を追加できます。このプロキシは HTTP エンドポイントにリクエストを中継しながらローカル MCP サーバーとして動作します。OAuth や WordPress Application Password に対応していないクライアントに最適です。WordPress のビジネスロジックを再実装せずに、既存の編集ワークフローへ MCP を組み込めます。

このプロジェクトには、次の機能を備えた CLI(wp-mcp)が含まれています。

  • WordPress データベースへ直接接続するローカル STDIO MCP サーバーを設定して起動します。
  • Express ベースの Streamable HTTP MCP サーバーをひな形から作成して初期化します(env/TS のひな形を含みます)。
  • リモートの WordPress 環境に対して認証(OAuth または Application Password)し、JSON-RPC プロキシを実行して、MCP クライアントから安全にアクセスできるようにします。
  • 利用可能な MCP プリミティブを調べ、~/.wp-mcp に保存された認証情報を管理します。

次のコマンドを実行して、利用可能な CLI コマンドを一覧表示します。

npx @rnaga/wp-mcp -- --help
Usage: <command> <subcommand> [options]

Commands:
   local            Local MCP (stdio) server commands
   utils            Utility commands for configuration, debugging, and MCP inspection
   http             Scaffold a TypeScript project for the MCP streamable HTTP server and related tooling.
   remote           Remote MCP server commands

サーバー、CLI ユーティリティ、プロキシツールを組み合わせることで、WordPress のロジックを再実装せずに、MCP 標準を通じて WordPress コンテンツの CRUD、ユーザー管理、設定の同期が可能になります。

はじめに

ローカル STDIO サーバー

データベースに直接接続できる場合は、STDIO サーバーを実行します。CLI は、ローカルの WordPress ユーザーを前提とする MCP プロセスを起動し、サイトのツールを STDIO 経由で MCP クライアントに公開します。

flowchart LR
  client(["MCP Client<br/>(e.g. Claude Desktop)"])
  stdio(["Local STDIO MCP Server<br/>(wp-mcp CLI)"])
  db(["WordPress Database"])

  client <--> stdio
  stdio <--> db
  1. CLI を実行してデータベース接続を設定します。

    npx @rnaga/wp-mcp -- local config-set
    

    CLI から host、port、database name、user、password の入力を求められます。データベースで SSL が必要な場合は、リモートアクセスを保護するために CA、証明書、鍵ファイルのパスを指定できます。保存した値は、いつでも npx @rnaga/wp-mcp local config を実行して確認できます。

  2. サーバーを起動するよう MCP クライアントを設定します。Claude Desktop の場合は、Settings → Developer → Edit Config を開き、claude_desktop_config.json に次の内容を追加します。

    {
      "mcpServers": {
        "wp-mcp": {
          "command": "npx",
          "args": ["-y", "@rnaga/wp-mcp", "--", "local", "start"],
          "env": {
            "LOCAL_USERNAME": "wp-admin"
          }
        }
      }
    }
    

    サーバーを有効化する: 設定ファイルを保存し、MCP クライアント(Claude Desktop など)を終了して再起動します。これで、WordPress ツールがチャット入力欄の右下にある MCP インジケーターに表示されます。 Important: wp-admin を自分の WordPress ユーザー名に置き換えてください。サーバーはこれを使用して、ユーザーの WordPress の権限に基づき、利用可能な MCP プリミティブを判断します。たとえば、管理者ロールにはすべてのプリミティブ(投稿の作成、更新、削除、ユーザーの管理など)への完全なアクセス権が付与されますが、購読者ロールで利用できるツールは限られます。この権限に基づくフィルタリングにより、権限が必要な操作を誤って実行するのを防ぎます。利用可能なプリミティブと、それぞれに必要な権限およびロールを確認するには、次を実行します。

    npx @rnaga/wp-mcp -- utils list-prims
    

    プリミティブ名、タイトル、説明、必要な権限、許可されるロールを示すテーブルが表示されます。

    任意: プロジェクトで WordPress 設定マニフェストを定義している場合(例:src/_wp/config/wp.json)は、それを指定します。上記の env オブジェクトで、LOCAL_CONFIG を設定ファイルの絶対パスに設定してください。カスタム設定がない場合は、この環境変数を省略してください。設定マニフェストのスキーマについては、https://rnaga.github.io/wp-node/docs/getting-started/configuration を参照してください。

    MCP サーバーのテスト:

    対話形式でテストおよびデバッグするには、MCP Inspector を使用します。

    npx -y @modelcontextprotocol/inspector npx @rnaga/wp-mcp local start -u wp-admin
    

    http://localhost:6274 にビジュアルインターフェースが開きます。利用可能なツールを確認したり、さまざまな引数でテストしたり、サーバーの応答を調べたりできます。

    注: Inspector は、「Environment Variables」パネルの内容をセッション間でブラウザーのストレージに保持します。トラブルシューティング中にそこへ PATH エントリーを追加したことがある場合は、UI から手動で削除してください。古い値がサーバーに実際に必要な環境を上書きする場合があり、CLI フラグやスクリプトの変更でも上書きされません。

CLI フラグと環境変数のリファレンス:

環境変数CLI フラグ用途読み込まれるタイミング
LOCAL_USERNAME--username <value> / -u <value>使用する WordPress ユーザー名local start が、利用可能な MCP プリミティブを決めるロールと権限を持つ WP ユーザーを選択する際に使用します。
LOCAL_CONFIG--file <path> / -f <path>WordPress 設定マニフェストの場所local start が、カスタム WP 設定 JSON を init フックに指定する際に使用します。
DB_ENVIRONMENT、WP_DB_HOST、WP_DB_PORT、WP_DB_NAME、WP_DB_USER、WP_DB_PASSWORD、LOCAL_MULTISITE、LOCAL_DEFAULT_BLOG_ID、LOCAL_DEFAULT_SITE_ID、LOCAL_SSL_ENABLED、LOCAL_SSL_CA_FILEPATH、LOCAL_SSL_CERT_FILEPATH、LOCAL_SSL_KEY_FILEPATH(wizard via local config-set)ローカルデータベースの接続情報local start の前にシークレットストアによって読み込まれます。local config-set で設定するか、事前にエクスポートしてください。
MCP ストリーミング可能な HTTP サーバー

MCP をインターネット経由で公開したり、リモートのチームメンバーが接続できるようにしたりする場合は、HTTP サーバーを使用します。CLI は Express アプリ(src/http/express/index.ts を参照)を生成します。このアプリは、同じプリミティブレジストリを再利用しながら、MCP のストリーミング HTTP トランスポートと SSE フォールバックの両方を公開します。

  1. プロジェクトを生成する

    npx @rnaga/wp-mcp -- http init
    

    ウィザードでデータベース接続の詳細を入力すると、wp-node プロジェクトが作成され、HTTP トランスポート用の Express ボイラープレートと TypeScript 設定が追加されます。

    生成されるディレクトリ構成:

    ├── _wp
    │   ├── config
    │   │   ├── index.d.ts
    │   │   └── wp.json
    │   └── settings.ts
    ├── .env
    ├── .gitignore
    ├── index.ts
    ├── package-lock.json
    ├── package.json
    ├── src
    │   └── index.ts
    └── tsconfig.json
    

    .env に、スキャフォルダーで求められた値と、このドキュメントの後半に記載されている HTTP 固有の環境変数を設定してください。

  2. 開発環境でサーバーを実行する

    npm run dev
    

    ts-node を利用するため、事前にコンパイルしなくても変更を試せます。

  3. 本番環境用にビルドして実行する

    npm run build
    npm run start
    

    コンパイルされた出力を実行すると、ライブラリ内で createHttpServer が構成するものと同じ Express サーバーが起動します。

リモートプロキシ CLI で接続する

MCP クライアントが STDIO しか理解しない場合、または完全な OAuth サポートがない場合でも、WordPress 環境に HTTP 経由でアクセスできるなら、リモートプロキシを使用できます。プロキシは認証情報を ~/.wp-mcp に保存し、適切な Authorization ヘッダーを付けて、MCP リクエストをリモートサーバーに中継します。

flowchart LR
  client(["MCP Client<br/>(e.g. Claude Desktop)"])
  proxy(["CLI Proxy<br/>(handles OAuth<br/>or WP Application Password)"])
  server(["MCP HTTP Server<br/>(Express instance in this repo)"])
  db(["WordPress Database"])

  client <--> proxy
  proxy <--> server
  server <--> db
  1. 一度だけ認証する

    WordPress アプリケーションパスワードの認証情報、または OAuth デバイスフローを使って、まずプロキシを登録します。これにより、MCP クライアントに代わってリクエストに署名できるようになります。

    • WordPress アプリケーションパスワード

      npx @rnaga/wp-mcp -- remote login password
      

      サーバーの認証 URL(例:http://localhost:3000)を指定し、WordPress のユーザー名とアプリケーションパスワードを入力します。認証情報は安全に保存され、以降のプロキシ実行時に HTTP Basic 認証が自動的に使用されます(WordPress アプリケーションパスワードは Basic 方式で送信されます)。

      保存された値を確認するには、次を実行します。

      npx @rnaga/wp-mcp -- remote config
      
    • OAuth デバイスフロー

      npx @rnaga/wp-mcp -- remote login oauth
      

      CLI は /auth/device/start を呼び出してユーザーコードを表示し、ブラウザーで認証 URL を開きます。デバイスフローを完了すると、アクセストークンとリフレッシュトークンが ~/.wp-mcp に書き込まれます。必要に応じて remote config または remote revoke-token を再実行できます。

    保存済みのシークレットを削除する必要がある場合は、npx @rnaga/wp-mcp -- remote config-clear を使用します。

  2. プロキシを起動する

Claude Desktop(または他の MCP クライアント)は、ローカル STDIO サーバーと同じ方法で設定します。ただし、コマンドの実行先をプロキシに指定してください。

{
  "mcpServers": {
    "wp-mcp": {
      "command": "npx",
      "args": ["-y", "@rnaga/wp-mcp", "--", "remote", "proxy"],
      "env": {
        "REMOTE_AUTH_TYPE": "oauth",
        "REMOTE_URL": "https://wp-mcp.example.com/mcp"
      }
    }
  }
}

REMOTE_AUTH_TYPE(oauth または password)と REMOTE_URL を、リモートのエンドポイントに合わせて設定してください。実行時に --authType と --remoteUrl を渡して指定することもできます。プロキシは保存済みの認証情報を検証し、OAuth トークンの有効期限が切れるまで 5 分以内になると更新したうえで、すべての呼び出しをリモートの HTTP トランスポートに委譲するローカルの STDIO MCP サーバーを公開します。

起動後、クライアントはローカルでは STDIO を使用し、プロキシがリモートの Express サーバーにトラフィックを中継します。

Streamable HTTP サーバーの内部構造

Streamable HTTP のデプロイメントには、リクエストごとに WordPress コンテキストを初期化する Express ミドルウェアが含まれています。また、ストリーミング HTTP と SSE の両方のトランスポートを登録し、キャッシュと OAuth メタデータのハンドラーを追加します。リモートサーバーは OAuth 2.0 のリソースサーバーとして動作します。クライアントはベアラートークンまたは WordPress アプリケーションパスワードを提示する必要があり、サーバー自体が OAuth クライアントとして動作することはありません。検出メタデータは /.well-known/oauth-protected-resource から提供され、実装は RFC 9728 に準拠しています。

CLI のデバイスコードヘルパー(npx @rnaga/wp-mcp -- remote login oauth)は、ターミナルで使いやすいフローを MCP ツールに追加します。サーバーの /auth/device/* エンドポイントと通信し、取得したトークンをシークレットボルト(~/.wp-mcp)に保存すると、プロキシがベアラー認証情報を自動的に更新して付加できるようになります。

アクセス制御

HTTP レイヤーは /mcp と /sse の両方で認証を適用し、認可された呼び出し元だけがセッションを確立できるようにします。次の方式をサポートしています。

  • OAuth ベアラートークン — 設定されたプロバイダーを通じて検証されます。MCP セッションの初期化前に、アクセストークンが WordPress ユーザーに紐付けられます。
  • WordPress アプリケーションパスワード — HTTP Basic 認証で受け付けられ、サーバー側で WordPress ユーザーとして扱う前に検証されます。

ベアラー認証に失敗したリクエストには、認可 URI と要求されたスコープを含む RFC 6750 準拠の WWW-Authenticate ヘッダーが返されるため、クライアントは適切に復旧できます。

エンドポイント
パス目的
/mcpクライアントからサーバーへのリクエストとセッションのライフサイクル管理に使用する Streamable HTTP MCP トランスポートです。
/sseサーバー送信イベントを必要とするクライアント向けのレガシー SSE トランスポートです。
/messagesSSE クライアントがユーザーメッセージをサーバーに送信できるようにします。
/auth/device/startOAuth デバイス認可フローを開始します。
/auth/device/pollOAuth デバイスフローの完了をポーリングし、トークンを返します。
/auth/refreshリフレッシュトークンを新しいアクセストークンと交換します。
/auth/revokeプロバイダーでアクセストークンを失効させます。
/auth/userinfo指定された Authorization ヘッダーに関連付けられた WordPress ユーザーを返します。
/auth/passwordWordPress アプリケーションパスワードを検証し、関連付けられたユーザーを返します。
/.well-known/oauth-protected-resource検出ツール向けに OAuth リソースメタデータを提供します。
対応する OAuth プロバイダー

サーバーには、GitHub、Google、Auth0 用のプロバイダープロファイルが付属しています。各プロファイルには、デバイスコードの発行、トークンのポーリング、更新、失効のロジックがまとめられており、HTTP サーバーのインスタンス化時に組み込めます。別の ID システムを使用するには、同じフックを通じて独自のプロバイダー実装を指定し、デプロイメントの残りの部分は変更せずに使用してください。

OAuth プロバイダーの設定

OAuth 認証を有効にするには、選択したプロバイダーにアプリケーションを登録し、環境変数に認証情報を設定する必要があります。

GitHub OAuth の設定
  1. OAuth アプリを作成する:GitHub Developer Settings > OAuth Apps > 「New OAuth App」に移動します
  2. アプリケーションを設定する:
    • アプリケーション名:アプリの表示名
    • ホームページ URL:アプリケーションのホームページ
    • 認証コールバック URL:OAuth のコールバックエンドポイント
  3. 認証情報を取得する:作成後、Client ID を控え、Client Secret を生成します
  4. 環境変数を設定する:
    OAUTH_CLIENT_ID=your_github_client_id
    OAUTH_CLIENT_SECRET=your_github_client_secret
    
  5. ドキュメント:GitHub OAuth Apps Documentation
Google OAuth の設定
  1. Google Cloud Console にアクセスする:Google Cloud Console にアクセスします
  2. OAuth 認証情報を作成する:Menu > APIs & Services > Credentials > Create Credentials > OAuth client ID に移動します
  3. OAuth 同意画面を設定する:アプリ名、ユーザーサポートのメールアドレス、対象ユーザーの設定を行います
  4. アプリケーションの種類を選択する:適切な種類(Web application、Desktop app など)を選択します
  5. 認証情報を取得する:Client ID と Client Secret を控えます
  6. 環境変数を設定する:
    OAUTH_CLIENT_ID=your_google_client_id
    OAUTH_CLIENT_SECRET=your_google_client_secret
    
  7. ドキュメント:Setting up OAuth 2.0 in Google Cloud
Auth0 OAuth の設定
  1. アプリケーションを作成する:Auth0 Dashboard でネイティブアプリケーションを登録します
  2. 許可タイプを設定する:Application Settings > Advanced > Grant Types で、次を有効にします:
    • Device Code(デバイスフローに必須)
    • Refresh Token(任意。トークンの更新に使用)
  3. OIDC Conformant を有効にする:Application Settings > Advanced > OAuth で、OIDC Conformant が有効になっていることを確認します
  4. 接続を設定する:アプリケーション用に少なくとも 1 つの接続を設定して有効にします
  5. 認証情報を取得する:Client ID、Client Secret、Domain を控えます
  6. 環境変数を設定する:
    OAUTH_DOMAIN=your-tenant.us.auth0.com
    OAUTH_CLIENT_ID=your_auth0_client_id
    OAUTH_CLIENT_SECRET=your_auth0_client_secret
    
  7. ドキュメント:Auth0 Device Authorization Flow
環境変数の使用に関するリファレンス

HTTP サーバーは環境変数から設定を読み込みます。通常は、ローカルの .env ファイル、継承されたプロセス環境、またはホスティングプラットフォームで指定した設定を使用します。

環境変数用途値の例読み込み時期
OAUTH_RESOURCE_URL保護対象リソースの公開 URLhttps://mcp.example.comOAuth リソースメタデータおよび DNS リバインディング保護チェックに含まれます。
OAUTH_RESOURCE_NAME保護対象リソースの表示名Example WordPress MCPディスカバリーメタデータで返されます。
OAUTH_SCOPES_SUPPORTEDリソースがサポートするスコープ(カンマ区切り)openid,offline_access,posts.readディスカバリーメタデータおよび WWW-Authenticate ヘッダーで通知されます。
OAUTH_SERVICE_DOCUMENTATION_URLリソースのドキュメントへのリンクhttps://docs.example.com/mcpディスカバリーメタデータで返されます。
OAUTH_AUTHORIZATION_URL認可サーバーの URLhttps://auth.example.comエラーヘッダーでクライアントに送信され、CLI がデバイスフローを初期化する際に使用されます。
OAUTH_CLIENT_IDOAuth クライアント識別子mcp-remote-serverデバイスコードのリクエスト時またはトークンの更新時にプロバイダーへ渡されます(プロバイダーによって異なります)。
OAUTH_CLIENT_SECRETOAuth クライアントシークレット(必要な場合)super-secret-valueトークンの更新時に機密クライアントを想定するプロバイダーで使用されます。
ALLOWED_CORS_ORIGINSCORS で許可する HTTP オリジン(カンマ区切り)https://claude.ai,https://inspector.modelcontext.comHTTP サーバーの CORS ポリシーを設定します。
ENABLE_DNS_REBINDING_PROTECTIONHTTP トランスポートの DNS リバインディング保護を有効化trueストリーム可能な HTTP トランスポートの DNS リバインディング保護を有効にします。
OAUTH_DOMAINOAuth ドメイン(Auth0 固有)sample.us.auth0.comAuth0 Provider の場合、デバイス URL とトークン URL の構築に使用されます。

変数が省略されている場合、サーバーは安全なデフォルト値にフォールバックします(たとえば、CORS のデフォルトは *、DNS リバインディング保護は無効、OAuth メタデータは省略されます)。プロバイダーが必要とする値だけを設定してください。

カスタム MCP プリミティブの開発

Model Context Protocol では、第一級のプリミティブとして、ツール(呼び出し可能なアクション)、リソース(URI で公開される読み取り可能なアセット)、プロンプト(テンプレート化されたメッセージシーケンス)の 3 つが定義されています。このパッケージの defaultMcpPrimitives には現在ツールの実装が含まれていますが、同じデコレーターと登録のパターンを使えば、リソースやプロンプトも公開できます。以下のワークフローでは、ひな形の作成、クラスの実装、各トランスポートへの接続について説明します。

1. プロジェクトのひな形を作成する

CLI を使って TypeScript のひな形を初期化し、依存関係をインストールします。

ローカル STDIO サーバー
npx @rnaga/wp-mcp -- local init

src/cli/local.cli.ts に実装されているコマンドは、@rnaga/wp-node と @rnaga/wp-mcp をインストールし、スターターの src/index.ts を配置し、tsconfig.json をコピーして、.gitignore を作成し、package.json に dev、build、start スクリプトを追加します。

生成される構成:

├── package.json
├── src
│   └── index.ts
├── tsconfig.json
└── package-lock.json
ストリーマブル HTTP サーバー
npx @rnaga/wp-mcp -- http init

このサブコマンド(src/cli/http.cli.ts を参照)は、WordPress のプロンプトを実行し、同じ依存関係をインストールして、HTTP 用の src/index.ts テンプレートをコピーし、MCP 固有の設定を .env または .env.<environment> に追記します。スキャフォールドの作成後、npm run dev を実行すると Express トランスポートを起動できます。

2. プリミティブクラスを実装する

src/mcp/example-suite.mcp.ts のようなファイルを作成し、@mcp と @mcpBind でデコレートされたクラスを追加します。各 @mcpBind メソッドは、MCP サーバーインスタンスと実行時メタデータを受け取るため、ツール、リソース、プロンプトを一か所に登録できます。

SDK のエンドツーエンドでの使用方法とプリミティブの登録例については、@modelcontextprotocol/typescript-sdk リポジトリを参照してください。

import { z } from "zod";

import { mcp, mcpBind } from "@rnaga/wp-mcp/decorators";
import { Mcps } from "@rnaga/wp-mcp/mcp";
import type * as types from "@rnaga/wp-mcp/types";

@mcp("example_suite", {
  description: "Example bundle showing tools, resources, and prompts.",
})
export class ExampleSuiteMcp {
  @mcpBind("example_tool", {
    title: "List Options",
    description: "Return the WordPress options table as JSON.",
    capabilities: ["read"],
  })
  example(...args: types.McpBindParameters) {
    const [server, username, meta] = args;

    server.registerTool(
      meta.name,
      {
        title: meta.title,
        description: meta.description,
        inputSchema: undefined,
      },
      async () => {
        const wp = await Mcps.getWpContext(username);
        const options = await wp.utils.crud.options.getAll();

        return {
          content: [
            {
              type: "text",
              text: JSON.stringify(options, null, 2),
            },
          ],
        };
      }
    );

    return server;
  }
}

各ハンドラーは、同じタプルを受け取ります。

  • server – @modelcontextprotocol/sdk/server/mcp.js の McpServer インスタンスです。registerTool、registerResource、registerPrompt を公開しています。
  • username – セッションに関連付けられた WordPress のユーザー ID です。WordPress API にアクセスする際の権限チェックに、Mcps.getWpContext に渡して使用します。
  • meta – デコレーターのメタデータ(name、title、description、capabilities、roles)です。プリミティブの登録時に再利用できます。

Mcps.getWpContext は、初期化済みの @rnaga/wp-node コンテキストを返します。ツール、リソース、プロンプト内で使用すると、CRUD ヘルパーの呼び出し、サイトメタデータの収集、MCP レスポンスを返す前の追加ロジックの適用ができます。

3. サーバーのエントリーポイントにクラスを登録する

どちらのトランスポートも mcps 配列を公開しています。サーバーの起動時にクラスが組み込まれるよう、配列に追加してください。クラスメソッド内で登録されたすべてのプリミティブ(ツール、リソース、プロンプト)は、接続された MCP クライアントから利用できるようになります。

ローカル STDIO サーバー
import { createLocalServer } from "@rnaga/wp-mcp/cli/local";
import { ExampleSuiteMcp } from "./example-suite.mcp";

(async () => {
  const mcpServer = await createLocalServer({
    username: process.env.LOCAL_USERNAME,
    mcps: [ExampleSuiteMcp],
  });

  // connect transport...
})();
ストリーマブル HTTP サーバー
import { MemoryCache } from "@rnaga/wp-mcp/http/cache/memory-cache";
import { createHttpServer } from "@rnaga/wp-mcp/http/express";
import { ExampleSuiteMcp } from "./example-suite.mcp";

const app = createHttpServer({
  cacheClass: MemoryCache,
  mcps: [ExampleSuiteMcp],
});

サーバーを起動すると(ローカルでは npm run dev、ビルド後は npm start)、登録されたツール、リソース、プロンプトが、ローカルプロキシまたは HTTP トランスポート経由で接続されたすべての MCP クライアントから利用できるようになります。

MCP レジストリ

このサーバーは Model Context Protocol Registry で公開されており、MCP クライアントから簡単に見つけてインストールできます。

サーバーは次の場所にあります。 https://registry.modelcontextprotocol.io/v0/servers?search=wp-mcp&version=latest

レジストリエントリーには、設定の詳細、必要な環境変数、インストール手順が記載されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。