AI-managed WordPress

CASE STUDY / AI AGENTS

Using Claude Code and MCP to maintain a real WordPress website.

這個網站本身就是專案的產出:你現在看到的頁面是由 AI Agent 透過受限的 MCP 介面建立與維護的。


Idea

把 LLM 接上一個真實、對外運作的系統,最大的問題不是「AI 能不能寫內容」,而是「要給它多少權限」。最省事的做法是給 shell 或資料庫存取;但那等於把整台主機的風險交給一個非決定性的執行者。

這個專案的做法相反:先定義 Agent 需要完成的任務,再把這些任務拆成一組最小的能力,透過 MCP 以工具形式暴露出來。Agent 只能做被明確允許的事,其他一律不存在於介面上。

Architecture

AI-managed WordPress 架構圖:Human 下達意圖,Claude Code 規劃執行,透過 capability-scoped 的 MCP 工具介面操作 WordPress,最後產出已發布頁面

Human
↓
Claude Code
↓
MCP (capability-scoped tools)
↓
WordPress

人負責意圖與驗收;Claude Code 負責規劃與執行;MCP 是唯一的執行通道,同時也是權限邊界;WordPress 是被維護的目標系統。Agent 沒有任何繞過 MCP 的路徑。

Capability-based Least Privilege

權限不是以「使用者角色」給予,而是以「能力」定義。每一個工具對應一個具體且範圍受限的動作,沒有通用的逃生門。

AGENT CAN

  • 讀取內容
  • 建立與修改 Page
  • 發布內容
  • 管理 Navigation
  • 設定 Homepage
  • 管理 Media

AGENT CANNOT

  • shell
  • SQL
  • user management
  • plugin install
  • theme install
  • arbitrary wp_option

Safety Design

  • 沒有通用執行能力:沒有 shell、沒有任意 SQL、沒有任意 option 寫入,因此不存在「透過一個工具做到所有事」的路徑。
  • 寫入前先建立 revision:修改既有的已發布內容會先保留 WordPress revision,錯誤可還原。
  • 新內容一律從 draft 開始:建立工具強制 draft 狀態,發布是一個獨立且明確的動作。
  • 不觸碰身分與執行環境:使用者、外掛、主題、憑證都在能力範圍之外。
  • 唯讀的環境資訊:Agent 可讀取維護所需的中介資訊(如主題已註冊的 menu location),但不暴露資料庫憑證或設定檔。

Why It Matters

把 Agent 接進既有系統的關鍵不在模型能力,而在介面設計。介面決定了 Agent 能造成的最大影響;能力切得夠細,Agent 就能在不需要人工逐步確認的情況下自主完成整段工作,同時把最壞情況限制在可還原的範圍內。

這也是我看待 AI 應用的一致立場:AI 進入系統的方式,本身就是一個系統設計問題。

Tech Stack

Claude Code · MCP · WordPress REST / PHP plugin · Gutenberg blocks · Self-hosted deployment