MCP
The BCMS Model Context Protocol (MCP) integration enables AI assistants like Claude, Cursor, and other MCP-compatible tools to interact directly with your BCMS content. This allows you to create, read, and update content entries, manage media files, and explore your content structure—all through natural language conversations with AI.
What is MCP?
The Model Context Protocol (MCP) is an open standard developed by Anthropic that allows AI applications to securely connect to external data sources and tools. With BCMS MCP support, you can leverage AI assistants to:
Query and explore your content structure
Create new content entries with AI-generated content
Update existing entries
Manage your media library
Get intelligent suggestions based on your content model
Getting Started
Prerequisites
A BCMS account with an active instance
An MCP key with appropriate permissions
An MCP-compatible client (Claude Desktop, Cursor, or any MCP client)
Step 1: Create an MCP Key
Navigate to your BCMS dashboard
Go to Settings → MCP
Click Create MCP Key
Configure the permissions for templates you want the AI to access:
GET: Read entries
POST: Create entries
PUT: Update entries
DELETE: Delete entries
Note: Right now, MCP only supports creating, reading and updating content.
Step 2: Configure Your MCP Client
You can find full instructions for integrating BCMS with your AI tools right inside BCMS, on the MCP page. But in general, installing BCMS MCP works in a standard way:
{ "mcpServers": { "bcms": { "url": "https://app.thebcms.com/api/v3/mcp?apiKey=YOUR_MCP_KEY" } } }
Available Tools
Once connected, your AI assistant will have access to the following tools based on your MCP key permissions:
Content Discovery
list_templates_and_entries
Lists all templates and their entries that you have access to. This is typically the first tool to call when exploring your BCMS content.
Returns:
Template IDs, names, and slugs
Entry IDs with titles and slugs for each language
Example prompt:
"Show me all the templates and entries in my BCMS"
Entry Management
list_entries_for_{templateId}
Retrieves all entries for a specific template with full content data. A separate tool is generated for each template you have access to.
Returns:
Complete entry data including all meta fields
Content in all configured languages
Entry statuses
Example prompt:
"List all blog posts from my Blog template"
create_entry_for_{templateId}
Creates a new entry for a specific template. The input schema is dynamically generated based on your template's field structure.
Input:
statuses: Array of status assignments per languagemeta: Array of metadata for each language (title, slug, custom fields)content: Array of content nodes for each language
Example prompt:
"Create a new blog post titled 'Getting Started with BCMS' with a brief introduction paragraph"
update_entry_for_{templateId}
Updates an existing entry for a specific language.
Input:
entryId: The ID of the entry to updatelng: Language code (e.g., "en")status: Optional status IDmeta: Updated metadatacontent: Updated content nodes
Example prompt:
"Update the introduction paragraph of my 'Getting Started' blog post"
Media Management
list_all_media
Lists all media files in your media library.
Returns:
Media IDs, names, and types
File metadata (size, dimensions for images)
Parent directory information
Example prompt:
"Show me all images in my media library"
list_media_dirs
Lists the directory structure of your media library.
Returns:
Hierarchical directory structure
Directory IDs and names
Example prompt:
"Show me the folder structure of my media library"
create-media-directory
Creates a new directory in your media library.
Input:
name: Name of the directoryparentId: Optional parent directory ID (root if not specified)
Example prompt:
"Create a new folder called 'Blog Images' in my media library"
upload-media-file
Uploads a media file to your library.
Input:
fileName: Name of the file with extensionfileData: Base64-encoded file data (with data URI prefix)parentId: Optional parent directory ID
Example prompt:
"Upload this image to my Blog Images folder"
Linking Tools
get_entry_pointer_link
Generates an internal BCMS link to an entry for use in content.
Input:
entryId: The ID of the entry to link to
Returns:
Internal link format:
entry:{entryId}@*_{templateId}:entry
Example prompt:
"Get me the internal link for the 'About Us' page entry"
get_media_pointer_link
Generates an internal BCMS link to a media item for use in content.
Input:
mediaId: The ID of the media item
Returns:
Internal link format:
media:{mediaId}@*_@*_:entry
Example prompt:
"Get the link for the hero image so I can use it in my blog post"
Content Structure
Entry Content Nodes
When creating or updating entries, content is structured as an array of nodes. Supported node types include:
Type
Description
paragraph
Standard text paragraph
heading
Heading (h1-h6)
bulletList
Unordered list
orderedList
Numbered list
listItem
List item
codeBlock
Code block with syntax highlighting
blockquote
Quote block
image
Image node
widget
Custom widget with props
Example Content Structure
{ "content": [ { "lng": "en", "nodes": [ { "type": "heading", "attrs": { "level": 1 }, "content": [ { "type": "text", "text": "Welcome to BCMS" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "This is your first paragraph." } ] } ] } ] }
Security & Permissions
MCP Key Scopes
Your MCP key controls what the AI can access:
Template Access: Only templates explicitly granted in the MCP key are visible
Operation Permissions: Each template can have independent GET/POST/PUT/DELETE permissions
Media Access: Media operations are controlled separately
Best Practices
Principle of Least Privilege: Only grant the permissions needed for your use case
Separate Keys: Create different MCP keys for different purposes or team members
Regular Rotation: Periodically rotate your MCP keys
Use Cases
Content Creation Workflows
Blog Post Creation
"Create a new blog post about the benefits of headless CMS. Include an introduction, three main benefits with explanations, and a conclusion. Use the Blog template."
Product Updates
"Update the price field for all products in the Electronics category to apply a 10% discount"
Content Exploration
Content Audit
"List all blog posts that don't have a featured image set"
Translation Status
"Show me which entries are missing German translations"
Media Organization
Library Cleanup
"Show me all unused images in the media library"
Folder Setup
"Create folder structure for: Products > Categories > Electronics, Clothing, Home"
Troubleshooting
Common Issues
"MCP key not found"
Verify your MCP key format:
keyId.keySecret.instanceIdEnsure the MCP key hasn't been deleted or deactivated
Check that you're using the correct instance
"MCP key does not have access to template"
Review your MCP key permissions in the dashboard
Ensure the required operation (GET/POST/PUT/DELETE) is enabled for the template
Session Expired
MCP sessions may timeout after periods of inactivity
Simply start a new conversation to establish a fresh session
Getting Help
Documentation: thebcms.com/docs
Support: [email protected]
Community: Join BCMS Discord for community support
Technical Reference
Endpoint
POST https://app.thebcms.com/api/v3/mcp?apiKey={API_KEY}
Transport
BCMS MCP uses the Streamable HTTP transport with session management. Sessions are maintained via the mcp-session-id header.
Response Format
All tools return structured JSON responses conforming to the MCP specification with:
content: Array of content blocksstructuredContent: Typed response data
Rate Limits
MCP requests are subject to the same rate limits as API requests:
Requests are tracked per MCP key
Contact support if you need higher limits for production workloads