a-blog cms のMCPサーバーを作ってみました


この記事は Advent Calendar 2025 の25日目の記事となります。a-blog cms に関する25日分の記事が公開されていますので、ぜひご覧ください。

https://adventar.org/calendars/11394



はじめに

こんにちは。a-blog cms を開発している伊藤です。
この記事では、2025 年秋に開催された a-blog cms Training Camp 2025 で発表した 「a-blog cms × MCP」 の内容を、アドベントカレンダー向けにまとめて紹介します。

最近は ChatGPT や Claude、Cursor など「AI と開発ツール」が急速に進化しています。特に 2024 年 11 月に公開された MCP(Model Context Protocol) は、CMS の世界にも大きな影響を与える新しい仕組みです。

今回、a-blog cms の GET API を利用した 専用 MCP サーバー(acms-mcp-server) を実装したので、内容・設定方法について、みていきます。

発表スライドも添付したので、よろしければご覧ください。

発表スライド
https://drive.google.com/file/d/1bnuSgKOMUQnXNijRbJRSbM8UC4Nr_MbJ/view?usp=sharing

MCPとは?

MCP は、AI と外部サービス(API・ファイルシステム等)をつなぐための 共通プロトコル です。

MCP のポイント

  • AIツールが共通して採用する “AI ツールの標準”

  • AI が外部 API を直接 “安全に” 使えるようになる

  • AI とサービスの間に “MCP サーバー” が入る構造

  • AI 側からは「自然言語」で指示するだけで API 呼び出しが可能

たとえば…

「最新のブログ記事を取ってきて」
「この記事の本文を取得して要約して」
「このモジュールの設定内容を見せて」

こんな曖昧な指示でも、AI が勝手に MCP ツールを選び、必要な API を叩いてくれます。

a-blog cms MCP Server について

a-blog cms の GET API を利用して、AIツールが a-blog cms の情報にアクセスできるようになります。GitHub、npmで MCP Serverを公開しています。

できること

今回の MCP サーバーで実装したツールは次の通りです。

  • キーワード検索(ページネーション対応)

  • エントリー詳細の取得

  • モジュール ID の一覧取得

  • モジュール ID の詳細取得

  • Twig(V2モジュール)のテンプレートスニペット取得

つまり、a-blog cms のコンテンツを AI から直接検索 & 活用できるようになります。

a-blog cms 側の準備

MCP サーバーを利用するには、a-blog cms 側 にいくつか準備が必要です。

APIキーの取得

管理画面 > コンフィグ > API設定 からV2のAPI機能を有効にして、APIキーをメモしておきます。

APIキーの取得
APIキーの取得

拡張アプリのインストール

標準のAPI機能だけだと、機能が足りないので、以下拡張アプリをダウンロード・設置してインストールします。

https://github.com/appleple/acms-mcp-module-api

インストール方法は、GitHubの README をご覧ください。

モジュールIDの作成

MCPサーバーからアクセスするための、APIを作るため、モジュールIDを作成します。

API

モジュール名

モジュールID名

引数チェック

記事検索API

V2_Entry_Summary

mcp_entry_summary

キーワード・ページ

記事詳細API

V2_Entry_Body

mcp_entry_body

エントリーID

モジュールID一覧API

V2_McpModuleApi_Index

mcp_modules

なし

モジュールID詳細API

V2_McpModuleApi_Detail

mcp_module_detail

なし

モジュールIDは、必ず「APIでの取得を許可」にチェックを入れてください。

モジュールIDの設定例
モジュールIDの設定例

AIツール側の準備

前提条件

acms-mcp-serverNode.js 製 の MCP サーバーです。そのため、Node.js がインストールされている必要があります。

インストールされていない場合は、公式サイトから導入してください。

https://nodejs.org/ja

インストール後、以下のコマンドでバージョンが表示されればOKです。

$ node -v
$ npm -v

Claude Desktopの例

Claude Desktopを起動し設定 > 開発者 を開き、[設定を編集]ボタンを押すとclaude_desktop_config.json というファイルが開きます。

