Storyblok MCP Server
Official Storyblok MCP server that exposes the Management API to AI agents with schema discovery, read/write/delete tools, and role-scoped access.
The Storyblok MCP Server is the official, Storyblok-hosted Model Context Protocol server for the Storyblok headless CMS. It exposes Storyblok's Management API to AI agents as a small set of agent-safe tools, so assistants like Claude, Cursor, and Windsurf can search, read, create, update, publish, and delete content in a Storyblok space with full schema awareness. The server is stateless and fully hosted at https://mcp.labs.storyblok.com/mcp, so there is no local installation: clients connect over HTTP and authenticate with a Storyblok Personal Access Token via a Bearer header.
The server uses a discovery-first design built around three execution tiers (read, mutating, destructive) and two schema tools (search and describe). Agents first locate the right Management API operation by keyword, then fetch its schema, then call the appropriate execute tool. Destructive operations require explicit confirmation, which gives teams predictable governance over what an agent can change. Asset uploads use a two-step pattern: create an asset record with a signed S3 URL, then finalize the upload after the file is pushed to S3.
Role-based filtering is available via a ?role= query parameter on the endpoint, with scopes covering Content Reviewer, Content Editor, Developer, or all operations. Note that the original locally-run repo at github.com/storyblok/mcp-server has been archived in favor of this hosted version, and Storyblok labels the hosted MCP as a research/Innovation project that may change without notice.
Tools
| Tool | Description |
|---|---|
search |
Find Storyblok Management API operations by keyword. |
describe |
Return the JSON schema (parameters and request body) for a specific operation so the agent knows how to call it. |
execute_readonly |
Run read-only Management API operations such as listing or fetching stories, components, assets, and other resources. |
execute_mutating |
Run write operations such as creating, updating, or publishing stories, components, and other content. |
execute_destructive |
Run delete operations against Storyblok resources. Requires explicit confirmation from the user. |
upload_asset |
Create an asset record in Storyblok and return a signed S3 upload URL. |
upload_asset_finish |
Finalize an asset upload after the file has been pushed to the signed S3 URL. |
Prerequisites
- A Storyblok account and at least one space you can manage
- A Storyblok Personal Access Token (Management Token), created under My Account → Personal access tokens at
https://app.storyblok.com/#/me/account?tab=token
Server endpoint
https://mcp.labs.storyblok.com/mcp
The server is stateless, hosted by Storyblok, and authenticates via the Authorization: Bearer <token> header. Role scope can optionally be set with a query parameter, for example ?role=content-editor.
Claude Code
claude mcp add --transport http Storyblok https://mcp.labs.storyblok.com/mcp \
--header "Authorization: Bearer your_token_here"
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"Storyblok": {
"type": "http",
"url": "https://mcp.labs.storyblok.com/mcp",
"headers": {
"Authorization": "Bearer your_token_here"
}
}
}
}
Other clients
Cursor, Windsurf, VS Code, Gemini CLI, and LM Studio setup snippets are documented at https://mcp.labs.storyblok.com/install. Each follows the same pattern: HTTP transport, the /mcp URL above, and the Bearer Authorization header.
Note: The previous local server repo at
github.com/storyblok/mcp-serveris archived. Use the hosted endpoint above instead.
- Let an agent draft a new story in Storyblok from a brief, attach uploaded images via the asset upload flow, and publish it once a human approves.
- Bulk-update SEO fields or component values across many stories by having the agent search for the right Management API operation and execute it with validated parameters.
- Give content editors a chat interface that can list, filter, and inspect stories in a large Storyblok space without leaving their IDE or assistant.
- Run governed cleanup: ask the agent to find unused assets or draft stories and call
execute_destructiveonly after explicit confirmation. - Scope agent access by role (
?role=content-reviewer) so a review assistant can read and comment but not mutate content.
- "Search Storyblok for any operation related to publishing stories, then publish the story with slug
home." - "List all draft stories in my space updated in the last 7 days and summarize their titles."
- "Upload
./hero.pngas a Storyblok asset and attach it to thelanding-pagestory's hero component." - "Find all stories using the
outdated-bannercomponent and update them to usepromo-bannerinstead." - "Describe the schema for creating a component, then create a
pricing-cardcomponent with title, price, and CTA fields."
- Official and hosted by Storyblok, so no local Node or Docker setup is required.
- Discovery-first design (
search+describe) keeps the tool surface small while covering the full Management API. - Built-in governance: separate read, mutating, and destructive tools with explicit confirmation for deletes, plus optional role-scoped endpoints.
- Schema-aware: agents fetch JSON schemas before executing, which reduces hallucinated parameters.
- Labeled as a research/Innovation phase project that may change without notice and is not guaranteed stable for production use.
- Requires a Personal Access Token, which carries broad permissions; there is no fine-grained per-tool OAuth scoping beyond the role query parameter.
- The previous local-install option is archived, so self-hosting the official server is no longer supported.
- ArjunCodess/storyblok-mcp: community MCP server with a larger pre-defined tool catalog (stories, assets, releases, tags, components).
- Kiran1689/storyblok-mcp-server: community, modular Storyblok MCP server for self-hosting.
- Contentful MCP server: equivalent option if you are evaluating headless CMS platforms beyond Storyblok.