Case Study · Open Source · AI Tooling

CMS MCP Hub giving AI 589 ways to run your content.

A monorepo of Model Context Protocol servers that lets Claude, Cursor, and any MCP-compatible AI client create posts, manage products, upload images, and handle SEO across 12 major CMS platforms. One unified interface for a fragmented ecosystem.

0

MCP tools exposed

0

CMS platforms supported

0

Universal REST gateway

0%

TypeScript strict mode

Year2026
RoleCreator & Maintainer
TypeMCP Monorepo
StatusActive Development

View on GitHub

01 The Problem

AI agents can't manage content across the CMS ecosystem.

The CMS market is deeply fragmented. WordPress powers 43% of the web, but Shopify owns e-commerce, Ghost owns indie publishing, Webflow owns design-led marketing sites, and Sanity/Contentful own enterprise structured content. Each platform has its own REST or GraphQL API, its own auth model, its own concept of what a "post" or "product" even is. Connecting an AI agent to all of them means writing a custom integration for each one and keeping it up to date as APIs change.

The Model Context Protocol is the right primitive for this problem. MCP defines a standard way for AI clients to discover and call tools, with structured input schemas and typed responses. Build one MCP server per CMS, expose the right tools, and any MCP-compatible AI client Claude Desktop, Cursor, Windsurf, your own agent can manage content anywhere without any bespoke integration code.

The WordPress Developer Blog post about this is still pending review.

02 The Solution

One monorepo. 589 tools. Every major CMS.

CMS MCP Hub is a Turborepo monorepo of independently publishable npm packages one per CMS platform. Each package is a self-contained MCP server that exposes a complete set of typed tools for that platform: create post, update product, upload media, manage SEO metadata, handle taxonomies, configure redirects. The tools are designed to be composable an AI agent can chain them to complete multi-step workflows like "draft a blog post, add the featured image, set the SEO title, and publish it" in a single conversation turn.

WordPress169 tools
Shopify147 tools
WooCommerce95 tools
Ghost24 tools
Webflow21 tools
Payload CMS21 tools
Wix21 tools
Framer20 tools
Contentful20 tools
Yoast SEO18 tools
Strapi17 tools
Sanity16 tools

03 Architecture

How the monorepo is wired.

Turborepo with per-platform packages

Each CMS lives in packages/mcp-[platform] a standalone npm package with its own package.json, build config, and test suite. Turborepo handles the build graph: changed packages are rebuilt in parallel, unchanged packages are restored from cache. A shared packages/core package provides the MCP server scaffolding, Zod schema utilities, and HTTP client abstractions that every platform package imports.

Zod-validated tool contracts

Every tool input is defined as a Zod schema. This serves double duty: the MCP SDK uses the schema to generate the JSON Schema that AI clients see when they discover available tools, and the runtime uses it to validate and parse incoming arguments before they reach any API call. Invalid inputs are rejected with structured error messages that the AI client can act on "field postId must be a positive integer" rather than opaque HTTP 400s from the upstream CMS API.

Universal REST gateway

Rather than using each CMS's official SDK (where one even exists), all platform packages share a thin REST gateway that handles auth token injection, retry-with-backoff, rate limit detection, and response normalisation. This keeps the dependency tree shallow and makes it straightforward to support new authentication flows OAuth, API key, JWT without touching tool logic. The gateway is the only place that makes HTTP calls; tool handlers are pure functions of validated input → normalised output.

tsup + Vitest for every package

Each package is compiled with tsup zero-config TypeScript bundler that produces both ESM and CJS outputs, handles declaration file generation, and runs in under a second for incremental builds. Tests are written with Vitest: fast, ESM-native, with a Jest-compatible API. The Turborepo pipeline runs test before build, so a failing test in any package blocks the build of everything that depends on it.


04 Tech Stack

Built with

TypeScript
Node.js
Turborepo
Zod
Vitest
tsup
MCP SDK
OpenAPI

05 Outcome

What shipped.

  • 589 MCP tools across 12 platforms the largest open-source MCP tool collection for CMS management at time of writing.
  • WordPress package alone exposes 169 tools covering posts, pages, media, users, plugins, themes, WooCommerce products, orders, taxonomies, and Yoast SEO essentially the full WordPress REST API surface.
  • Every tool is fully typed end-to-end: Zod input schema → TypeScript handler → typed response. AI clients get accurate tool descriptions and can rely on structured, predictable outputs.
  • Turborepo build cache means CI runs for changed packages only a single-package change builds and tests in under 30 seconds on GitHub Actions.
  • Published to npm under the @cms-mcp scope each platform package is independently installable so teams can adopt only the platforms they use.

Next case study

APILens

Zero-dependency API observability middleware for Express and Fastify. 8 databases auto-instrumented, 600k+ req/min, one line integration.

Read the full story →