Storyblok MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_API_KEY | No | Optional private access key to secure the server when running in SSE mode. | |
| STORYBLOK_REGION | No | The Storyblok region (eu, us, ca, ap, cn). Default is eu. | eu |
| STORYBLOK_API_BASE | No | Override API base URL (if proxying the Storyblok Management API) | |
| STORYBLOK_SPACE_ID | Yes | Your Storyblok space ID | |
| STORYBLOK_MANAGEMENT_TOKEN | Yes | Management API token |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| fetch_storiesC | List stories with optional filters: content_type, search, per_page, page, with_slug, is_startpage. |
| get_storyC | Get a single story by UUID. |
| create_storyC | Create a new story. Pass story as JSON object with name, slug, content, parent_id, etc. Optional publish=1 to publish. |
| update_storyC | Update an existing story. Pass story object with fields to update. |
| delete_storyC | Delete a story permanently. |
| publish_storyC | Publish a story. Optional lang, release_id. |
| unpublish_storyC | Unpublish a story. Optional lang. |
| get_story_versionsC | List versions of a story. |
| duplicate_storyC | Duplicate a story. |
| restore_story_versionD | Restore a story version. |
| translate_storyC | Translate a story using AI. Optional lang_code. |
| fetch_tagsB | List all tags in the space. |
| create_tagB | Create a tag. Optionally link to a story via story_id. |
| create_tag_and_add_to_storyA | Create a tag and add it to a story. If the tag exists, it is linked. |
| add_existing_tag_to_storyC | Add an existing tag to a story by tag name. |
| update_tagC | Update a tag by ID. |
| delete_tagC | Delete a tag by ID. |
| fetch_componentsC | List components. Optional per_page, page. |
| get_componentC | Get a component by ID. |
| create_componentC | Create a component. Pass component object with name, display_name, schema, etc. |
| update_componentC | Update a component by ID. |
| delete_componentC | Delete a component by ID. |
| fetch_assetsC | List assets. Optional folder_id, per_page, page, filter_query. |
| get_assetC | Get an asset by ID. |
| update_assetC | Update asset metadata: filename, asset_folder_id, alt, title, copyright, etc. |
| delete_assetC | Delete an asset by ID. |
| bulk_move_assetsC | Move multiple assets to a folder. |
| bulk_delete_assetsC | Delete multiple assets. |
| bulk_restore_assetsC | Restore multiple deleted assets. |
| fetch_releasesC | List releases. Optional per_page, page. |
| get_releaseC | Get a release by ID. |
| create_releaseC | Create a release. Pass name and optional story_ids, scheduled_at. |
| update_releaseD | Update a release. |
| delete_releaseC | Delete a release by ID. |
| fetch_workflowsB | List workflows in the space. |
| get_workflowC | Get a workflow by ID. |
| create_workflowC | Create a workflow. Pass name and optional stages. |
| update_workflowD | Update a workflow. |
| delete_workflowC | Delete a workflow by ID. |
| fetch_workflow_stagesC | List workflow stages for a workflow. |
| fetch_webhooksB | List webhooks in the space. |
| get_webhookC | Get a webhook by ID. |
| create_webhookC | Create a webhook. Pass name, url, and optional events, description, secret. |
| update_webhookD | Update a webhook. |
| delete_webhookC | Delete a webhook by ID. |
| fetch_datasourcesC | List datasources. Optional per_page, page. |
| get_datasourceC | Get a datasource by ID. |
| create_datasourceC | Create a datasource. Pass name, slug, and optional dimensions. |
| update_datasourceD | Update a datasource. |
| delete_datasourceC | Delete a datasource by ID. |
| fetch_datasource_entriesC | List entries for a datasource. Optional dimension, per_page, page. |
| create_datasource_entryC | Create a datasource entry. Pass name, value, and optional dimension. |
| update_datasource_entryD | Update a datasource entry. |
| delete_datasource_entryC | Delete a datasource entry. |
| get_spaceB | Get the current space details (the one from STORYBLOK_SPACE_ID). |
| update_spaceC | Update space settings. Pass an object with name, domain, plan, etc. |
| list_toolsA | List all available Storyblok MCP tools by category. No API call. |
| pingB | Health check. Verifies env and optionally the Storyblok API. Set check_api=1 to call the API. |
| fetch_asset_foldersC | List asset folders. Optional per_page, page. |
| get_asset_folderB | Get an asset folder by ID. |
| create_asset_folderC | Create an asset folder. Pass name and optional parent_id. |
| update_asset_folderC | Update an asset folder. |
| delete_asset_folderC | Delete an asset folder by ID. |
| fetch_component_foldersC | List component folders. Optional per_page, page. |
| create_component_folderC | Create a component folder. Pass name. |
| update_component_folderD | Update a component folder. |
| delete_component_folderC | Delete a component folder by ID. |
| fetch_usersB | List users in the space. |
| fetch_rolesB | List roles in the space. |
| fetch_activity_logC | List activity log. Optional per_page, page, user_id. |
| fetch_tasksC | List tasks. Optional per_page, page, story_id. |
| create_taskC | Create a task. Pass name, description, assigned_to_user_id, story_id, etc. |
| update_taskC | Update a task by ID. |
| delete_taskC | Delete a task by ID. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| stories-list | List of all stories |
TDQS
Scored across 74 tools
Most tools are clearly distinct by resource and action, but there is some overlap: 'create_tag_and_add_to_story' duplicates functionality of 'create_tag' and 'add_existing_tag_to_story', and 'list_tools' is a meta-tool that doesn't fit the domain. Overall, the majority are well-differentiated, with only minor confusion points.
Tool names follow a highly consistent verb_noun pattern throughout, with clear conventions: fetch_ for listing, get_ for retrieving single items, create_/update_/delete_ for CRUD operations, and specific action verbs like publish_ or translate_. No mixing of styles or deviations observed.
With 74 tools, the count is excessive for a content management server, making it overwhelming and likely to cause selection paralysis. A more focused set of 15-30 tools would better serve the domain without sacrificing functionality, as many operations could be consolidated or generalized.
The tool surface provides comprehensive CRUD/lifecycle coverage across all key resources (stories, assets, components, datasources, releases, tags, tasks, webhooks, workflows), including bulk operations, versioning, translations, and administrative actions. No obvious gaps are present for the Storyblok CMS domain.