MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

Content Management MCP — articles, social media, YouTube, media library, SEO, publishing workflows for AI agents in ADK-Rust Enterprise

Created 5/25/2026
Updated about 3 hours ago
Repository documentation and setup instructions

Content Management MCP Server

Crates.io License ADK-Rust Enterprise Registry Ready

Unified content platform for AI agents — manage articles, social media, YouTube videos, media library, SEO, and publishing workflows from a single MCP server. 26 tools across content, social, and video.

Architecture

MCP CMS Architecture

Example Backend (included)

A full reference implementation is included in example-backend/Rust (Axum) + SQLite + React dashboard.

CMS Dashboard

Quick Start

# Terminal 1: Start the backend
cd example-backend
cargo run
# → Dashboard: http://localhost:7799
# → API: http://localhost:7799/api/v1

# Terminal 2: Connect mcp-cms
CMS_API_URL="http://localhost:7799/api/v1" mcp-cms

What's Included

  • Axum web server — all 26 API endpoints implemented
  • SQLite database — auto-created with schema + seeded demo data
  • React dashboard — dark theme, content/social/video/media tabs, click-to-open detail views, video player, image previews
  • Zero config — just cargo run, no env vars needed

Building Your Own Backend

The example backend implements the Custom API Spec below. Fork it as a starting point, or build your own in any language (Express, FastAPI, Go, Rails) — as long as it implements the same endpoints, mcp-cms will work with it.

Documentation

| Document | Description | |----------|-------------| | API Reference | All 26 tools with parameters, examples, and return values | | Backends Guide | Setup for WordPress, Contentful, YouTube, Twitter, LinkedIn, Meta, Custom API | | Custom API Spec | REST endpoint spec for building your own backend | | Competitive Comparison | How mcp-cms compares to Ghost, Sanity, WordPress, YouTube MCPs | | Example Backend | Reference implementation (Rust + SQLite + React) |

Tools (26)

Content Management (6)

| Tool | Purpose | Risk | |------|---------|------| | list_content | List articles/pages by status, type, channel | read_only | | get_content | Full content with metadata + SEO | read_only | | create_content | Create article/page (draft) | internal_write | | update_content | Update body, title, tags | internal_write | | publish_content | Publish to website (goes live) | external_write | | unpublish_content | Take offline | external_write |

Social Media (5)

| Tool | Purpose | Risk | |------|---------|------| | list_social_accounts | Connected accounts (Twitter, LinkedIn, IG, FB) | read_only | | schedule_social_post | Schedule post to platforms | external_write | | get_social_metrics | Engagement: likes, shares, reach | read_only | | list_scheduled_posts | Upcoming scheduled posts | read_only | | delete_scheduled_post | Cancel a scheduled post | internal_write |

Video / YouTube (5)

| Tool | Purpose | Risk | |------|---------|------| | list_videos | List videos | read_only | | get_video | Video details, stats, transcript | read_only | | upload_video | Upload with title, description, tags | external_write | | update_video | Update metadata | internal_write | | get_video_analytics | Views, watch time, retention, CTR | read_only |

Media Library (3)

| Tool | Purpose | Risk | |------|---------|------| | list_media | List images, videos, files | read_only | | upload_media | Upload asset | internal_write | | get_media | Get asset URL + metadata | read_only |

Taxonomy & SEO (4)

| Tool | Purpose | Risk | |------|---------|------| | list_categories | List categories/tags | read_only | | create_category | Create category or tag | internal_write | | get_seo_metadata | SEO title, description, OG tags | read_only | | update_seo | Update SEO metadata | internal_write |

Publishing Workflow (3)

| Tool | Purpose | Risk | |------|---------|------| | get_content_calendar | All scheduled content across channels | read_only | | request_review | Submit for editorial review | internal_write | | get_publish_status | Workflow state (draft → review → published) | read_only |

Installation

cargo install mcp-cms

Configuration

Multiple backends can be active simultaneously:

Content Backend (required — pick one)

| Backend | Env Vars | |---------|----------| | WordPress | WORDPRESS_URL + WORDPRESS_USERNAME + WORDPRESS_APP_PASSWORD | | Contentful | CONTENTFUL_SPACE_ID + CONTENTFUL_MANAGEMENT_TOKEN | | Custom API | CMS_API_URL + CMS_API_KEY |

Social Backend (optional)

| Backend | Env Vars | |---------|----------| | Twitter/X | TWITTER_BEARER_TOKEN | | LinkedIn | LINKEDIN_ACCESS_TOKEN | | Meta (FB/IG) | META_ACCESS_TOKEN + META_PAGE_ID |

Video Backend (optional)

| Backend | Env Vars | |---------|----------| | YouTube | YOUTUBE_OAUTH_TOKEN |

If using Custom API (CMS_API_URL), it handles all endpoints (content + social + video).

Client Configuration

{
  "mcpServers": {
    "cms": {
      "command": "mcp-cms",
      "args": [],
      "env": {
        "CMS_API_URL": "http://localhost:8080/api/v1",
        "CMS_API_KEY": "your-key"
      }
    }
  }
}

Custom API Spec

If building your own backend, implement these endpoints:

# Content
GET    /content?status=&type=&channel=
GET    /content/:id
POST   /content
PATCH  /content/:id
POST   /content/:id/publish
POST   /content/:id/unpublish
POST   /content/:id/review
GET    /content/:id/seo
PATCH  /content/:id/seo
GET    /content/:id/status

# Social
GET    /social/accounts
POST   /social/posts
GET    /social/posts/scheduled
DELETE /social/posts/:id
GET    /social/metrics?post_id=

# Video
GET    /videos
GET    /videos/:id
POST   /videos
PATCH  /videos/:id
GET    /videos/:id/analytics

# Media
GET    /media?type=
POST   /media
GET    /media/:id

# Taxonomy
GET    /categories
POST   /categories

# Calendar
GET    /calendar?start=&end=

Usage Examples

Publish a blog post

"Write and publish a blog post about our new feature"
→ create_content(title="New Feature Launch", body="...", content_type="article")
→ update_seo(content_id="...", title="New Feature | Company", description="...")
→ request_review(content_id="...", note="Ready for review")
→ publish_content(id="...")

Cross-post to social

"Share the blog post on Twitter and LinkedIn"
→ schedule_social_post(platforms=["twitter","linkedin"], content="We just launched...", scheduled_at="now")

Upload a YouTube video

"Upload the product demo video"
→ upload_video(title="Product Demo 2026", description="...", tags=["demo","product"])
→ get_video_analytics(id="...") — track performance

License

Apache-2.0


Part of the ADK-Rust Enterprise MCP server ecosystem.

Built with ❤️ by Zavora AI

Quick Setup
Installation guide for this server

Installation Command (package not published)

git clone https://github.com/zavora-ai/mcp-cms
Manual Installation: Please check the README for detailed setup instructions and any additional dependencies required.

Cursor configuration (mcp.json)

{ "mcpServers": { "zavora-ai-mcp-cms": { "command": "git", "args": [ "clone", "https://github.com/zavora-ai/mcp-cms" ] } } }