Skip to main content
Glama
javeo2022

WordPress MCP Server

by javeo2022

WordPress MCP Server for Claude Code

Claude Code(Desktop)から WordPress を直接操作するための MCP サーバーです。 Python 製で、公式 mcp パッケージの FastMCP を使い、WordPress REST API(/wp-json/wp/v2/)をアプリケーションパスワード認証で叩きます。 サイトは .env に書いた分だけいくつでも登録でき、ツールの site 引数で切り替えられます。

  • 作り方・使い方の解説記事:Claude CodeでWordPress自動投稿【MCP活用】

  • このサーバー自体、Claude Code に「こういうサーバーを作って」と頼んで 1 ツールずつ育てたものです

  • テーマ・SEO プラグイン・サーバー会社に依存する処理は入っていません(メタディスクリプションの書き込み先だけ環境変数で選びます。下記)

できること(ツール 18 個)

種類

ツール

接続確認

check_connection(登録済みサイトの一覧も返す)

投稿(post)

create_post / update_post / get_post / list_posts / delete_post

固定ページ(page)

create_page / update_page / get_page / list_pages / delete_page

カテゴリ・タグ

list_categories / create_category / list_tags / create_tag

Markdown 入稿

post_from_markdown_file(frontmatter 付き md を 1 コマンドで投稿・更新)/ markdown_to_html

メディア

upload_media(ローカル画像をメディアライブラリへ、alt_text 付き)

  • status の既定値は draft(公開は明示したときだけ)

  • カテゴリ・タグは名前でも ID でも渡せます(名前が無ければ新規作成)

  • featured_media にメディア ID を渡すとアイキャッチも設定できます(投稿のみ)

  • meta に任意の post meta を渡せます(キーは REST 公開されている必要があります)

Related MCP server: AutoWP MCP Server

セットアップ

1. ライブラリのインストール

pip install -r requirements.txt

2. 認証情報(.env)

.env.example をコピーして .env を作り、値を埋めます。.env は .gitignore 済みなのでコミットされません。

cp .env.example .env

アプリケーションパスワードは WordPress 管理画面の「ユーザー → プロフィール → アプリケーションパスワード」で発行します。普段のログインパスワードは使いません。 発行するユーザーは管理者ではなく編集者ロールにしておくのがおすすめです(漏れたときの被害を記事の範囲に限定できます)。

サイトは WP_<NAME>_BASE_URL / WP_<NAME>_USERNAME / WP_<NAME>_APP_PASSWORD の 3 つを 1 組として登録します。<NAME> を小文字にしたものがサイト名になります(WP_BLOG_* → site="blog")。何組書いても構いません。

環境変数

内容

WP_<NAME>_BASE_URL

