Skip to main content
Glama

Storyblok MCP Server

README.md19 kB
<picture> <source media="(prefers-color-scheme: dark)" srcset="./assets/banner_dark.png"> <source media="(prefers-color-scheme: light)" srcset="./assets/banner_white.png"> <img align="center" alt="banner" src="./assets/banner_white.png"> </picture> <div align="center"> # Storyblok MCP Server 🚀 The Storyblok MCP ([Model Context Protocol](https://modelcontextprotocol.io/introduction)) server enables your AI assistants to directly access and manage your Storyblok spaces, stories, components, assets, workflows, and more. <a href="https://www.storyblok.com/docs/api/management/getting-started" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/documentation-storyblok-blue" alt="documentation" /></a> <a href="https://reactjs.org/"><img alt="Made With React" src="https://img.shields.io/badge/made%20with-python-yellow?style=flat" /></a> <a href="https://github.com/Kiran1689" target="_blank" rel="noopener noreferrer"><img src="https://img.shields.io/badge/built_with-love-red" alt="built with love badge" /></a> <img src="https://img.shields.io/badge/built_for-developers-dcd4fc" alt="built for developers badge" /></a> <img src="https://img.shields.io/badge/built_for-marketers-bce4fb" alt="built for marketers badge" /></a> </div> ## 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` and `FastMCP` 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 <details> <summary>Manage access tokens for Storyblok API</summary> - `retrieve_multiple_access_tokens`: List all access tokens - `create_access_token`: Create a new access token - `update_access_token`: Update an existing access token - `delete_access_token`: Delete an access token </details> ### Activities <details> <summary>Manage or retrieve activity logs</summary> - `retrieve_multiple_activities`: List activity logs </details> ### Approvals <details> <summary>Manage approval workflows</summary> - `retrieve_multiple_approvals`: List approvals - `create_approval`: Create a new approval - `update_approval`: Update an approval - `delete_approval`: Delete an approval </details> ### Assets <details> <summary>Manage assets (upload, update, delete, list)</summary> - `fetch_assets`: List assets with filtering - `get_asset`: Get a specific asset by ID - `delete_asset`: Delete an asset - `update_asset`: Update an asset - `delete_multiple_assets`: Delete multiple assets - `bulk_move_assets`: Move multiple assets - `bulk_restore_assets`: Restore multiple assets - `init_asset_upload`: Initialize asset upload - `complete_asset_upload`: Complete asset upload </details> ### Assets Folder <details> <summary>Manage asset folders</summary> - `retrieve_multiple_asset_folders`: List asset folders - `create_asset_folder`: Create a new asset folder - `update_asset_folder`: Update an asset folder - `delete_asset_folder`: Delete an asset folder </details> ### Branch Deployments <details> <summary>Manage branch deployments</summary> - `retrieve_multiple_branch_deployments`: List branch deployments - `create_branch_deployment`: Create a new branch deployment - `update_branch_deployment`: Update a branch deployment - `delete_branch_deployment`: Delete a branch deployment </details> ### Collaborators <details> <summary>Manage collaborators in a space</summary> - `retrieve_multiple_collaborators`: List collaborators - `add_collaborator`: Add a collaborator - `update_collaborator`: Update a collaborator - `remove_collaborator`: Remove a collaborator </details> ### Components <details> <summary>Manage Storyblok components (CRUD, schema, etc.)</summary> - `fetch_components`: List components with filtering - `get_component`: Get a specific component by ID - `create_component`: Create a new component - `update_component`: Update an existing component - `delete_component`: Delete a component - `get_component_usage`: Find stories using a component - `retrieve_component_versions`: List versions of a component - `retrieve_single_component_version`: Get a specific component version - `restore_component_version`: Restore a component to a previous version </details> ### Components Folder <details> <summary>Manage folders for components</summary> - `retrieve_multiple_component_folders`: List component folders - `create_component_folder`: Create a new component folder - `update_component_folder`: Update a component folder - `delete_component_folder`: Delete a component folder </details> ### Datasource Entries <details> <summary>Manage entries in data sources</summary> - `retrieve_multiple_datasource_entries`: List datasource entries - `create_datasource_entry`: Create a new datasource entry - `update_datasource_entry`: Update a datasource entry - `delete_datasource_entry`: Delete a datasource entry </details> ### Data Sources <details> <summary>Manage data sources (CRUD, entries)</summary> - `retrieve_multiple_data_sources`: List data sources - `create_data_source`: Create a new data source - `update_data_source`: Update a data source - `delete_data_source`: Delete a data source </details> ### Discussions <details> <summary>Manage discussions and comments</summary> - `retrieve_multiple_discussions`: List discussions - `retrieve_specific_discussion`: Get a specific discussion - `retrieve_idea_discussions_comments`: List idea discussion comments - `create_discussion`: Create a new discussion - `retrieve_my_discussions`: List my discussions </details> ### Extensions <details> <summary>Manage Storyblok extensions</summary> - `retrieve_all_extensions`: List all extensions - `retrieve_extension`: Get a specific extension - `create_extension`: Create a new extension - `update_extension`: Update an extension - `delete_extension`: Delete an extension - `retrieve_extension_settings`: Get extension settings - `retrieve_all_extension_settings`: List all extension settings </details> ### Field Plugins <details> <summary>Manage custom field plugins</summary> - `retrieve_field_plugins`: List field plugins - `retrieve_field_plugin`: Get a specific field plugin - `create_field_plugin`: Create a new field plugin - `update_field_plugin`: Update a field plugin - `delete_field_plugin`: Delete a field plugin </details> ### Internal Tags <details> <summary>Manage internal tags for assets/stories</summary> - `retrieve_multiple_internal_tags`: List internal tags - `create_internal_tag`: Create a new internal tag - `update_internal_tag`: Update an internal tag - `delete_internal_tag`: Delete an internal tag </details> ### Meta <details> <summary>Meta tool: discover all available tools</summary> - `list_tools`: List all available tools </details> ### Ping <details> <summary>Health check and server status</summary> - `ping`: Check server health </details> ### Pipelines <details> <summary>Manage pipelines for content delivery</summary> - `retrieve_multiple_branches`: List branches - `retrieve_single_branch`: Get a specific branch - `create_branch`: Create a new branch - `update_branch`: Update a branch - `delete_branch`: Delete a branch </details> ### Presets <details> <summary>Manage field presets for components</summary> - `retrieve_multiple_presets`: List field presets - `retrieve_single_preset`: Get a specific preset - `create_preset`: Create a new preset - `update_preset`: Update a preset - `delete_preset`: Delete a preset </details> ### Releases <details> <summary>Manage releases (create, update, publish)</summary> - `retrieve_multiple_releases`: List releases - `retrieve_single_release`: Get a specific release - `create_release`: Create a new release - `update_release`: Update a release - `delete_release`: Delete a release </details> ### Scheduling Stories <details> <summary>Schedule stories for publishing</summary> - `retrieve_multiple_story_schedules`: List story schedules - `retrieve_one_story_schedule`: Get a specific story schedule - `create_story_schedule`: Create a new story schedule - `update_story_schedule`: Update a story schedule - `delete_story_schedule`: Delete a story schedule </details> ### Space <details> <summary>Manage Storyblok space settings and info</summary> - `fetch_spaces`: List spaces - `get_space`: Get a specific space - `create_space`: Create a new space - `update_space`: Update a space - `duplicate_space`: Duplicate a space - `backup_space`: Backup a space - `delete_space`: Delete a space </details> ### Space Roles <details> <summary>Manage roles and permissions in a space</summary> - `fetch_space_roles`: List space roles - `get_space_role`: Get a specific space role - `create_space_role`: Create a new space role - `update_space_role`: Update a space role - `delete_space_role`: Delete a space role </details> ### Stories <details> <summary>Manage stories (CRUD, bulk ops, validation)</summary> - `fetch_stories`: List stories with filtering - `get_story`: Get a specific story by ID - `create_story`: Create a new story - `update_story`: Update an existing story - `delete_story`: Delete a story - `publish_story`: Publish a story - `unpublish_story`: Unpublish a story - `get_story_versions`: List versions of a story - `restore_story`: Restore a story to a previous version - `validate_story_content`: Validate story content - `debug_story_access`: Debug access for a story - `bulk_publish_stories`: Publish multiple stories - `bulk_delete_stories`: Delete multiple stories - `bulk_update_stories`: Update multiple stories - `bulk_create_stories`: Create multiple stories - `get_unpublished_dependencies`: List unpublished dependencies - `ai_translate_story`: AI-powered translation for a story - `compare_story_versions`: Compare two versions of a story </details> ### Tags <details> <summary>Manage tags (CRUD, bulk association)</summary> - `retrieve_multiple_tags`: List tags - `create_tag`: Create a new tag - `update_tag`: Update a tag - `delete_tag`: Delete a tag - `tag_bulk_association`: Add tags to multiple stories </details> ### Tasks <details> <summary>Manage tasks (CRUD, webhooks, automation)</summary> - `retrieve_multiple_tasks`: List tasks - `retrieve_single_task`: Get a specific task - `create_task`: Create a new task - `update_task`: Update a task - `delete_task`: Delete a task </details> ### Webhooks <details> <summary>Manage webhooks (CRUD, trigger)</summary> - `retrieve_multiple_webhooks`: List webhooks - `retrieve_single_webhook`: Get a specific webhook - `add_webhook`: Add a new webhook - `update_webhook`: Update a webhook - `delete_webhook`: Delete a webhook </details> ### Workflows <details> <summary>Manage workflows and workflow stages</summary> - `retrieve_multiple_workflows`: List workflows - `retrieve_single_workflow`: Get a specific workflow - `create_workflow`: Create a new workflow - `update_workflow`: Update a workflow - `duplicate_workflow`: Duplicate a workflow - `delete_workflow`: Delete a workflow </details> ### Workflow Stage <details> <summary>Manage individual workflow stages</summary> - `retrieve_multiple_workflow_stages`: List workflow stages - `retrieve_single_workflow_stage`: Get a specific workflow stage - `create_workflow_stage`: Create a new workflow stage - `update_workflow_stage`: Update a workflow stage - `delete_workflow_stage`: Delete a workflow stage </details> ### Workflow Stage Changes <details> <summary>Track and manage workflow stage changes</summary> - `retrieve_multiple_workflow_stage_changes`: List workflow stage changes - `create_workflow_stage_change`: Create a workflow stage change </details> ## ⚡️ Quickstart 1. **Clone the repo** ```sh git clone <your-repo-url> cd storyblok-mcp-server ``` 2. **Install dependencies** ```sh pip install -r requirements.txt ``` 3. **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 ``` 4. **MCP Client Configuration** - To use this server with Claude or any MCP client, copy the following into your `claude_desktop_config.json`: ```json { "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. ![Claude Desktop](./assets/claude.png) 5. **Run and Test Locally** - You can also run and test the server locally using MCP Inspector: ```sh mcp run server.py ``` ![mcp inspector](./assets/inspector.png) ## 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: 1. **Fork the repo** and create your branch from `master`. 2. **Add or improve a tool** in the `tools/` directory. 3. **Write clear docstrings** and keep code modular. 4. **Use MCP Inspector** for debugging 5. **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](https://www.storyblok.com/) and [FastMCP](https://gofastmcp.com/getting-started/welcome). --- ## 📄 License MIT License. See [LICENSE](LICENSE) 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](https://www.storyblok.com/docs/api/management). --- _Built with 💙 by [Kiran](https://github.com/Kiran1689)_

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kiran1689/storyblok-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server