Storyblok
Headless CMS with visual editor for content management and delivery across multiple platforms
Verdict
Common use cases
- Preview translated content before deploy
- Audit which pages reference a component
- Generate content inventory reports for stakeholders
- Debug missing fields in draft stories
- Check rate limits before bulk migrations
Integration
- Vendor
- Storyblok
- Category
- developer-tools
- Auth
- API_KEY
- Tools
- 10
- Composio slug
storyblok
Tools
- Fetch Content Type Items (GraphQL)
Fetch multiple stories/content items using Storyblok's GraphQL API with filtering and pagination. Use starts_with with language code prefix (e.g., 'es/*', 'hi/*') to retrieve translated content in specific languages.
- Fetch GraphQL Content Item
Tool to fetch a single story in a specific language using Storyblok GraphQL API with field-level translations. For each content type (e.g., Page), Storyblok generates a ContentTypeItem field (e.g., PageItem). Use when you need to retrieve a
- Get Datasource Entries
Tool to retrieve datasource entries from Storyblok via GraphQL API. Use when you need to fetch datasource data. Returns datasource entries with fields like id, name, value, and dimension_value.
- Get Extension/App
Tool to retrieve a Storyblok extension/app by ID using the Management API. Use when you need to fetch details about a specific extension or app installed in Storyblok.
- Get GraphQL Rate Limit
Tool to retrieve rate limit information from Storyblok GraphQL API. Use when you need to check the maximum cost per request to calculate safe request rates (100 / maxCost = requests per second).
- Get Page Item
Tool to retrieve a single page item by ID or slug from Storyblok using GraphQL. Use when you need to fetch specific page content with custom field selection. Supports both draft and published versions.
- List GraphQL Content Type Items
Tool to retrieve multiple content items with pagination, filtering, and relation resolution for any Storyblok content type via GraphQL. Content types are dynamically generated as [ContentType]Items (e.g., PageItems, BlogArticleItems). Use w
- Query page items via GraphQL
Execute GraphQL queries to retrieve multiple page items from Storyblok with filtering options. Use when you need to fetch page content with filters like path prefix, publish date, or slug exclusions.
- Retrieve Links via GraphQL
Tool to retrieve links for navigation using Storyblok's GraphQL API. Use when you need to fetch navigation links with their metadata (id, uuid, slug, name, published status).
- Retrieve Tags via GraphQL
Tool to retrieve tags from Storyblok via GraphQL API. Use when you need to fetch available tags for content organization and filtering.
Setup
Setup guide
- 11. In Switchy, open your workspace settings and navigate to the MCP Integrations panel. 2. Click 'Add Integration' and select Storyblok from the developer tools category. 3. In a separate tab, log into your Storyblok space, go to Settings > Access Tokens, and generate a new Personal Access Token with 'Read' scope for the Content Delivery API. 4. Copy the token and paste it into the API Key field in Switchy, then click 'Connect'. 5. Switchy will verify the token by fetching your space metadata — you'll see a green checkmark when the connection succeeds. 6. Open any Space in Switchy and type '@Storyblok list all blog posts published this month' to test the integration. 7. The AI will invoke the appropriate GraphQL query and return story slugs, publish dates, and content summaries inline.
What teammates see: by default, memories from Storyblok are scoped to the Space (PROJECT visibility) - you can mark any memory PRIVATE or share it ORG-wide.
Works well with
Top models
Compatibility data appears once enough Spaces have used this MCP together with a given model.
How Switchy teams use it
Starter prompts
List Recent Blog Posts
@Storyblok fetch the 10 most recently published blog posts, showing their slugs, titles, and publish dates. Sort by newest first.Open in a Space →
Find Translated Versions
@Storyblok show me all translated versions of the 'about-us' page, including which languages are live and which are still drafts.Open in a Space →
Inspect Content Type Schema
@Storyblok describe the schema for the 'Product' content type, listing all custom fields and their data types.Open in a Space →
Check API Rate Limits
@Storyblok what are the current GraphQL rate limits for our space? Show max cost per request and recommended requests per second.Open in a Space →
List Datasource Entries
@Storyblok retrieve all entries from the 'product-categories' datasource, showing name and value pairs for each entry.Open in a Space →
Example outputs
Illustrative - representative of the model's voice and quality, not literal recordings.
@storyblok fetch all blog posts published in the last 30 days and show me their titles, authors, and publish dates
Found 14 blog posts published in the last 30 days: 1. "Migrating to Headless CMS" by Sarah Chen (Jan 15, 2025) 2. "Component-Driven Content Strategy" by Marcus Liu (Jan 12, 2025) 3. "Visual Editing Best Practices" by Emma Rodriguez (Jan 8, 2025) [...11 more entries] All posts are in published state. The query filtered PageItems by first_published_at >= 30 days ago and returned full_slug, content.title, content.author, and first_published_at fields via GraphQL.
This example uses the List GraphQL Content Type Items tool with date filtering. Requires a valid API key with read access to the content delivery API. The actual field names (content.title, content.author) depend on your content type schema — Storyblok generates GraphQL types dynamically from your component definitions. Rate limits apply: check maxCost with the rate limit tool if querying large datasets.
@storyblok create a new datasource entry called 'Q1-2025-Campaign' in the 'marketing-tags' datasource with value 'q1_promo'
I cannot create datasource entries directly — the available tools only support reading datasource data via the Get Datasource Entries tool. To add 'Q1-2025-Campaign' to your 'marketing-tags' datasource, you'll need to: 1. Log into the Storyblok Management interface 2. Navigate to Content → Datasources → marketing-tags 3. Add the new entry manually Once created, I can fetch and reference it in queries. Would you like me to retrieve the current entries in 'marketing-tags' to confirm the structure?
This example reveals a key limitation: the MCP provides read-only access to datasources via GraphQL. Write operations (create/update/delete) require the Management API, which isn't exposed in the current tool set. Always verify the MCP's tool list before assuming CRUD capabilities — many integrations prioritize safe read operations over write access to prevent accidental content changes.
@storyblok pull all Spanish-language product pages and summarize which ones are missing the 'seo_description' field
Fetched 23 product pages from the 'es/*' path prefix. Analysis of missing SEO descriptions: **Missing seo_description (8 pages):** - es/productos/widget-pro (last edited 3 weeks ago) - es/productos/starter-kit (last edited 2 months ago) - es/productos/enterprise-bundle (last edited 1 week ago) [...5 more] **Has seo_description (15 pages):** All other Spanish product pages include the field. Recommendation: Prioritize the 3 pages edited in the last month — they're likely active in campaigns and need SEO metadata before the next publish cycle.
This example combines the Fetch Content Type Items tool (filtering by 'es/*' starts_with prefix for Spanish content) with AI reasoning to audit field completeness. Storyblok's GraphQL API returns null for missing optional fields, making gap analysis straightforward. Useful for content audits across multilingual sites. Note: requires the space to have translation workflows enabled and content structured with language-prefixed slugs.
Use-case deep-dives
When Storyblok MCP speeds pre-launch translation checks
A 5-person marketing team launching a product in three markets needs to verify that Spanish and Hindi translations exist for 200+ landing pages before go-live. The Storyblok MCP wins here because the Fetch Content Type Items tool filters by language prefix ('es/*', 'hi/*') in a single query, surfacing missing translations without opening the CMS. The team runs the check in a shared Switchy workspace during the final sprint, spots 14 untranslated pages, and routes them to the localization vendor. The threshold: if your content model has deeply nested components or custom field types, the GraphQL response can bloat past 500KB per query, slowing the audit. For flat page structures under 1,000 items, this MCP cuts the pre-launch content QA from hours to minutes.
Why Storyblok MCP fits customer-facing knowledge retrieval
A 3-person support team fields 40 tickets daily, many asking 'where's the doc on X feature?' The Storyblok MCP handles this because the Get Page Item and Query page items tools pull published content by slug or path filter, letting the agent surface the exact help article URL in seconds. The team connects the MCP to Switchy, types 'find the SSO setup guide', and the agent returns the live page link plus a snippet of the intro paragraph. The trade-off: if your knowledge base lives across multiple content types (pages, FAQs, glossary entries), you'll need separate queries per type, which adds latency. For teams with a single 'Help Article' content type and under 500 articles, this MCP turns Storyblok into a queryable support knowledge layer without custom indexing.
When to use Storyblok MCP for build-time rate limit checks
A 2-engineer frontend team rebuilds a static site nightly, pulling 800 pages from Storyblok via GraphQL. The build occasionally fails with rate limit errors, breaking the deploy pipeline. The Storyblok MCP's Get GraphQL Rate Limit tool exposes the max cost per request, letting the team calculate safe request pacing (100 divided by maxCost equals requests per second) and adjust their build script throttle. They run the check in Switchy before each deploy, confirm the limit hasn't changed, and avoid the 3am Slack fire drill. The boundary: if your build fetches content types with heavy relation resolution (10+ linked entries per page), the cost calculation becomes a moving target. For straightforward page queries under 50 cost units, this MCP turns rate limit guesswork into a one-line pre-flight check.
Frequently asked
What does the Storyblok MCP do in Switchy?
It connects your Storyblok headless CMS to Switchy's AI workspace, letting your team query content, fetch translated stories, check datasource entries, and inspect extensions via GraphQL or the Management API. You can pull draft or published content, filter by language prefix, and resolve relations — all without leaving your AI chat.
Do I need admin access to generate the API key?
Yes. Storyblok API keys are created in your space settings, which requires admin or owner permissions. The key you provide determines what content the MCP can read — if your space has restricted content types or unpublished drafts, the key's role must have access to those resources.
Can the Storyblok MCP publish or edit content?
No. This integration is read-only. It fetches stories, datasource entries, and extension metadata, but it cannot create, update, or publish content. If your team needs to push changes back to Storyblok, you'll need to use the Management API directly or a separate automation tool.
How is this different from querying Storyblok's API myself?
The MCP wraps Storyblok's GraphQL and Management APIs so your AI assistant can fetch content on demand without you writing queries or handling pagination. It's faster for ad-hoc questions like "show me all Spanish blog posts" but less flexible than a custom script if you need complex transforms or write operations.
Who on the team should connect this integration?
Whoever manages your Storyblok space and has admin rights to create API keys. Once connected, any Switchy workspace member can ask the AI to pull content, but only the person who set it up can rotate the key or adjust access scopes in Storyblok's settings.