サイトの URL(例 https://example.com)

WP_<NAME>_USERNAME

WordPress のログインユーザー名

WP_<NAME>_APP_PASSWORD

アプリケーションパスワード(スペース込みのままで可)

WP_<NAME>_AUTHOR_ID

任意。新規作成する投稿・固定ページの著者ユーザー ID(更新には影響しない)

WP_DEFAULT_SITE

任意。site を省略したときに使うサイト名(未設定なら blog があれば blog、無ければ最初に見つかったサイト)

WP_META_DESCRIPTION_KEY

任意。frontmatter の meta_description を書き込む post meta のキー(既定 ssp_meta_description = SEO SIMPLE PACK。空にすると書き込まない)。サイト別に変えるなら WP_<NAME>_META_DESCRIPTION_KEY

旧キー WP_BASE_URL / WP_USERNAME / WP_APP_PASSWORD は blog サイトの別名として今も認識します。

3. Claude Code への登録(.mcp.json)

作業フォルダ直下に .mcp.json を置くと、Claude Code(Desktop)がそのフォルダを開いたときに自動で検出します。パスはご自身の環境に合わせてください。

{
  "mcpServers": {
    "wordpress": {
      "command": "python",
      "args": ["C:\\path\\to\\wp_mcp_server.py"],
      "env": {}
    }
  }
}

チャット版の Claude Desktop で使う場合は、claude_desktop_config.json(Windows は %APPDATA%\Claude\)に同じ形で書きます。

4. メタディスクリプションを書き込みたい場合(任意)

SEO プラグインのメタ欄は、標準では REST API から書き込めません(WordPress 側で register_post_meta(..., show_in_rest: true) されている必要があります)。

  • SEO SIMPLE PACK(+ SWELL)の場合:同梱の mu-plugins/ssp-meta-rest.php を /wp-content/mu-plugins/ に置くと、ssp_meta_description と SWELL の投稿別 CSS(swell_meta_css)が REST 公開されます(フォルダが無ければ作成、置くだけで有効化)。JavaScript(swell_meta_js)はあえて公開していません。認証情報が漏れたときに任意のスクリプトを注入されるリスクがあるためです

  • ほかの SEO プラグインの場合:そのプラグインのメタキーを REST 公開する小さな mu-plugin を用意し、.env の WP_META_DESCRIPTION_KEY にそのキー名を書きます(例 Yoast なら _yoast_wpseo_metadesc)。mu-plugin の書き方は同梱ファイルが雛形になります

  • メタを書かない場合:WP_META_DESCRIPTION_KEY= と空にしておくと、meta_description があっても送りません

使い方

Claude Code のチャットで自然言語で頼めます。

WordPressの接続確認をして
articles/my-post.md を下書きとして投稿して
下書きの一覧を出して
thumbnail/my-post.png をアイキャッチ用にアップロードして、さっきの投稿に設定して

Markdown frontmatter

post_from_markdown_file に渡す md ファイルの先頭に書きます。id があれば更新、無ければ新規作成して id を書き戻します。

---
title: 記事タイトル            # 必須
status: draft                   # draft / publish / future / pending / private
slug: my-article-slug
excerpt: 抜粋
meta_description: メタディスクリプション   # WP_META_DESCRIPTION_KEY のキーに書き込む(要 REST 公開)
date: 2026-09-20T09:00:00       # 予約投稿用(status: future)
format: gutenberg               # markdown(既定) / gutenberg / html(変換せずそのまま送る)
site: blog                      # .env で登録したサイト名(省略時は WP_DEFAULT_SITE)
post_type: post                 # post(既定) / page
categories: ["カテゴリ名"]      # 名前 or ID
tags: ["タグ1", "タグ2"]        # 名前 or ID
featured_media: 1234            # メディア ID(投稿のみ)
# 固定ページのみ
# parent: 10
# menu_order: 1
# meta:                         # 任意の post meta(キーは REST 公開されていること)
#   some_meta_key: "value"
id: 5678                        # 更新時。新規作成後に自動で書き戻される
---

未知のキー(例 focus_keyword)は WordPress に送らず無視します(ローカルのメモとして置けます)。

安全側の設計

  • 投稿の既定は draft。公開は status: publish を明示したときだけ

  • 認証情報は .env からのみ読む(コードに書かない・コミットしない)

  • 触れる範囲は REST API の投稿・固定ページ・メディア・カテゴリ・タグと、REST 公開したメタだけ。サイト全体の設定やプラグイン設定には触れません

動作確認環境(2026-09 時点)

  • Windows 11 / Python 3.13

  • WordPress 6.9 以降(アプリケーションパスワードが使える 5.6 以降なら動く想定)/ SWELL + SEO SIMPLE PACK

  • Claude Code Desktop

更新履歴

  • 2026-09-20:汎用化。サイトを .env の WP_<NAME>_* から自動発見(名前・数の制限なし)、既定サイトを WP_DEFAULT_SITE で指定可、メタディスクリプションの書き込み先を WP_META_DESCRIPTION_KEY で変更可、docstring から特定サイト・テーマの前提を除去

  • 2026-09-20:現行版に同期。WP_<NAME>_AUTHOR_ID による著者固定、requirements.txt を実際の import(mcp)に合わせて修正、補助プラグイン mu-plugins/ssp-meta-rest.php を同梱

  • 2026-06-14:初版

ライセンス

MIT

Related MCP Connectors

Related MCP Servers