Storyblok MCP Server
About
Manage your Storyblok CMS using natural language through AI tools.
Details
- Author
- arjuncodess
- Categories
- Developer Tools, Other, Automation
- Tags
- #cms, #content-creation
Jump to
Setup
Install Storyblok MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/arjuncodess/storyblok-mcp
Follow the installation instructions in the repository README, then restart your MCP client.
Connect AI tools to Storyblok instantly - use natural language to manage your CMS like magic.
- Demo
- Why This Project?
- What is Storyblok?
- What's an MCP Server?
- Challenges I Faced
- How to Set Up (For Contributors)
- How to Use (For Users)
- Tools
- How to Contribute
- Useful Links
- Thanks
- License
Built for theStoryblok Headless CMS Challengeon DEV.to.
The goal: push AI and Storyblok's power together, make something fresh and useful.
Storyblok is a powerful headless CMS. API-first. Easy for devs and content creators to work together.
It's modular, super flexible, and fits with any frontend or workflow you want.
MCP = a protocol that connects AI, tools, and data.
The MCP server acts as a middleman, showing AI what it can do and what data it has.
This enables AI clients, such as Cursor or Claude Desktop, to interact with Storyblok through natural language and manage content smoothly.
-
Built for myself (lol):Never made or installed an MCP before. Took way longer than I thought.
API stress:Kept checking Storyblok's API docs again and again. Scared I'd miss something.
AI stuff pressure:Trying to get AI features right without breaking things was a headache.
Security:Had to make sure no sensitive info leaks while exposing Storyblok management.
Developer experience:Made the server easy to run, extend, and plug into AI tools. No shortcuts.
git clone https://github.com/ArjunCodess/storyblok-mcp.git cd storyblok-mcp
git clone https://github.com/ArjunCodess/storyblok-mcp.git cd storyblok-mcp
https://github.com/user-attachments/assets/98b77544-81c4-49b3-8dc2-14849e6ba7e5
- Open Cursor in the same directory.
- Right click onbuild/index.jsfile and clickCopy Path.
- Now, go toSettings→MCP Tools.
- Click onNew MCP Server
- Inside the openedmcp.jsonfile. Paste this and replace PATH_YOU_COPIED with the path copied in the second step:
{ "mcpServers": { "storyblok": { "command": "node PATH_YOU_COPIED", "env": { "STORYBLOK_SPACE_ID": "your_space_id", "STORYBLOK_MANAGEMENT_TOKEN": "your_management_token", "STORYBLOK_DEFAULT_PUBLIC_TOKEN": "your_public_token", "GOOGLE_GENERATIVE_AI_API_KEY": "your_gemini_ai_api_key" } } } }
-
fetch_stories
Retrieve a list of stories (pages, folders, or content entries) from Storyblok. Supports filtering, pagination, and search.
get_story
Fetch a single story by its ID.
create_story
Create a new story (page, folder, or content entry) in Storyblok.
update_story
Update an existing story's content, name, slug, or tags.
publish_story
Publish a story, making it live.
unpublish_story
Unpublish a story, removing it from the live site.
get_story_versions
Retrieve all previous versions of a story for version history and rollback.
restore_story
Restore a story to a previous version.
import_story
Import a story, optionally specifying language code and whether to import language settings.
-
fetch_tags
List all tags used in the space.
create_tag_and_add_to_story
Create a tag and immediately assign it to a story.
-
fetch_webhooks
List all webhooks registered in the space.
get_webhook
Fetch a single webhook by its ID.
create_webhook
Create a new webhook that will trigger on specified Storyblok events.
update_webhook
Update an existing webhook's endpoint, events, or other properties.
delete_webhook
Delete a webhook by its ID.
-
fetch_releases
List all releases (content batches for scheduled publishing).
update_release
Update an existing release's properties including name, release time and notification settings.
add_story_to_release
Add a story to a release.
publish_release
Publish all stories in a release.
-
fetch_presets
List all component presets in the space. Supports pagination.
get_preset
Fetch a single preset by its ID.
create_preset
Create a new preset with default values for a component.
update_preset
Update an existing preset's content, name, or appearance settings.
delete_preset
Delete a preset by its ID.
-
fetch_story_schedulings
Retrieve a list of story scheduling objects (scheduled publishings) for stories. Supports filtering, pagination, and search.
get_story_scheduling
Fetch a single story scheduling object by its ID.
create_story_scheduling
Schedule a story to be published at a specific date and time.
update_story_scheduling
Update an existing story scheduling (e.g., change publish time or language).
delete_story_scheduling
Delete a story scheduling by its ID.
-
fetch_access_tokens
Retrieve all access tokens (API keys) for the current space.
get_access_token
Fetch a single access token by its ID.
create_access_token
Create a new access token (API key) for the space. Supports public/private, name, min_cache, story_ids, and branch_id.
update_access_token
Update an existing access token's properties (type, name, min_cache, story_ids, branch_id).
delete_access_token
Delete an access token by its ID.
-
fetch_assets
List all assets (images, files, etc.) in the space.
get_asset
Fetch a single asset by its ID.
init_asset_upload
Start uploading a new asset.
complete_asset_upload
Complete the asset upload process.
-
fetch_asset_folders
List all asset folders.
create_asset_folder
Create a new asset folder.
update_asset_folder
Rename an asset folder.
delete_asset_folder
Delete an asset folder.
-
fetch_components
List all components (content types) in the space.
get_component
Fetch a single component by its ID.
create_component
Create a new component.
update_component
Update a component's schema or settings.
-
search_stories
Search for stories using advanced filters (by slug, tag, etc.).
get_story_by_slug
Fetch a story by its slug.
-
fetch_datasources
List all datasources (for dynamic select fields, etc.).
get_datasource
Get a single datasource by its ID.
create_datasource
Create a new datasource with optional dimensions.
update_datasource
Update an existing datasource (name, slug, dimensions).
delete_datasource
Delete a datasource by its ID.
-
fetch_datasource_entries
List all entries (key-value pairs) for a datasource.
get_datasource_entry
Fetch a single datasource entry.
create_datasource_entry
Create a new entry in a datasource with optional dimension values.
update_datasource_entry
Update an existing datasource entry.
delete_datasource_entry
Delete a datasource entry by its ID.
- ping
Check if the server and Storyblok API are reachable.
-
fetch_component_folders
List all component folders in the space.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


