strapi-mcp

strapi-mcp

Connects any MCP-compatible AI assistant to Strapi CMS for content management, media handling, internationalization, and more through natural language.

Category
Visit Server

README

Strapi MCP Server

AI-powered content management for Strapi CMS via Model Context Protocol.

PyPI version License: MIT Python 3.11+

Features

Connect any MCP-compatible AI assistant (Claude, Cursor, etc.) to your Strapi CMS. Manage content, media, locales, and more through natural language.

20 Tools across 8 categories

Category Tools Description
Schema (3) list_content_types, get_content_type_schema, get_components Discover and inspect content models
Content (5) list_entries, get_entry, create_entry, update_entry, delete_entry Full CRUD for any content type
Media (3) upload_media, list_media, delete_media Upload, browse, and manage media library
Publish (3) publish_entry, unpublish_entry, discard_draft Control publication lifecycle
i18n (2) list_locales, get_localized_entry Internationalization support
Search (2) search_entries, count_entries Full-text search and counting
Bulk (1) bulk_action Batch create, update, or delete
System (1) get_strapi_info Server info and version detection

Additional MCP capabilities

  • 3 Prompts: manage_content, content_migration, setup_guide -- guided workflows for common tasks
  • 1 Resource: strapi://help -- comprehensive usage guide with examples

Quick Start

  1. Install the server:

    pip install strapi-mcp
    
  2. Configure your Strapi connection:

    export STRAPI_BASE_URL="http://localhost:1337"
    export STRAPI_API_TOKEN="your-strapi-api-token"
    
  3. Connect from your MCP client (see Client Configuration below).

Installation

Using pip

pip install strapi-mcp

Using uvx (no install required)

uvx strapi-mcp

From source

git clone https://github.com/alexzimmermann/strapi-mcp.git
cd strapi-mcp
pip install -e .

Configuration

All settings are configured via environment variables with the STRAPI_ prefix:

Variable Default Description
STRAPI_BASE_URL http://localhost:1337 URL of your Strapi instance
STRAPI_API_TOKEN (empty) API token for authentication. Create in Strapi Admin > Settings > API Tokens.
STRAPI_API_VERSION auto Strapi version: auto, v4, or v5
STRAPI_TIMEOUT 30 HTTP request timeout in seconds
STRAPI_MAX_PAGE_SIZE 100 Maximum entries per page (1-100)

You can also place these in a .env file in your working directory.

Creating a Strapi API Token

  1. Open your Strapi Admin panel (e.g., http://localhost:1337/admin)
  2. Navigate to Settings > API Tokens
  3. Click Create new API Token
  4. Set Token type to Full Access (or customize permissions)
  5. Copy the generated token and set it as STRAPI_API_TOKEN

Client Configuration

Claude Desktop

Add to your Claude Desktop config file (claude_desktop_config.json):

{
  "mcpServers": {
    "strapi": {
      "command": "uvx",
      "args": ["strapi-mcp"],
      "env": {
        "STRAPI_BASE_URL": "http://localhost:1337",
        "STRAPI_API_TOKEN": "your-strapi-api-token"
      }
    }
  }
}

Cursor

Add to your Cursor MCP config:

{
  "mcpServers": {
    "strapi": {
      "command": "uvx",
      "args": ["strapi-mcp"],
      "env": {
        "STRAPI_BASE_URL": "http://localhost:1337",
        "STRAPI_API_TOKEN": "your-strapi-api-token"
      }
    }
  }
}

Smithery

This server is available on Smithery. Install directly from the Smithery registry or configure manually using the smithery.yaml included in this repository.

Available Tools

Tool Description
list_content_types List all available content types in the Strapi instance
get_content_type_schema Get the full field schema for a specific content type
get_components List all reusable components and their schemas
list_entries List entries with filtering, sorting, pagination, and population
get_entry Get a single entry by ID (or documentId in v5)
create_entry Create a new content entry with field data
update_entry Update an existing entry by ID
delete_entry Delete an entry by ID
upload_media Upload a file to the media library (URL or base64)
list_media Browse the media library with pagination
delete_media Delete a file from the media library
publish_entry Publish a draft entry to make it publicly available
unpublish_entry Revert a published entry to draft status
discard_draft Discard unsaved draft changes (Strapi v5 only)
list_locales List all configured locales for i18n
get_localized_entry Get an entry in a specific locale
search_entries Full-text search across entries of a content type
count_entries Count entries matching optional filter criteria
bulk_action Perform bulk create, update, or delete operations
get_strapi_info Get Strapi server info, version, and connection status

Strapi Version Support

This server supports both Strapi v4 and Strapi v5 with automatic version detection.

Auto-detection

When STRAPI_API_VERSION is set to auto (the default), the server detects your Strapi version at startup by:

  1. Fetching a content type entry and inspecting its response format
  2. Checking the admin information endpoint for a version string
  3. Defaulting to v5 if detection is inconclusive

Key differences handled automatically

Feature Strapi v4 Strapi v5
Entry format Nested data.attributes Flat with documentId
Entry identifier Numeric id String documentId
Publication status publicationState=live|preview status=published|draft
Draft discard Not available discard_draft tool

You can force a specific version by setting STRAPI_API_VERSION=v4 or STRAPI_API_VERSION=v5.

Development

Setup

git clone https://github.com/alexzimmermann/strapi-mcp.git
cd strapi-mcp
python -m venv .venv
source .venv/bin/activate  # or .venv\Scripts\activate on Windows
pip install -e ".[dev]"

Running tests

pytest

Running with coverage

pytest --cov=strapi_mcp --cov-report=term-missing

Code style

ruff check .
ruff format .

License

MIT License. See LICENSE for details.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured