Contentful

Contentful

Official

Model, write and publish structured content from an agent — 73 tools across entries, assets and content types.

Score 79(?)ContentfulMIT60Verified Top MCPs for Website Builders and CMS →

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. 1

    Install

    claude_desktop_config.json
    {
      "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.json
    # 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-server

    Run from your repo. Commit .mcp.json to share with your team.

    .cursor/mcp.json
    {
      "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.json
    {
      "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.json
    {
      "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.json
    {
      "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.json
    {
      "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.toml
    # ~/.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.json
    {
      "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 directory

    Contentful 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. 2

    Set required secrets

    Set CONTENTFUL_MANAGEMENT_ACCESS_TOKEN, SPACE_ID, ENVIRONMENT_ID, CONTENTFUL_HOST in your shell environment before launching your MCP client.

  3. 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.

ToolDescriptionArgsSide effects
get_initial_contextDocumented mandatory first call — loads space context and usage rules.—Read
search_entriesSearch entries in a space and environment.—Read
semantic_searchFind entries by meaning using vector search.—Network
create_entryCreate an entry; requires the contentTypeId, not the name.—Write
update_entryUpdate an entry; requires the sys.version read from get_entry.—Write
publish_entryPublish one entry or up to 100 in one call.—Write
get_entry_snapshotList or read version snapshots of an entry for rollback.—Read
upload_assetUpload a new asset to the space.—Write
create_content_typeCreate a content type with a display field and field set.—Write
update_content_typeMerge field updates into an existing content type draft.—Write
delete_content_type_fieldPermanently mark a field deleted. Irreversible once published.—Write
update_editor_interfaceConfigure 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.
Paste into Claude, Cursor, or ChatGPT. Edit the [brackets] before sending.
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 against a real alternative. Swap the second MCP in [brackets] if you want a different match.
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
Asks the agent to install and verify. Works inside Claude Code, Cursor Agent, Codex CLI.
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.
  1. Refreshed install snippets and fact sheet; verified for 2026.

More Website Builders MCPs

Other tools in the same category worth evaluating.

Hostinger
Official

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.

hostinger, domains, web-hosting, dns
10 minMedium
Webflow
Official

Edit a live Webflow site from an agent — CMS collections, pages, and the Designer canvas over OAuth.

webflow, website-builders, cms, no-code
10 minMedium
Sanity
Official

Query and edit Sanity content over a remote OAuth MCP — no token in a config file.

sanity, cms, headless-cms, groq
5 minLow

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 →