Anytype MCP Server
OFFICIAL SERVERRead and edit Anytype spaces, objects, types and chats through the app's local API
Manage entries, assets, content models, locales and releases in a Contentful space from chat
Official · Contentful TypeScript Local · stdio Productivity
62 popularity score ★ 62 ↓ 11k/wk
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs CONTENTFUL_MANAGEMENT_ACCESS_TOKEN, SPACE_ID. Replace each <NAME> with your value.
claude mcp add contentful -e CONTENTFUL_MANAGEMENT_ACCESS_TOKEN=<CONTENTFUL_MANAGEMENT_ACCESS_TOKEN> -e SPACE_ID=<SPACE_ID> -- npx -y @contentful/mcp-server{
"mcpServers": {
"contentful": {
"command": "npx",
"args": [
"-y",
"@contentful/mcp-server"
],
"env": {
"CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "<CONTENTFUL_MANAGEMENT_ACCESS_TOKEN>",
"SPACE_ID": "<SPACE_ID>"
}
}
}
}{
"mcpServers": {
"contentful": {
"command": "npx",
"args": [
"-y",
"@contentful/mcp-server"
],
"env": {
"CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "<CONTENTFUL_MANAGEMENT_ACCESS_TOKEN>",
"SPACE_ID": "<SPACE_ID>"
}
}
}
}{
"servers": {
"contentful": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@contentful/mcp-server"
],
"env": {
"CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "<CONTENTFUL_MANAGEMENT_ACCESS_TOKEN>",
"SPACE_ID": "<SPACE_ID>"
}
}
}
}[mcp_servers.contentful]
command = "npx"
args = ["-y", "@contentful/mcp-server"]
[mcp_servers.contentful.env]
CONTENTFUL_MANAGEMENT_ACCESS_TOKEN = "<CONTENTFUL_MANAGEMENT_ACCESS_TOKEN>"
SPACE_ID = "<SPACE_ID>"gemini mcp add --scope user -e CONTENTFUL_MANAGEMENT_ACCESS_TOKEN=<CONTENTFUL_MANAGEMENT_ACCESS_TOKEN> -e SPACE_ID=<SPACE_ID> contentful npx -- -y @contentful/mcp-serverCONTENTFUL_MANAGEMENT_ACCESS_TOKEN |
Required: Contentful Management API personal access token. |
|---|---|
SPACE_ID |
Required: ID of the Contentful space to work on. |
ENVIRONMENT_ID |
Optional: Environment within the space; defaults to master. |
CONTENTFUL_HOST |
Optional: Management API host; defaults to api.contentful.com. |
PROTECTED_ENVIRONMENTS |
Optional: Comma-separated environment IDs on which writes and deletes are refused. |
MAX_BULK_SIZE |
Optional: Largest number of IDs one bulk call may include, 1 to 100; defaults to 10. |
EXPORT_BASE_DIR |
Optional: Folder that export_space writes into; defaults to the working directory. |
ENABLE_EXO_TOOLS |
Optional: Set to true to add Experience Orchestration tools (needs the exoM1 entitlement). |
Contentful publishes this server for its headless content platform. It runs locally over stdio and talks to the Contentful Management API using a personal access token, so an assistant can do most of what an editor or content modeller does in the Contentful web app.
Its tools cover content types (create, change, publish, delete), entries (search, semantic search, read version snapshots, create, update, publish and unpublish one or many at once), assets (upload, update metadata, publish), locales, tags, environments, releases and scheduled releases, editor interfaces, taxonomy concepts and concept schemes, and Contentful AI Actions. It can also list organisations and spaces, read usage metrics for an organisation, and export a space to disk or import one into another space through a guided migration workflow that stays switched off until asked for.
Two settings help limit damage: PROTECTED_ENVIRONMENTS blocks writes and deletes against the environments named in it, and MAX_BULK_SIZE caps how many items one bulk call may touch (10 by default). Tools for Contentful's Experience Orchestration (components, design tokens, experiences) are hidden unless ENABLE_EXO_TOOLS is set and the account holds that entitlement.
| Runtime | Node.js |
|---|
Node.js with npm (npx). A Contentful account, the ID of the space to work on, and a Contentful Management API personal access token. The Experience Orchestration tools also need the exoM1 entitlement on an organisation the token can reach.
Works on one space and environment per configuration (SPACE_ID, ENVIRONMENT_ID, default master). Several list tools return at most 10 items per request, and bulk publish or unpublish calls are capped at MAX_BULK_SIZE IDs (10 by default, up to 100). The environment guard only acts inside this server: it does not cover organisation-level resources such as taxonomy concepts, nor invoke_ai_action, and it does not replace Contentful role permissions. Release publishing is asynchronous and must be checked with get_release_action.
Suits teams already on Contentful who want an assistant to model content, draft and publish entries, sort assets or run releases, and who can issue a Management API token. Because almost every tool can write and the token carries the user's full permissions, it suits a sandbox or non-master environment best, or a setup with PROTECTED_ENVIRONMENTS set. It is official and runs on your machine. Anyone who only needs to read published content, or whose content lives in another CMS, will want a different server.
get_initial_contextlist_content_typesget_content_typecreate_content_typeupdate_content_typepublish_content_typeunpublish_content_typedelete_content_typesearch_entriessemantic_searchget_entryget_entry_snapshotresolve_entry_referencescreate_entryupdate_entrypublish_entryunpublish_entrydelete_entryupload_assetlist_assetsget_assetupdate_assetpublish_assetunpublish_assetdelete_assetlist_editor_interfacesget_editor_interfaceupdate_editor_interfacelist_orgsget_orglist_spacesget_spacelist_environmentscreate_environmentdelete_environmentlist_localescreate_localeupdate_localedelete_localelist_releasescreate_releaseupdate_releasepublish_releasevalidate_releaseget_release_actionschedule_publish_releasecancel_scheduled_releaselist_scheduled_actionslist_tagscreate_taglist_conceptscreate_conceptcreate_concept_schemecreate_ai_actioninvoke_ai_actionlist_ai_actionsspace_to_space_migration_handlerexport_spaceimport_spaceget_usages