Claude Desktop設定画面
Claude Desktop設定画面

テキストエディタで開いて以下の内容に更新します。

ACMS_BASEACMS_X_API_KEY はご自身の環境のものに置き換えてください。

{
  "mcpServers": {
    "acms": {
      "command": "npx",
      "args": [
        "-y",
        "acms-mcp-server@beta",
      ],
      "env": {
        "ACMS_BASE": "a-blog cms のブログURL",
        "ACMS_X_API_KEY": "メモしたAPIキー"
      }
    }
  }
}

Claude Desktop はアプリを再起動しないと反映されないため、JSON設定後アプリを再起動ください。

再起動後、コネクタの中に「acms」があれば成功です。

コネクタにacmsがあれば成功
コネクタにacmsがあれば成功

失敗する場合

もし MCP の登録に失敗する場合は、node へのパスが通っていない可能性があります。
特に nodenv などで Node.js を管理している環境では、この問題が発生しやすい ため注意が必要です。その場合は、利用している環境に合わせて、先ほどの JSON 設定に PATH を明示的に指定してください。

"env": {
  "ACMS_BASE": "a-blog cms のブログURL",
  "ACMS_X_API_KEY": "メモしたAPIキー"
  "PATH": "/Users/xxxxxx/.nodenv/shims:/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin"
}

Cursorエディタの例

プロジェクトディレクトリに.cursor/mcp.json を作成して、以下内容(JSON)をコピペします。

ACMS_BASEACMS_X_API_KEY はご自身の環境のものに置き換えてください。

{
  "mcpServers": {
    "acms": {
      "command": "npx",
      "args": [
        "-y",
        "acms-mcp-server@beta",
      ],
      "env": {
        "ACMS_BASE": "a-blog cms のブログURL",
        "ACMS_X_API_KEY": "メモしたAPIキー"
      }
    }
  }
}

設定完了したら、右上の歯車から設定を開き、 Tools & MCPacms が追加されていることを確認してください。

CursorエディタのTools&MCP設定画面
CursorエディタのTools&MCP設定画面

利用例

設定が完了したら、実際の利用例をみていきましょう。

1. CMSのコンテンツを参照してみる

Claude Desktop で CMSで登録されているエントリーの情報を検索します。

* MCPは siteテーマ の初期データが入っている環境に接続しています。

このサイトにある「セキュリティ」に関する記事をまとめて要約して

MCPが自動で「セキュリティ」をキーワードにCMSに検索しにいき、記事を取得して、要約してまとめて一覧表示してくれることが確認できます。

Claude Desktopでの実行結果
Claude Desktopでの実行結果

他にも以下のような応用が考えられます。

  • セキュリティに関する内容が古い記事を探して?

  • セキュリティに関する内容が古くなっていそうな記事はどれ?

  • セキュリティの〇〇に関する内容を初心者にもわかりやすく説明して

ポイントは全コンテンツにアクセスするわけにはいかないので、キーワードで絞りこんで指示してあげることになります。

2. テンプレートをAIで実装してみる

次は、Cursorエディタを使用して、twigによるテンプレートを実装してみましょう。

* MCPは developテーマtest_entry_summary モジュールIDを作成した環境に接続しています。

test.html.twigに、test_entry_summaryモジュールIDを使って、
・タイトル
・アイキャッチ画像
・概要文
を表示するテンプレートを作ってください。
Tailwind CSS を使って、カードレイアウトにしてください。

MCPが自動的に、指定されたモジュールIDを検索しにいき、V2モジュールのスニペットを参照しながら、指定されたTailwind CSSでテンプレートを実装してくれました。

Cursorエディタのエージェント画面
Cursorエディタのエージェント画面
実装されたテンプレートの表示
実装されたテンプレートの表示

最後に

AI の進化は本当に速いです。
MCP の登場で CMS 開発・運用の在り方も大きく変わろうとしています。

a-blog cms も、この波に遅れないように、引き続きアップデート、開発を続けていきます。

この記事が、みなさんの AI 活用のヒントになれば嬉しいです。

ぜひ試してみてください!!