Buy a domain, provision hosting, deploy a site, and set its DNS — one official server covering the whole chain, now through three search-and-execute tools.
Contentful
Model, write and publish structured content from an agent — 73 tools across entries, assets and content types.
Quick answer
What it does
Exposes the Contentful CMA as MCP tools: `create_entry` / `update_entry` / `publish_entry` (bulk up to 100), `search_entries` and `semantic_search`, `upload_asset` and the asset lifecycle, the full `*_content_type` family including per-field omit and disable, editor-interface configuration, entry snapshots for rollback, and AI actions.
Best for
- Drafting and publishing entries in bulk
- Scaffolding a new content type and its editor interface
- Semantic search across a space
- Asset upload and attachment
Not for
- Page layout or visual design
- Sites without a separate front end to render the content
Source: top-mcps.com/mcp/contentful — verified Sep 2026
Setup recipe
Pick your client, then follow the three steps.
- 1
Install
claude_desktop_config.jsonjson{ "mcpServers": { "contentful": { "command": "npx", "args": [ "-y", "@contentful/mcp-server" ], "env": { "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "${CONTENTFUL_MANAGEMENT_ACCESS_TOKEN}", "SPACE_ID": "${SPACE_ID}", "ENVIRONMENT_ID": "${ENVIRONMENT_ID}", "CONTENTFUL_HOST": "${CONTENTFUL_HOST}" } } } }Paste under mcpServers. Fully quit and reopen Claude after editing.
CLI or .mcp.jsonshell# export CONTENTFUL_MANAGEMENT_ACCESS_TOKEN=your_cma_token # export SPACE_ID=your_space_id # export ENVIRONMENT_ID=master # export CONTENTFUL_HOST=api.contentful.com claude mcp add contentful -- npx -y @contentful/mcp-serverRun from your repo. Commit .mcp.json to share with your team.
.cursor/mcp.jsonjson{ "mcpServers": { "contentful": { "command": "npx", "args": [ "-y", "@contentful/mcp-server" ], "env": { "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "${CONTENTFUL_MANAGEMENT_ACCESS_TOKEN}", "SPACE_ID": "${SPACE_ID}", "ENVIRONMENT_ID": "${ENVIRONMENT_ID}", "CONTENTFUL_HOST": "${CONTENTFUL_HOST}" } } } }Global path: ~/.cursor/mcp.json. Reload window after editing.
.vscode/mcp.jsonjsonc{ "servers": { "contentful": { "command": "npx", "args": [ "-y", "@contentful/mcp-server" ], "env": { "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "${CONTENTFUL_MANAGEMENT_ACCESS_TOKEN}", "SPACE_ID": "${SPACE_ID}", "ENVIRONMENT_ID": "${ENVIRONMENT_ID}", "CONTENTFUL_HOST": "${CONTENTFUL_HOST}" } } } }VS Code uses the "servers" key (not "mcpServers").
~/.codeium/windsurf/mcp_config.jsonjson{ "mcpServers": { "contentful": { "command": "npx", "args": [ "-y", "@contentful/mcp-server" ], "env": { "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "${CONTENTFUL_MANAGEMENT_ACCESS_TOKEN}", "SPACE_ID": "${SPACE_ID}", "ENVIRONMENT_ID": "${ENVIRONMENT_ID}", "CONTENTFUL_HOST": "${CONTENTFUL_HOST}" } } } }Open via Cascade → hammer icon → Configure.
cline_mcp_settings.jsonjson{ "mcpServers": { "contentful": { "command": "npx", "args": [ "-y", "@contentful/mcp-server" ], "env": { "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "${CONTENTFUL_MANAGEMENT_ACCESS_TOKEN}", "SPACE_ID": "${SPACE_ID}", "ENVIRONMENT_ID": "${ENVIRONMENT_ID}", "CONTENTFUL_HOST": "${CONTENTFUL_HOST}" } } } }Open via the Cline sidebar → MCP Servers → Edit.
~/.continue/config.jsonjson{ "experimental": { "modelContextProtocolServers": [ { "transport": { "type": "stdio", "command": "npx", "args": [ "-y", "@contentful/mcp-server" ], "env": { "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "${CONTENTFUL_MANAGEMENT_ACCESS_TOKEN}", "SPACE_ID": "${SPACE_ID}", "ENVIRONMENT_ID": "${ENVIRONMENT_ID}", "CONTENTFUL_HOST": "${CONTENTFUL_HOST}" } } } ] } }Continue uses modelContextProtocolServers with a transport block.
~/.codex/config.tomlshell# ~/.codex/config.toml [mcp_servers.contentful] command = "npx" args = [ "-y", "@contentful/mcp-server", ] env = { CONTENTFUL_MANAGEMENT_ACCESS_TOKEN = "${CONTENTFUL_MANAGEMENT_ACCESS_TOKEN}", SPACE_ID = "${SPACE_ID}", ENVIRONMENT_ID = "${ENVIRONMENT_ID}", CONTENTFUL_HOST = "${CONTENTFUL_HOST}" }Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.
~/.config/zed/settings.jsonjsonc{ "context_servers": { "contentful": { "command": { "path": "npx", "args": [ "-y", "@contentful/mcp-server" ] }, "env": { "CONTENTFUL_MANAGEMENT_ACCESS_TOKEN": "${CONTENTFUL_MANAGEMENT_ACCESS_TOKEN}", "SPACE_ID": "${SPACE_ID}", "ENVIRONMENT_ID": "${ENVIRONMENT_ID}", "CONTENTFUL_HOST": "${CONTENTFUL_HOST}" } } } }Zed calls them "context_servers". Settings live-reload on save.
ChatGPT → Apps directorynoneContentful doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.
- 2
Set required secrets
Set
CONTENTFUL_MANAGEMENT_ACCESS_TOKEN,SPACE_ID,ENVIRONMENT_ID,CONTENTFUL_HOSTin your shell environment before launching your MCP client. - 3
Try a minimum working prompt
Minimum working prompt pending verification. Try any prompt from the MCP’s README once installed.
Tools & permissions
Showing 12 of 73 tools the server reported. The rest are real, just not listed here.
| Tool | Description | Args | Side effects |
|---|---|---|---|
get_initial_context | Documented mandatory first call — loads space context and usage rules. | — | Read |
search_entries | Search entries in a space and environment. | — | Read |
semantic_search | Find entries by meaning using vector search. | — | Network |
create_entry | Create an entry; requires the contentTypeId, not the name. | — | Write |
update_entry | Update an entry; requires the sys.version read from get_entry. | — | Write |
publish_entry | Publish one entry or up to 100 in one call. | — | Write |
get_entry_snapshot | List or read version snapshots of an entry for rollback. | — | Read |
upload_asset | Upload a new asset to the space. | — | Write |
create_content_type | Create a content type with a display field and field set. | — | Write |
update_content_type | Merge field updates into an existing content type draft. | — | Write |
delete_content_type_field | Permanently mark a field deleted. Irreversible once published. | — | Write |
update_editor_interface | Configure field widgets, sidebar and editor layout for a content type. | — | Write |
Security & scope
- Access scope
- Read + write
- Sandbox
- No sandbox, but Contentful environments serve the purpose — point `ENVIRONMENT_ID` at a non-master environment first.
- Gotchas
- The CMA token is space-wide. Scope the agent by pointing it at a sandbox environment, not by trusting the token.
- Delete tools are two-phase — the first call returns a confirmation token rather than deleting — but `delete_content_type_field` is described by the vendor as destructive and irreversible once published.
- `update_entry` needs the `sys.version` from a prior `get_entry`. An agent that skips the read gets a version conflict, which is the correct behaviour and worth leaving in place.
Agent prompt pack
— copy into Claude, Cursor, or ChatGPT.Recommend the best MCP servers for [task: e.g. website builders work] in [client: Claude]. Constraints: - Prefer tools that are [official | open-source | read-only] — pick what matters for my use case. - Exclude MCPs that require [e.g. a paid plan, OAuth-only flows, remote-only transport]. - Return at most 3 picks, ranked. For each pick include: 1. One-sentence rationale. 2. The ready-to-paste install snippet for my client. 3. Any required secrets I need to create before installing. Cross-check the top-mcps.com listing: https://top-mcps.com/top-mcps-for-website-builders
Compare Contentful MCP vs [Sanity MCP] for the following job: [describe the job, e.g. "let an agent create GitHub issues on bug triage"]. Judge them on: - Setup time and complexity (what a new user hits first). - Auth model (none / API key / OAuth 2.1) and credential risk. - Transport (stdio / Streamable HTTP / SSE) and where the server runs. - Required secrets and the blast radius if they leak. - Operational risk in an unattended agent loop. - Which one is "good enough" for a weekend prototype vs. production. End with one sentence: which should I pick for my scenario, which is: [my scenario]. References: - https://top-mcps.com/mcp/contentful - top-mcps.com listing for Sanity
Install the Contentful MCP server for my [client: Claude] at the default config path for that client. Use the exact install snippet published at https://top-mcps.com/mcp/contentful (fetch https://top-mcps.com/mcp/contentful.json for the canonical server.json if you can read URLs). Before finishing: 1. Create the required secrets (CONTENTFUL_MANAGEMENT_ACCESS_TOKEN, SPACE_ID, ENVIRONMENT_ID, CONTENTFUL_HOST) and put them in the appropriate env block — do not hard-code them. 2. Restart or reload the client so it picks up the new server. 3. Verify the server is connected (green / running state) and at least one tool is listed. 4. If anything fails, read the client's MCP logs and report the exact error — do not silently retry. Confirm when done and list the tools the server now exposes.
Frequently asked questions
What changed
— 1 update tracked.Refreshed install snippets and fact sheet; verified for 2026.
More Website Builders MCPs
Other tools in the same category worth evaluating.
Edit a live Webflow site from an agent — CMS collections, pages, and the Designer canvas over OAuth.
Query and edit Sanity content over a remote OAuth MCP — no token in a config file.
Compared with Contentful
Side-by-side breakdowns for the choices people most often weigh against this MCP.
Exploring Top MCPs for Website Builders and CMS? See all Website Builders MCPs →