← All projects

MCP · Developer Tooling

MCP Server

Connect AI agents to Strapi v5 through OAuth, with each call governed by the signed-in admin’s permissions.

Open Source 2026 Creator & Maintainer
Strapi admin · MCP Server overview
The MCP Server plugin Overview page inside the Strapi admin, with a sidebar of Overview, Clients, Tools, Audit Log and Settings, a status card, a session count, and an empty recent tool calls table.
The plugin ran as its own section of the admin. State, resource URL, OAuth mode and whether dynamic client registration is on, then live sessions and an audit trail of every tool call.

Overview

What it is

The plugin turns a Strapi instance into an MCP server, so agents like Claude Code and Cursor can work with CMS content directly. Each person signs in with OAuth rather than sharing an admin token.

It reads the content types and fields of the running instance at connection time. Its content and media tools cover reading, writing, publishing, deleting, and uploads, subject to the signed-in admin’s permissions and the client’s granted scopes.

Motivation

Why I built it

I was copying content between a Strapi admin and a coding agent by hand, which is slow and exactly the kind of thing that should not be manual.

MCP had just landed and I wanted to build something real against it while the spec was still fresh. Learning a protocol properly means implementing it, not reading about it.

Decisions

How it works

01

PKCE instead of a long-lived token

An agent is a public client with nowhere safe to keep a secret. PKCE protects the code exchange, tokens expire, and a refresh token carries long sessions. Handing an agent a permanent API token would have been easier and considerably worse.

02

Inherit Strapi permissions, do not rebuild them

Every call ran as the authenticated user, so an agent could do exactly what that role could do. A parallel permission system would have needed to stay in sync with the real one forever, and would have been wrong the first time they diverged.

03

Separate scopes for sensitive actions

Reading and writing content, publishing, deleting, and managing media have separate scopes. Clients need an explicit grant for sensitive actions, and Strapi’s role permissions still apply on every call.

Friction

What was hard

Errors that mean nothing to a model

A bare 403 gives an agent nothing to act on, so errors were rewritten into plain explanations like "your role cannot update this content type". Getting an agent to self-correct rather than retry the same call was most of that work.

Schemas competing for the context window

A large Strapi instance has a lot of content types, and every tool schema shares space with everything else the agent is holding. Keeping the surface lean enough to be usable on a big site was a constant trim.

The state of it

Where it stands

The limitations, in plain terms. Every project here is something I built and use, not something I am selling.

Stack

TypeScript MCP SDK Strapi v5 OAuth 2.1 + PKCE Node.js

Strapi has a built-in MCP server, but its admin-token authentication does not cover my OAuth use cases. That is why I continue to maintain this plugin.

This is an independently maintained alternative. Compatibility with Strapi changes remains my responsibility.

The plugin is inactive until its resource URL is configured, and its clients need explicit grants for publish and delete actions.

Next project

Melofy

→