mcp-content-ops

mcp-content-ops

An MCP server that enables agents to safely interact with CMS content, with deny-by-default write policies, type/field allowlists, and structured audit trails.

Category
Visit Server

README

mcp-content-ops

An MCP server that lets an agent work with CMS content. The tools are the boring part — search, read, create a draft, set a field, publish. What took the thinking is what happens before any of them run.

Most content MCP servers we have looked at hand the model an API client and a credential with whatever permissions the integration account happens to have, which in a CMS is usually everything. The demo works. Then someone asks the agent to "tidy up the product pages" and it publishes forty drafts, because nothing in the system ever said it could not.

The scoping

Four gates, in order, and none of them live in the tool schema:

  1. Argument validation against the published schema. Unknown properties are rejected rather than dropped — a model that invents an argument has misunderstood the tool, and dropping it quietly hides that.
  2. Deny by default. Writes are off unless config turns them on. There is no permissive default anywhere in Policy.
  3. Type and field allowlists. A type being readable does not make it writable, and a writable type does not make every field on it writable.
  4. Structured audit of every call, allowed or refused, with the reason.

The type a call is judged against comes from the stored item, never from the arguments. Letting the caller assert what kind of thing it is editing is letting the caller pick which policy applies.

A refused call comes back as a normal tool result with isError set, not a JSON-RPC error. The model should see why it was refused and adapt; a protocol error means the client is broken, which is a different conversation.

Running it

pip install -e ".[dev]"
python -m content_ops.server policy.example.json
pytest -q

The CMS behind it is an in-memory stub in cms.py — four methods, swap it for your content API.

What it does not do

No delete tool, on purpose. No resources or prompts, only tools. No auth: this is a stdio server and the trust boundary is the process that launched it. The schema validator covers the subset our own tool schemas use rather than all of JSON Schema.

Why not use an SDK

The MCP Python SDK is fine and for a larger server it is the right call. This one implements three methods over stdio, and the wire format is small enough that a dependency moving at the pace the SDKs currently move was the bigger risk.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured