@lapage/strapi-mcp

@lapage/strapi-mcp

MCP server for Strapi CMS content and media management.

Category
Visit Server

README

@lapage/strapi-mcp

MCP server for Strapi CMS content and media management. Built by LaPage Digital.

Install

Run with npx:

npx -y @lapage/strapi-mcp

Or install globally:

npm install -g @lapage/strapi-mcp

Environment

Variable Required Description
STRAPI_URL Yes Strapi base URL, for example https://cms.example.com.
STRAPI_API_TOKEN Yes Strapi API token for REST content and media operations.
STRAPI_ADMIN_TOKEN Optional Token for content-manager/admin schema discovery. Falls back to STRAPI_API_TOKEN.

STRAPI_TOKEN is also accepted as an alias for STRAPI_API_TOKEN. STRAPI_API_URL is also accepted as an alias for STRAPI_URL.

Agent Config

Codex

~/.codex/config.toml or project-local .codex/config.toml:

[mcp_servers.lapage-strapi-mcp]
command = "npx"
args = ["-y", "@lapage/strapi-mcp"]
env = {
  "STRAPI_URL" = "https://cms.example.com",
  "STRAPI_API_TOKEN" = "your-strapi-api-token",
  "STRAPI_ADMIN_TOKEN" = "optional-admin-token"
}

[mcp_servers.lapage-strapi-mcp.tools.strapi_create_entry]
approval_mode = "approve"

[mcp_servers.lapage-strapi-mcp.tools.strapi_update_entry]
approval_mode = "approve"

[mcp_servers.lapage-strapi-mcp.tools.strapi_delete_entry]
approval_mode = "approve"

[mcp_servers.lapage-strapi-mcp.tools.strapi_request]
approval_mode = "approve"

[mcp_servers.lapage-strapi-mcp.tools.strapi_upload_media_from_url]
approval_mode = "approve"

[mcp_servers.lapage-strapi-mcp.tools.strapi_upload_media_from_file]
approval_mode = "approve"

[mcp_servers.lapage-strapi-mcp.tools.strapi_update_media_info]
approval_mode = "approve"

[mcp_servers.lapage-strapi-mcp.tools.strapi_delete_media]
approval_mode = "approve"

Claude Desktop

claude_desktop_config.json:

{
  "mcpServers": {
    "lapage-strapi-mcp": {
      "command": "npx",
      "args": ["-y", "@lapage/strapi-mcp"],
      "env": {
        "STRAPI_URL": "https://cms.example.com",
        "STRAPI_API_TOKEN": "your-strapi-api-token",
        "STRAPI_ADMIN_TOKEN": "optional-admin-token"
      }
    }
  }
}

Cursor

.cursor/mcp.json:

{
  "mcpServers": {
    "lapage-strapi-mcp": {
      "command": "npx",
      "args": ["-y", "@lapage/strapi-mcp"],
      "env": {
        "STRAPI_URL": "https://cms.example.com",
        "STRAPI_API_TOKEN": "your-strapi-api-token",
        "STRAPI_ADMIN_TOKEN": "optional-admin-token"
      }
    }
  }
}

Windsurf

MCP config:

{
  "mcpServers": {
    "lapage-strapi-mcp": {
      "command": "npx",
      "args": ["-y", "@lapage/strapi-mcp"],
      "env": {
        "STRAPI_URL": "https://cms.example.com",
        "STRAPI_API_TOKEN": "your-strapi-api-token",
        "STRAPI_ADMIN_TOKEN": "optional-admin-token"
      }
    }
  }
}

Tools

Server

  • strapi_health — checks Strapi reachability.
  • strapi_request — performs an arbitrary authenticated Strapi HTTP request.

Content Types

  • strapi_list_content_types — lists available Strapi content types.
  • strapi_get_content_type_schema — returns one content type schema by UID.

Entries

  • strapi_list_entries — lists entries for a collection type.
  • strapi_get_entry — gets one entry by Strapi 5 documentId or Strapi 4 id.
  • strapi_create_entry — creates an entry.
  • strapi_update_entry — updates an entry.
  • strapi_delete_entry — deletes an entry.

Strapi 5 i18n notes

locale: "all" list queries

For strapi_list_entries, this server treats locale: "all" as a request to fetch every configured Strapi locale separately and merge the results. It first calls /api/i18n/locales, then queries the collection once per locale, for example locale=en and locale=vi.

This is intentional. Some Strapi 5 REST configurations can return a bogus empty array for filtered queries such as:

{
  "filters": { "projectId": { "$eq": "lp_homepage" } },
  "locale": "all",
  "pagination": { "pageSize": 100 },
  "populate": "*"
}

while the equivalent per-locale queries return data. The merged response includes meta.localeAll.resolvedLocales so callers can see which locales were queried.

Pagination metadata for merged locale: "all" responses is synthetic. The tool applies the requested pagination to each locale request, merges the returned rows, and reports a single combined meta.pagination.total. If you need a strict cross-locale audit, query each locale explicitly and compare entries by documentId.

Localized relation updates

When updating localized entries, relation fields that point to localized content must use the numeric id for the target entry in the same locale. This matters especially for post categories. Do not attach Vietnamese posts to English category IDs just because the categories share the same documentId.

Concrete LaPage category examples:

  • EN n8n Tutorials numeric id 105 maps to VI Hướng Dẫn n8n numeric id 111.
  • EN Archived numeric id 113 maps to VI Archived numeric id 115.

For a VI post update, use [111, 115] rather than [105, 113] for those categories.

Media Library

  • strapi_list_media — lists Media Library files.
  • strapi_get_media — gets one Media Library file by id.
  • strapi_upload_media_from_url — uploads media from a URL.
  • strapi_upload_media_from_file — uploads media from a local file path.
  • strapi_update_media_info — updates media metadata.
  • strapi_delete_media — deletes a Media Library file.

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
Qdrant Server

Qdrant Server

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

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