strapi-mcp logo

strapi-mcp

by l33tdawg

The strapi-mcp server is a TypeScript-based MCP server that integrates with Strapi CMS. It provides access to Strapi content types and entries through the MCP protocol.

View on GitHub

Last updated: N/A

What is strapi-mcp?

A MCP server for Strapi CMS, allowing access to content types and entries via the MCP protocol.

How to use strapi-mcp?

  1. Build the server with npm run build. 2. Configure your Strapi instance and get an API token. 3. Add the server config to Claude Desktop, providing the path to the built server and necessary environment variables (STRAPI_URL, STRAPI_API_TOKEN, STRAPI_DEV_MODE). 4. Use the provided code snippets with Claude to interact with Strapi content.

Key features of strapi-mcp

  • Access Strapi content types as resources via strapi:// URIs

  • Create, read, update, and delete content entries

  • Supports filtering, pagination, sorting, and population of relations for content retrieval

  • Provides tools for listing content types, getting entries, creating entries, updating entries, deleting entries, and uploading media

Use cases of strapi-mcp

  • Listing available content types in Strapi

  • Retrieving specific content entries based on filters and pagination

  • Creating new content entries within Strapi

  • Updating existing content entries

  • Uploading media files to Strapi

FAQ from strapi-mcp

How do I get a Strapi API token?

Log in to your Strapi admin panel, go to Settings > API Tokens, and create a new API token with the desired permissions.

What environment variables are required?

STRAPI_API_TOKEN is required. STRAPI_URL is optional (defaults to http://localhost:1337). STRAPI_DEV_MODE is optional (defaults to false).

How do I debug the MCP server?

Use the MCP Inspector by running npm run inspector. It will provide a URL to access debugging tools in your browser.

What URI formats are supported?

The server supports strapi://content-type/api::article.article to get all articles, strapi://content-type/api::article.article/1 to get article with ID 1, and strapi://content-type/api::article.article?filters={"title":{"$contains":"hello"}} to get filtered articles.

How do I upload media?

Use the upload_media tool with arguments for fileData (base64-encoded data), fileName, and fileType.