storyblok-mcp-server
If you are the rightful owner of storyblok-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The Storyblok MCP Server enables AI assistants to manage Storyblok spaces, stories, components, and more using the Model Context Protocol.

Storyblok MCP Server 🚀
The Storyblok MCP (Model Context Protocol) server enables your AI assistants to directly access and manage your Storyblok spaces, stories, components, assets, workflows, and more.
What Does It Do?
With the Storyblok MCP Server, your AI assistant can:
- Create - Create new stories, components, assets, datasources, tags, releases, workflows, and more.
- Read - Read all your stories, components, assets, datasources, tags, releases, workflows, and more.
- Update - Update existing/new stories, components, assets, datasources, tags, releases, workflows, and more.
- Delete - Delete specific/all your stories, components, assets, datasources, tags, releases, workflows, and more.
🚀 Features
- Full Storyblok Management: CRUD for stories, components, assets, datasources, tags, releases, workflows, and more.(Covered everything)
- Modular Tooling: Each Storyblok resource is managed by its own tool module for easy extension and maintenance.
- Meta Tool: Discover all available tools and their descriptions at runtime.
- Async & Fast: Built on
httpx
andFastMCP
for high performance. - Environment-based Config: Securely manage tokens and space IDs via
.env
. - Bulk Operations: Efficiently update, delete, or publish multiple resources at once.
📦 Project Structure
├── config.py # Loads and validates environment config
├── server.py # Main entrypoint, registers all tools
├── tools/ # All modular tool implementations
│ ├── components.py # Component CRUD and usage
│ ├── stories.py # Story CRUD, bulk ops, validation
│ ├── ... # (assets, tags, releases, workflows, etc.)
│ └── meta.py # Meta tool for tool discovery
├── utils/
│ └── api.py # API helpers, error handling, URL builders
├── .env # Your Storyblok tokens and space ID
├── pyproject.toml # Python dependencies
└── README.md # This file
🚀 API Coverage
Resource | Description |
---|---|
Access Tokens | Manage access tokens for Storyblok API |
Activities | Manage or retrieve activity logs |
Approvals | Manage approval workflows |
Assets | Manage assets (upload, update, delete, list) |
Assets Folder | Manage asset folders |
Branch Deployments | Manage branch deployments |
Collaborators | Manage collaborators in a space |
Components | Manage Storyblok components (CRUD, schema, etc.) |
Components Folder | Manage folders for components |
Datasource Entries | Manage entries in data sources |
Data Sources | Manage data sources (CRUD, entries) |
Discussions | Manage discussions and comments |
Extensions | Manage Storyblok extensions |
Field Plugins | Manage custom field plugins |
Internal Tags | Manage internal tags for assets/stories |
Meta | Meta tool: discover all available tools |
Ping | Health check and server status |
Pipelines | Manage pipelines for content delivery |
Presets | Manage field presets for components |
Releases | Manage releases (create, update, publish) |
Scheduling Stories | Schedule stories for publishing |
Space | Manage Storyblok space settings and info |
Space Roles | Manage roles and permissions in a space |
Stories | Manage stories (CRUD, bulk ops, validation) |
Tags | Manage tags (CRUD, bulk association) |
Tasks | Manage tasks (CRUD, webhooks, automation) |
Webhooks | Manage webhooks (CRUD, trigger) |
Workflows | Manage workflows and workflow stages |
Workflow Stage | Manage individual workflow stages |
Workflow Stage Changes | Track and manage workflow stage changes |
🪄 Available Tools
Access Tokens
Manage access tokens for Storyblok API
retrieve_multiple_access_tokens
: List all access tokenscreate_access_token
: Create a new access tokenupdate_access_token
: Update an existing access tokendelete_access_token
: Delete an access token
Activities
Manage or retrieve activity logs
retrieve_multiple_activities
: List activity logs
Approvals
Manage approval workflows
retrieve_multiple_approvals
: List approvalscreate_approval
: Create a new approvalupdate_approval
: Update an approvaldelete_approval
: Delete an approval
Assets
Manage assets (upload, update, delete, list)
fetch_assets
: List assets with filteringget_asset
: Get a specific asset by IDdelete_asset
: Delete an assetupdate_asset
: Update an assetdelete_multiple_assets
: Delete multiple assetsbulk_move_assets
: Move multiple assetsbulk_restore_assets
: Restore multiple assetsinit_asset_upload
: Initialize asset uploadcomplete_asset_upload
: Complete asset upload
Assets Folder
Manage asset folders
retrieve_multiple_asset_folders
: List asset folderscreate_asset_folder
: Create a new asset folderupdate_asset_folder
: Update an asset folderdelete_asset_folder
: Delete an asset folder
Branch Deployments
Manage branch deployments
retrieve_multiple_branch_deployments
: List branch deploymentscreate_branch_deployment
: Create a new branch deploymentupdate_branch_deployment
: Update a branch deploymentdelete_branch_deployment
: Delete a branch deployment
Collaborators
Manage collaborators in a space
retrieve_multiple_collaborators
: List collaboratorsadd_collaborator
: Add a collaboratorupdate_collaborator
: Update a collaboratorremove_collaborator
: Remove a collaborator
Components
Manage Storyblok components (CRUD, schema, etc.)
fetch_components
: List components with filteringget_component
: Get a specific component by IDcreate_component
: Create a new componentupdate_component
: Update an existing componentdelete_component
: Delete a componentget_component_usage
: Find stories using a componentretrieve_component_versions
: List versions of a componentretrieve_single_component_version
: Get a specific component versionrestore_component_version
: Restore a component to a previous version
Components Folder
Manage folders for components
retrieve_multiple_component_folders
: List component folderscreate_component_folder
: Create a new component folderupdate_component_folder
: Update a component folderdelete_component_folder
: Delete a component folder
Datasource Entries
Manage entries in data sources
retrieve_multiple_datasource_entries
: List datasource entriescreate_datasource_entry
: Create a new datasource entryupdate_datasource_entry
: Update a datasource entrydelete_datasource_entry
: Delete a datasource entry
Data Sources
Manage data sources (CRUD, entries)
retrieve_multiple_data_sources
: List data sourcescreate_data_source
: Create a new data sourceupdate_data_source
: Update a data sourcedelete_data_source
: Delete a data source
Discussions
Manage discussions and comments
retrieve_multiple_discussions
: List discussionsretrieve_specific_discussion
: Get a specific discussionretrieve_idea_discussions_comments
: List idea discussion commentscreate_discussion
: Create a new discussionretrieve_my_discussions
: List my discussions
Extensions
Manage Storyblok extensions
retrieve_all_extensions
: List all extensionsretrieve_extension
: Get a specific extensioncreate_extension
: Create a new extensionupdate_extension
: Update an extensiondelete_extension
: Delete an extensionretrieve_extension_settings
: Get extension settingsretrieve_all_extension_settings
: List all extension settings
Field Plugins
Manage custom field plugins
retrieve_field_plugins
: List field pluginsretrieve_field_plugin
: Get a specific field plugincreate_field_plugin
: Create a new field pluginupdate_field_plugin
: Update a field plugindelete_field_plugin
: Delete a field plugin
Internal Tags
Manage internal tags for assets/stories
retrieve_multiple_internal_tags
: List internal tagscreate_internal_tag
: Create a new internal tagupdate_internal_tag
: Update an internal tagdelete_internal_tag
: Delete an internal tag
Meta
Meta tool: discover all available tools
list_tools
: List all available tools
Ping
Health check and server status
ping
: Check server health
Pipelines
Manage pipelines for content delivery
retrieve_multiple_branches
: List branchesretrieve_single_branch
: Get a specific branchcreate_branch
: Create a new branchupdate_branch
: Update a branchdelete_branch
: Delete a branch
Presets
Manage field presets for components
retrieve_multiple_presets
: List field presetsretrieve_single_preset
: Get a specific presetcreate_preset
: Create a new presetupdate_preset
: Update a presetdelete_preset
: Delete a preset
Releases
Manage releases (create, update, publish)
retrieve_multiple_releases
: List releasesretrieve_single_release
: Get a specific releasecreate_release
: Create a new releaseupdate_release
: Update a releasedelete_release
: Delete a release
Scheduling Stories
Schedule stories for publishing
retrieve_multiple_story_schedules
: List story schedulesretrieve_one_story_schedule
: Get a specific story schedulecreate_story_schedule
: Create a new story scheduleupdate_story_schedule
: Update a story scheduledelete_story_schedule
: Delete a story schedule
Space
Manage Storyblok space settings and info
fetch_spaces
: List spacesget_space
: Get a specific spacecreate_space
: Create a new spaceupdate_space
: Update a spaceduplicate_space
: Duplicate a spacebackup_space
: Backup a spacedelete_space
: Delete a space
Space Roles
Manage roles and permissions in a space
fetch_space_roles
: List space rolesget_space_role
: Get a specific space rolecreate_space_role
: Create a new space roleupdate_space_role
: Update a space roledelete_space_role
: Delete a space role
Stories
Manage stories (CRUD, bulk ops, validation)
fetch_stories
: List stories with filteringget_story
: Get a specific story by IDcreate_story
: Create a new storyupdate_story
: Update an existing storydelete_story
: Delete a storypublish_story
: Publish a storyunpublish_story
: Unpublish a storyget_story_versions
: List versions of a storyrestore_story
: Restore a story to a previous versionvalidate_story_content
: Validate story contentdebug_story_access
: Debug access for a storybulk_publish_stories
: Publish multiple storiesbulk_delete_stories
: Delete multiple storiesbulk_update_stories
: Update multiple storiesbulk_create_stories
: Create multiple storiesget_unpublished_dependencies
: List unpublished dependenciesai_translate_story
: AI-powered translation for a storycompare_story_versions
: Compare two versions of a story
Tags
Manage tags (CRUD, bulk association)
retrieve_multiple_tags
: List tagscreate_tag
: Create a new tagupdate_tag
: Update a tagdelete_tag
: Delete a tagtag_bulk_association
: Add tags to multiple stories
Tasks
Manage tasks (CRUD, webhooks, automation)
retrieve_multiple_tasks
: List tasksretrieve_single_task
: Get a specific taskcreate_task
: Create a new taskupdate_task
: Update a taskdelete_task
: Delete a task
Webhooks
Manage webhooks (CRUD, trigger)
retrieve_multiple_webhooks
: List webhooksretrieve_single_webhook
: Get a specific webhookadd_webhook
: Add a new webhookupdate_webhook
: Update a webhookdelete_webhook
: Delete a webhook
Workflows
Manage workflows and workflow stages
retrieve_multiple_workflows
: List workflowsretrieve_single_workflow
: Get a specific workflowcreate_workflow
: Create a new workflowupdate_workflow
: Update a workflowduplicate_workflow
: Duplicate a workflowdelete_workflow
: Delete a workflow
Workflow Stage
Manage individual workflow stages
retrieve_multiple_workflow_stages
: List workflow stagesretrieve_single_workflow_stage
: Get a specific workflow stagecreate_workflow_stage
: Create a new workflow stageupdate_workflow_stage
: Update a workflow stagedelete_workflow_stage
: Delete a workflow stage
Workflow Stage Changes
Track and manage workflow stage changes
retrieve_multiple_workflow_stage_changes
: List workflow stage changescreate_workflow_stage_change
: Create a workflow stage change
⚡️ Quickstart
-
Clone the repo
git clone <your-repo-url> cd storyblok-mcp-server
-
Install dependencies
pip install -r requirements.txt
-
Configure your environment
- Copy
.env.example
to.env
and fill in your Storyblok credentials:STORYBLOK_SPACE_ID=your_space_id STORYBLOK_MANAGEMENT_TOKEN=your_management_token STORYBLOK_DEFAULT_PUBLIC_TOKEN=your_public_token
- Copy
-
MCP Client Configuration
- To use this server with Claude or any MCP client, copy the following into your
claude_desktop_config.json
:
- To use this server with Claude or any MCP client, copy the following into your
{
"mcpServers": {
"storyblok": {
"command": "uv",
"args": [
"run",
"--with",
"mcp",
"mcp",
"run",
"C:\\path\\to\\storyblok-mcp-server\\server.py"
],
"env": {
"STORYBLOK_SPACE_ID": "your_space_id",
"STORYBLOK_MANAGEMENT_TOKEN": "your_management_token",
"STORYBLOK_DEFAULT_PUBLIC_TOKEN": "your_public_token"
}
}
}
}
- Paste this config into your Claude or MCP client to connect instantly.
[!NOTE] Make sure you have installed
uv
on your system
Restart your Claude Desktop and chek the tools. It will show total number tools available if you connected successfully.
- Run and Test Locally
- You can also run and test the server locally using MCP Inspector:
mcp run server.py
Example Questions
[!TIP] Here are some natural language queries you can try with your MCP Client.
- "Show me all stories from storyblok"
- "Give me details about Home story"
- "Create a new story with any content"
- "Publish Home story"
🧑💻 Contributing
We welcome contributions! To get started:
- Fork the repo and create your branch from
master
. - Add or improve a tool in the
tools/
directory. - Write clear docstrings and keep code modular.
- Use MCP Inspector for debugging
- Open a pull request with a clear description of your changes.
Coding Guidelines
- Use type hints and docstrings for all functions and classes.
- Keep each tool focused on a single Storyblok resource.
- Handle API errors gracefully and return informative messages.
- Keep the
.env
file out of version control.
🤝 Credits
Built with Storyblok and FastMCP.
📄 License
MIT License. See for details.
💬 Questions & Support
- For issues, open a GitHub issue.
- For feature requests, open a discussion or PR.
- For Storyblok API docs, see Storyblok API Reference.
Built with 💙 by Kiran