Sandbox
@Kiran1689/storyblok-mcp-server

MCP server for Storyblok content and space tools

This repo provides an MCP server that connects an agent to Storyblok management APIs. It breaks Storyblok operations into small tool modules so the agent can create, read, update, delete, and bulk-manage content, assets, workflows, and related space data.

41 starsβ€’6 forksβ€’Pythonβ€’Updated 1y ago
Who it's for

Builders who want an MCP-capable agent to manage Storyblok spaces, stories, and assets.

What it delivers

You can manage Storyblok content and space settings from your agent instead of switching to the Storyblok UI.

What it does

Resource-specific Storyblok tools

Separate modules handle stories, components, assets, data sources, tags, releases, workflows, webhooks, and more.

Bulk content operations

The stories and assets tools include bulk publish, delete, update, restore, and move actions.

Meta discovery tool

A meta tool lists the available MCP tools at runtime.

Environment-based setup

Credentials and space IDs are loaded from `.env` values such as `STORYBLOK_SPACE_ID` and `STORYBLOK_MANAGEMENT_TOKEN`.

Claude and MCP client setup

The README includes a Claude Desktop config example and a local `mcp run server.py` command for testing.

How to get it

  1. 1Clone the repo
    git clone <your-repo-url>
    cd storyblok-mcp-server
  2. 2Install dependencies
    pip install -r requirements.txt
  3. 3Copy .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. 4You can also run and test the server locally using MCP Inspector
    mcp run server.py

README

bannerbanner

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.

documentation Made With React built with love badge built for developers badge built for marketers badge

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

ResourceDescription
Access TokensManage access tokens for Storyblok API
ActivitiesManage or retrieve activity logs
ApprovalsManage approval workflows
AssetsManage assets (upload, update, delete, list)
Assets FolderManage asset folders
Branch DeploymentsManage branch deployments
CollaboratorsManage collaborators in a space
ComponentsManage Storyblok components (CRUD, schema, etc.)
Components FolderManage folders for components
Datasource EntriesManage entries in data sources
Data SourcesManage data sources (CRUD, entries)
DiscussionsManage discussions and comments
ExtensionsManage Storyblok extensions
Field PluginsManage custom field plugins
Internal TagsManage internal tags for assets/stories
MetaMeta tool: discover all available tools
PingHealth check and server status
PipelinesManage pipelines for content delivery
PresetsManage field presets for components
ReleasesManage releases (create, update, publish)
Scheduling StoriesSchedule stories for publishing
SpaceManage Storyblok space settings and info
Space RolesManage roles and permissions in a space
StoriesManage stories (CRUD, bulk ops, validation)
TagsManage tags (CRUD, bulk association)
TasksManage tasks (CRUD, webhooks, automation)
WebhooksManage webhooks (CRUD, trigger)
WorkflowsManage workflows and workflow stages
Workflow StageManage individual workflow stages
Workflow Stage ChangesTrack and manage workflow stage changes

πŸͺ„ Available Tools

Access Tokens

Manage access tokens for Storyblok API
  • 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

Activities

Manage or retrieve activity logs
  • retrieve_multiple_activities: List activity logs

Approvals

Manage approval workflows
  • retrieve_multiple_approvals: List approvals
  • create_approval: Create a new approval
  • update_approval: Update an approval
  • delete_approval: Delete an approval

Assets

Manage assets (upload, update, delete, list)
  • 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

Assets Folder

Manage asset folders
  • 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

Branch Deployments

Manage branch deployments
  • 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

Collaborators

Manage collaborators in a space
  • retrieve_multiple_collaborators: List collaborators
  • add_collaborator: Add a collaborator
  • update_collaborator: Update a collaborator
  • remove_collaborator: Remove a collaborator

Components

Manage Storyblok components (CRUD, schema, etc.)
  • 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

Components Folder

Manage folders for components
  • 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

Datasource Entries

Manage entries in data sources
  • 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

Data Sources

Manage data sources (CRUD, entries)
  • 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

Discussions

Manage discussions and comments
  • 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

Extensions

Manage Storyblok extensions
  • 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

Field Plugins

Manage custom field plugins
  • 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

Internal Tags

Manage internal tags for assets/stories
  • 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

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 branches
  • retrieve_single_branch: Get a specific branch
  • create_branch: Create a new branch
  • update_branch: Update a branch
  • delete_branch: Delete a branch

Presets

Manage field presets for components
  • 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

Releases

Manage releases (create, update, publish)
  • 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

Scheduling Stories

Schedule stories for publishing
  • 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

Space

Manage Storyblok space settings and info
  • 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

Space Roles

Manage roles and permissions in a space
  • 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

Stories

Manage stories (CRUD, bulk ops, validation)
  • 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

Tags

Manage tags (CRUD, bulk association)
  • 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

Tasks

Manage tasks (CRUD, webhooks, automation)
  • 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

Webhooks

Manage webhooks (CRUD, trigger)
  • 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

Workflows

Manage workflows and workflow stages
  • 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

Workflow Stage

Manage individual workflow stages
  • 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

Workflow Stage Changes

Track and manage workflow stage changes
  • retrieve_multiple_workflow_stage_changes: List workflow stage changes
  • create_workflow_stage_change: Create a workflow stage change

⚑️ Quickstart

  1. Clone the repo

    git clone <your-repo-url>
    cd storyblok-mcp-server
    
  2. Install dependencies

    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:
{
    "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

  1. Run and Test Locally
    • You can also run and test the server locally using MCP Inspector:
    mcp run server.py
    

mcp inspector

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 and FastMCP.


πŸ“„ License

MIT License. See 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.

Built with πŸ’™ by Kiran

Files in the repo

Repository payloadβ€’13 top-level entries
  • assets
  • tools
  • utils
  • .env.example
  • .gitignore
  • .python-version
  • config.py
  • LICENSE
  • pyproject.toml
  • README.md
  • requirements.txt
  • server.py
  • uv.lock

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More connectors

Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface

86k

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph β€” average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

43k

Universal provider proxy for OpenAI Codex & Claude Code β€” use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code

14k
okf-memory/
okf-agent-memory

Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300Β΅s in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.

547
tirth8205/
code-review-graph

Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.

31k
2akouwu/
reverify

Stop your AI from making things up β€” it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.

1.1k