Strapi MCP Server
AI-powered content management for Strapi CMS.
What it can do
- List Content Types: List all user-defined content types registered in the Strapi instance. Fetches types from the Content-Type Builder API filtered to the api:: namespace. Use this as a first step to
- Get Content Type Schema: Retrieve the detailed field schema for a specific Strapi content type. Returns all field definitions including types, required status, and relations as a readable list. Use th
- Get Components: List all reusable components defined in the Strapi instance. Components are shared field groups embedded in multiple content types like SEO metadata or address blocks. Use this to unde
What data it sees
Do you need an account
No: the server works without sign-in
AI-powered content management for Strapi CMS. Full CRUD operations, media upload, publishing workflow, i18n support, and bulk operations across Strapi v4 and v5 with automatic version detection.
How to connect
How to connect Strapi MCP Server to Claude
The server address to paste into Claude settings:
https://strapi-mcp--alex2zimmermann-ux.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Strapi MCP Server to ChatGPT
The server address to paste into ChatGPT settings:
https://strapi-mcp--alex2zimmermann-ux.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Strapi MCP Server to Cursor
The server address to paste into Cursor settings:
https://strapi-mcp--alex2zimmermann-ux.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (20)
Raw names from tools/list. Only developers need these.
| list_content_types | List all user-defined content types registered in the Strapi instance. Fetches types from the Content-Type Builder API filtered to the api:: namespace. Use this as a first step to discover available content before querying entries. |
| get_content_type_schema | Retrieve the detailed field schema for a specific Strapi content type. Returns all field definitions including types, required status, and relations as a readable list. Use this before creating or updating entries to understand the expected data structure. |
| get_components | List all reusable components defined in the Strapi instance. Components are shared field groups embedded in multiple content types like SEO metadata or address blocks. Use this to understand available components before referencing them in schemas or entries. |
| list_entries | List content entries from a Strapi content type with pagination, sorting, and filtering support. Returns entries as a readable markdown list with metadata and pagination info. Use this to browse and explore content with filters and sort orders. |
| get_entry | Retrieve a single content entry by its numeric ID with full field and relation data. Returns the complete entry including all populated relations and metadata fields. Use this when you need full details of a specific entry found via list_entries or search. |
| create_entry | Create a new content entry in the specified Strapi content type from a JSON data string. Accepts field values matching the content type schema for title, content, relations, and more. Use get_content_type_schema first to understand required fields and types. |
| update_entry | Update an existing content entry by its ID with partial or full field data as a JSON string. Only the fields included in the data will be modified while other fields remain unchanged. Use get_entry first to see current values before making changes. |
| delete_entry | Permanently delete a content entry by its ID from the specified content type. This action is irreversible and removes the entry and its associated data from Strapi. Use get_entry first to verify you are deleting the correct entry. |
| upload_media | Upload a file to the Strapi media library from a public URL or base64-encoded data. Supports images, documents, videos, and any file type allowed by Strapi configuration. The uploaded file can then be linked to content entries via relation fields. |
| list_media | List files in the Strapi media library with pagination support. Returns file details including name, URL, MIME type, dimensions, and metadata for each asset. Use this to browse available media before linking files to content entries. |
| delete_media | Permanently delete a file from the Strapi media library by its numeric ID. This removes the file from storage and breaks any references to it in content entries. Use list_media first to find the correct file ID before deleting. |
| publish_entry | Publish a draft content entry to make it publicly visible via the Strapi API. On Strapi v5 uses the dedicated publish action endpoint, on v4 sets the publishedAt timestamp. Use list_entries with status draft to find unpublished entries. |
| unpublish_entry | Unpublish a live content entry, reverting it to draft status so it is no longer publicly visible. On Strapi v5 uses the dedicated unpublish endpoint, on v4 sets publishedAt to null. The entry data is preserved and can be re-published later. |
| discard_draft | Discard unsaved draft changes on a content entry, reverting to the last published version. This is only available on Strapi v5 which has a separate draft layer. Use this to abandon draft edits without affecting the published version. |
| list_locales | List all locales configured in the Strapi i18n plugin with their codes and display names. Returns each locale code, display name, and whether it is the default locale. Use this to discover available languages before creating or querying localized content. |
| get_localized_entry | Retrieve a specific localized version of a content entry by its ID and locale code. Returns the full entry data in the requested language including all populated relations. Use list_locales first to see available locale codes for translation workflows. |
| search_entries | Search for content entries matching a text query within a specific content type. Uses case-insensitive containment filters on string fields to find matching entries. Specify search_fields to narrow the search or leave empty to search common text fields. |
| count_entries | Count the total number of entries in a content type, optionally filtered by criteria. Makes a lightweight API call requesting only pagination metadata for efficient counting. Use this to understand dataset sizes before bulk operations or verify migrations. |
| bulk_action | Execute a bulk operation on multiple content entries: create, update, delete, publish, or unpublish. Processes each entry sequentially with per-entry error handling so individual failures do not abort the batch. Returns a detailed summary of successes and failures. |
| get_strapi_info | Retrieve comprehensive information about the connected Strapi instance including version, plugins, and content types. Detects Strapi version (v4 or v5), counts content types, lists plugins, and checks locales. Use this as the first call when connecting to a new instance. |