Skip to content

有料記事 AI データ取得 MCP(Cursor) ​

Cursor エージェントから、管理画面有料記事 AI と同じデータ取得 Tool を呼び出すための MCP です。生成 LLM ループの再現は対象外で、ローカル WP-CLI 経由のデータ取得が中心です。不足月の月次差分同期だけは MCP が bash スクリプトを直接起動します(ensure_local_month_data)。

投稿 meta の新規作成・可変セクション操作は対象外です。 既存 draft の固定セクション考察の書き戻しだけ update_paid_article_draft で行えます(Issue #3494)。汎用 WordPress MCP サーバー本体は未導入です。会話下書きの手順は paid-article-draft-workflow.md を参照してください。

関連: Issue #3410 / Issue #3484 / Issue #3494 / Issue #3739 / 設計 docs/design/有料記事/paid-article-ai-tools-design.md・docs/design/店舗調査/hall-investigation-ai-tools-design.md

前提 ​

  • Local Sites 等の ローカル WordPress が起動していること
  • テーマの core_*(または開発時 _src)が読み込まれ、wp slot-kouryaku paid-article-tool が使えること(WP-CLI 接続手順)
  • リポジトリで npm install 済み(@modelcontextprotocol/sdk)
  • 本番 DB を MCP から直接触る運用は推奨しない(ローカル検証前提)

本番相当データを使うとき(DB のみ同期) ​

MCP が見るのは WP_ROOT のローカル DB です。本番に近い数値・考察が必要なら、先に本番 DB をローカルへ取り込みます。

bash
# 不足月だけ(推奨・軽い / MCP ensure_local_month_data もこれ)
./scripts/sync-db-month-from-production.sh 2026-08

# 任意期間・日別記事投稿の部分コピーは CLI のみ(MCP 未対応)
./scripts/sync-db-month-from-production.sh --from 2026-08-01 --to 2026-08-15 --with-daily-article-posts

# 初回・スキーマ変更・破損復旧(重い・破壊的)
./scripts/sync-db-from-production.sh

ローカルでは本番と違うプラグインを無効にしていることが多いため、テーマ/プラグイン同期は既定にしない(DB のみ)。詳細は データベース同期 と DB同期の安全ガイド。

チャットで「ローカルを最新化して」と言われた場合も、特に指定がなければ上記の DB のみ同期を実行します。執筆中に日付が足りないときは、まず check_local_data_coverage で確認し、不足月ならユーザー許可のうえ ensure_local_month_data(または手動で月次差分スクリプト)を優先します。任意期間や日別記事投稿のコピーは DB 同期 の CLI 手順を使います。

設定(WP_ROOT / WP_CLI_BIN) ​

  1. .cursor/mcp.json.example を .cursor/mcp.json にコピーする(.cursor/mcp.json は gitignore。実パスをコミットしない)
  2. 自分の環境の WP_ROOT / WP_CLI_BIN に書き換える
変数必須説明
WP_ROOTはいWordPress ドキュメントルート(wp-config.php があるディレクトリ)
WP_CLI_BIN任意wp 実行ファイルのパス。未設定時は wp。alias ではなく実体パス
bash
cp .cursor/mcp.json.example .cursor/mcp.json
# エディタで WP_ROOT 等を編集

Local by Flywheel の例:

json
{
  "mcpServers": {
    "paid-article-tools": {
      "command": "node",
      "args": ["scripts/mcp-paid-article-tools.mjs"],
      "env": {
        "WP_ROOT": "/Users/あなたのユーザー名/Local Sites/slotkouryaku/app/public",
        "WP_CLI_BIN": "wp"
      }
    }
  }
}

config/local.env に既に WP_ROOT / WP_CLI_BIN がある場合は、同じ値を mcp.json の env にコピーしてください(Cursor MCP は local.env を自動読込しません)。

Host のターミナルから wp が DB に繋がらない場合は、Local の サイトシェル用ラッパーを WP_CLI_BIN に指定するか、サイトシェル内で動く wp の絶対パスを使ってください。

設定変更後は Cursor を再読み込みし、MCP paid-article-tools が有効になっていることを確認します。

利用可能な Tool ​

Contextual Tool(fetch_past_paid_articles / fetch_paid_article_sections)は 載せていません(意図的)。

MCP Tool name主な引数用途
fetch_hall_daily_resultsdate_from, date_to, 任意 hallsホール別差枚ランキング(日次トップ 10)
fetch_period_kishu_samaidate_from, date_to, kishu または kishu_ids, 任意 halls / include_daily指定機種の期間差枚サマリ(トップ 10 外可)
resolve_kishu_namekishu(string)略称・通称を正式名称 / kishu_id へ解決
fetch_hall_avg_samai_rankingdate_from, date_to, 任意 halls / min_count / limitホール別の平均差枚ランキング(店内上位帯の確認)
fetch_event_infodate_from, date_to, 任意 hallsホール別イベント名
fetch_daily_considerationsdate_from, date_to, 任意 hall日別記事の考察本文
fetch_next_month_machinestarget_month(YYYY-MM)翌月導入台一覧
fetch_target_month_articlestarget_month(YYYY-MM)指定月の有料記事・保存済み考察
fetch_birthday_machine_resultsdate(Y-m-d)、任意 halls指定日の誕生日キャラ・関連機種の差枚等
fetch_kishu_count_deltadate_from, date_to, 任意 halls機種台数前日比変化(増台・減台)一覧
fetch_what_days_by_perioddate_from, date_to, 任意 mode期間内のエスパス〇〇の日(掲載実績 / マスタ)
fetch_dates_by_what_dayname, 任意 mode / year / date_from / date_to〇〇の日名から該当日を逆引き
fetch_hall_x_postsquery / username / halls のいずれか、任意 date_from / date_to / max_results店舗まわりの X 投稿(生投稿・要約なし)。X API 従量課金
investigate_hall_with_grokquestion、任意 halls / usernames / date_from / date_toGrok(xAI)の x_search で店舗の話題を調査・要約
check_local_data_coveragetarget_month(YYYY-MM)指定月のローカル DB 充足確認(欠損日等)
ensure_local_month_datatarget_month(YYYY-MM)、任意 dry_run不足月の月次差分同期(bash を直接起動)
update_paid_article_draftpost_id, markdown_path既存 draft の固定セクション考察をマージ更新(公開しない)

戻り値は管理画面 AI と同じ JSON 契約です(成功時はデータ、失敗時は {"error":"..."})。ensure_local_month_data / update_paid_article_draft のみ { success, stdout, stderr, ... } 形式です。

店舗調査 Tool(fetch_hall_x_posts / investigate_hall_with_grok)の注意 ​

  • ローカル WordPress に保存された X Bearer Token(ADM-009) と Grok キー(ADM-032) を使う。未設定なら {"error":"..."} が返る。手順は 店舗調査(X / Grok)セットアップ
  • どちらも 外部 API の従量課金が発生する。1 回で調べる範囲を halls / usernames / 期間で絞る
  • fetch_hall_x_posts のキーワード検索は直近 7 日のみ(X API の制約)で、halls を付けるとホール名を含む投稿に絞る。username だけ指定するとユーザータイムラインを取る
  • Grok の summary は一次情報ではない。記事に書く事実は citations の投稿で確認する
  • 契約の正本: 店舗調査 AI ツール

update_paid_article_draft の注意 ​

  • 対象: post_status=draft の paid_article のみ。公開・ステータス変更はしない
  • 対象 meta: 固定セクション(paid_article_*)のみ。可変・特定機種・sections_order は管理画面
  • 実装: scripts/create-paid-article-draft.mjs --post-id=… --via=wp-cli(Application Password 不要)
  • Markdown: ## paid_article_* / *.comment_before / *.comment_after 見出し(会話用の日本語見出しだけでは不可)
json
{
  "success": true,
  "post_id": 26043,
  "markdown_path": "/…/docs/_drafts/paid-article/2026-08/2026-08.md",
  "stdout": "… edit: http://…/wp-admin/post.php?post=26043&action=edit"
}

check_local_data_coverage の出力例 ​

json
{
  "target_month": "2026-08",
  "db2023_max_day": "2026-08-22",
  "db2023_month_max_day": "2026-08-22",
  "db2023_day_count": 22,
  "db2023_missing_days": ["2026-08-23"],
  "kishu_summary_exists": true,
  "link_day_count": 22,
  "sufficient_for_writing": false,
  "suggested_sync_command": "./scripts/sync-db-month-from-production.sh 2026-08"
}

sufficient_for_writing が false のときは、ユーザー許可のうえ ensure_local_month_data を呼ぶか、返ってきた suggested_sync_command をプロジェクトルートで実行してください(フル同期は不要なことが多い)。

ensure_local_month_data の出力例 ​

json
{
  "success": true,
  "target_month": "2026-08",
  "dry_run": false,
  "exit_code": 0,
  "stdout": "...",
  "stderr": "",
  "suggested_check_command": "wp slot-kouryaku paid-article-tool check_local_data_coverage --args='{\"target_month\":\"2026-08\"}'"
}
  • 本番 DB への書き込みは行いません(本番から読み取り → ローカル upsert)
  • タイムアウトは 5 分。同時実行はスクリプト側のロックで拒否されます
  • dry_run: true なら取得・インポートせず対象テーブルと WHERE のみ表示します
  • 実行後は check_local_data_coverage で充足を再確認してください

WP-CLI 単体での確認 ​

MCP の前に CLI が通るか確認します。

bash
cd "$WP_ROOT"
wp slot-kouryaku paid-article-tool fetch_hall_daily_results \
  --args='{"date_from":"2026-08-01","date_to":"2026-08-07"}'

wp slot-kouryaku paid-article-tool fetch_period_kishu_samai \
  --args='{"date_from":"2026-08-17","date_to":"2026-08-23","halls":["espasu"],"kishu":["喰霊-零-Re"]}'

wp slot-kouryaku paid-article-tool fetch_hall_avg_samai_ranking \
  --args='{"date_from":"2026-08-01","date_to":"2026-08-31","halls":["espasu"],"min_count":100,"limit":20}'

wp slot-kouryaku paid-article-tool fetch_birthday_machine_results \
  --args='{"date":"2026-08-21"}'

wp slot-kouryaku paid-article-tool fetch_kishu_count_delta \
  --args='{"date_from":"2026-08-01","date_to":"2026-08-07","halls":["espasu"]}'

wp slot-kouryaku paid-article-tool check_local_data_coverage \
  --args='{"target_month":"2026-08"}'

wp slot-kouryaku paid-article-tool fetch_hall_x_posts \
  --args='{"halls":["espasu"],"max_results":10}'

wp slot-kouryaku paid-article-tool investigate_hall_with_grok \
  --args='{"question":"今週の新台導入の話題","halls":["espasu"]}'

ensure_local_month_data は WP-CLI には無く、MCP または手動で ./scripts/sync-db-month-from-production.sh YYYY-MM を実行します。

会話執筆 Skill との関係 ​

有料記事をチャットで書くときは Skill paid-article-conversational-draft(Issue #3408)を使います。数値・ランキング・イベントを書く前に、上記 MCP Tool で実データを取得してください。捏造禁止。

完成した Markdown を 既存 draft に反映するときは update_paid_article_draft(または同等の create-paid-article-draft.mjs --post-id=… --via=wp-cli)を使います。データ取得 MCP ≠ 汎用 WordPress MCP です。新規 draft の REST 作成は .env.local + スクリプト(--post-id なし)です。

トラブルシューティング ​

症状確認
WP_ROOT が未設定.cursor/mcp.json の env.WP_ROOT(example からコピーしたか)
WordPress ルートではないパスが .../app/public までか
command not found: wpWP_CLI_BIN に絶対パスを指定
許可されていない tool_nameContextual Tool は対象外
JSON が空 / exit 非 0サイトシェルで同じ CLI を手動実行し、stderr を確認
WP-CLI タイムアウトLocal 起動・DB 接続・WP_ROOT を確認
月次同期タイムアウトSSH・本番負荷を確認。タイムアウト時は MCP がロック掃除を試行するが、残る場合は rm -rf /tmp/sync-db-month.lock.d
月次同期がロックで失敗別プロセスの同期完了を待つか、孤児ロックディレクトリを削除

実装メモ ​

関連設計(カウンター履歴) ​

パチスロカウンターは WP 外(Supabase)で管理する。記事執筆時に履歴を読む Tool(fetch_slot_counter_history)の入出力契約は パチスロカウンター — 記事執筆時の履歴取得契約 を正とする。