Every team building with AI hits the same wall: the agents and copilots are getting capable fast, but they cannot touch the content that actually runs your product. It sits in your CMS, behind an API they do not speak. The Strapi MCP server tears that wall down, and as of v5.49.0 it is Generally Available: a stable, secure way to expose your content types as agent-callable tools, scoped by a token you control. It is free, self-hosted, with no tier gating on the open source repo.
What the MCP server actually does
Picture an agent that needs to pull a draft, check its category, and publish it. Normally that means hand-writing an integration between your CMS and whatever tool the agent runs in. The Model Context Protocol kills that work: it is an open standard that lets any MCP-compatible client (Claude Code, Claude Desktop, Cursor, Windsurf, and others) talk to any MCP-compatible server without a custom integration for each one. Strapi is now one of those servers.
Connect a client and your content model is already waiting there, as tools Strapi reads your schema and generates a set of agent-callable tools for each content type: up to eight for a collection type (list, get, create, update, delete, publish, unpublish, discard_draft) and up to six for a single type. The list and get tools carry everything you need to work with real content, including filtering, sorting, pagination, relations, and i18n locales. An agent can list entries, follow a relation to its author, draft a new one, or publish it, all against the same schema your editors use in the admin panel.
What an agent can reach is never left to chance Every MCP session runs against an Admin token you create under Settings, and that token's permissions draw the line: which content types, which fields, which operations. Hand it a read-only token and the agent sees only the list and get tools; hand it a full-access token and the complete CRUD and publish surface opens up. It can never see or do more than the token allows.
Turning it on
Enabling the server is one line. In config/server.ts, add the mcp key alongside your existing config:
export default ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
app: { keys: env.array('APP_KEYS') },
mcp: { enabled: true },
});Restart Strapi and the MCP endpoint is live at http://[your-strapi-url]/mcp.
Then create an Admin token under Settings → Admin Tokens (note: Admin tokens, not the Content API tokens under Settings → API Tokens, MCP rejects those), grant it the least access the workflow needs, and copy the value.
Finally, point your MCP client at the endpoint with an Authorization: Bearer <admin token> header. Every client needs the same three things: the URL, the streamable-http transport, and that header. The exact config format differs per client, and the MCP server documentation covers Claude Code, Claude Desktop, Cursor, and Windsurf.
Start a session, ask your agent to work with your content, list recent entries, draft a new one, publish it, and the built-in tools answer.
When the built-in tools are not enough
The built-in tools cover reading and writing entries. They do not cover anything you wrote by hand: a custom controller, an aggregation, a computed view, a multi-step workflow. If you have your own logic in src/api/<thing>/controllers/, there is no built-in tool for it.
That is where custom tools come in. Strapi exposes strapi.ai.mcp.registerTool(...), so you can register your own agent-callable tool that runs whatever logic you need, gated by its own admin permission so a token has to be granted access before an agent can call it. Wrapping that in a plugin makes the work portable, versionable, and clean to grow once you have more than one tool.
The docs on extending the MCP server are the reference for registerTool() and its options. For the full walkthrough, registering a tool, building it bottom-up, and shipping it as a plugin, see How to extend Strapi's MCP server with custom tools via a plugin. If you are reaching past plain CRUD, start there.
Try it
Upgrade to v5.49.0, flip MCP on, and point your agent at your content. The docs cover every client, and the custom tools guide is there when CRUD is not enough.
Strapi has always been shaped by the people building on it, and the MCP server is no exception. Whatever you wire up or extend, we want to see it. Share it in the Strapi GitHub discussions or the Strapi Discord.