bulk_validate
Validate multiple entries at once
Create, update and publish Contentful entries, assets and content types from an agent — and invoke the AI Actions the space already defines.
LABSCO SUMMARY
Updates merge rather than replace — send the fields and locales you are changing and everything else stays put — and publishing takes up to 100 entry IDs at once, which turns a content migration into a handful of calls. Pagination is the thing to plan around: entry search returns at most 3 items and content type listing at most 10 per request, so anything wide is a skip loop. AI Actions defined in the space are invokable from the same session as the edits they feed.
40 tools over the Contentful Management API: entries, assets, content types, spaces and environments, plus the space's AI Actions and threaded comments on entries.
A Contentful account and a Content Management API token in CONTENTFUL_MANAGEMENT_ACCESS_TOKEN. Space and environment IDs are supplied per call.
One command plus a key — npx -y @ivotoby/contentful-management-mcp-server --management-token <YOUR_MANAGEMENT_TOKEN>, then supply credentials
USE CASES
Validate the set first, then publish up to 100 entry IDs in one call — the server takes the bulk path itself when given more than one.
Updates merge with what is already there, so the call carries only the fields and locales that change — every value keyed by its locale.
Create the type, publish it, read its field definitions back, and create an entry against that ID — the field definitions are what the entry call needs to be correct.
Upload the asset with its title and description, publish it, and update it later without repeating the upload.
The AI Actions defined in the space can be invoked with variables from the same session as the edits, and an earlier invocation's result fetched by ID rather than waited for.
Comments carry a status and can reply to a parent, so a review thread lives on the entry itself instead of in a separate tracker.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
bulk_validateValidate multiple entries at once
create_ai_actionCreate a new AI Action
create_commentCreate a new comment on an entry. The comment will be created with the specified body and status. To create a threaded conversation (reply to an existing comment), provide the parent comment ID. This allows you to work around the 512-character limit by creating threaded replies.
create_content_typeCreate a new content type
create_entryCreate a new entry in Contentful. Before executing this function, you need to know the contentTypeId (not the content type NAME) and the fields of that contentType. You can get the fields definition by using the GET_CONTENT_TYPE tool. IMPORTANT: All field values MUST include a locale key (e.g., 'en-US') for each value, like: { title: { 'en-US': 'My Title' } }. Every field in Contentful requires a locale even for single-language content.
create_environmentCreate a new environment
delete_ai_actionDelete an AI Action
delete_assetDelete an asset
delete_commentDelete a specific comment from an entry.
delete_content_typeDelete a content type
delete_entryDelete an entry
delete_environmentDelete an environment
get_ai_actionGet a specific AI Action by ID
get_ai_action_invocationGet the result of a previous AI Action invocation
get_assetRetrieve an asset
get_commentsRetrieve comments for an entry with pagination support. Returns comments with their status and body content.
get_content_typeGet details of a specific content type
get_entryRetrieve an existing entry
get_single_commentRetrieve a specific comment by its ID for an entry.
get_spaceGet details of a space
invoke_ai_actionInvoke an AI Action with variables
list_ai_actionsList all AI Actions in a space
list_assetsList assets in a space. Returns a maximum of 3 items per request. Use skip parameter to paginate through results.
list_content_typesList content types in a space. Returns a maximum of 10 items per request. Use skip parameter to paginate through results.
list_environmentsList all environments in a space
list_spacesList all available spaces
publish_ai_actionPublish an AI Action
publish_assetPublish an asset
publish_content_typePublish a content type
publish_entryPublish an entry or multiple entries. Accepts either a single entryId (string) or an array of entryIds (up to 100 entries). For a single entry, it uses the standard publish operation. For multiple entries, it automatically uses bulk publishing.
search_entriesSearch for entries using query parameters. Returns a maximum of 3 items per request. Use skip parameter to paginate through results.
unpublish_ai_actionUnpublish an AI Action
unpublish_assetUnpublish an asset
unpublish_entryUnpublish an entry or multiple entries. Accepts either a single entryId (string) or an array of entryIds (up to 100 entries). For a single entry, it uses the standard unpublish operation. For multiple entries, it automatically uses bulk unpublishing.
update_ai_actionUpdate an existing AI Action
update_assetUpdate an asset
update_commentUpdate an existing comment on an entry. The handler will merge your updates with the existing comment data.
update_content_typeUpdate an existing content type. The handler will merge your field updates with existing content type data, so you only need to provide the fields and properties you want to change.
update_entryUpdate an existing entry. The handler will merge your field updates with the existing entry fields, so you only need to provide the fields and locales you want to change. IMPORTANT: All field values MUST include a locale key (e.g., 'en-US') for each value, like: { title: { 'en-US': 'My Updated Title' } }. Every field in Contentful requires a locale even for single-language content.
upload_assetUpload a new asset
BEFORE YOU INSTALL
40 tools when we connected; the project documents 42. bulk_publish and bulk_unpublish are documented but did not appear on a default install. Nine AI Action tools depend on DISABLE_AI_ACTIONS and on your space having the feature; setting both SPACE_ID and ENVIRONMENT_ID removes the space and environment tools.
INSTALLATION
npx -y @ivotoby/contentful-management-mcp-server --management-token <YOUR_MANAGEMENT_TOKEN>{
"mcpServers": {
"contentful": {
"command": "npx",
"args": [
"-y",
"@ivotoby/contentful-management-mcp-server"
],
"env": {
"CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "<YOUR_CONTENTFUL_MANAGEMENT_ACCESS_TOKEN>"
}
}
}
}{
"mcpServers": {
"contentful": {
"command": "npx",
"args": [
"-y",
"@ivotoby/contentful-management-mcp-server",
"--management-token",
"<YOUR_TOKEN>",
"--host",
"http://api.contentful.com"
]
}
}
}npx -y @ivotoby/contentful-management-mcp-server --management-token <YOUR_MANAGEMENT_TOKEN> --http --port 3000