@lapage/strapi-mcp
Provides tools for managing Strapi CMS content, entries, media library, and schema discovery via REST API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@lapage/strapi-mcplist all blog posts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@lapage/strapi-mcp
MCP server for Strapi CMS content and media management. Built by LaPage Digital.
Install
Run with npx:
npx -y @lapage/strapi-mcpOr install globally:
npm install -g @lapage/strapi-mcpRelated MCP server: Maasy MCP
Environment
Variable | Required | Description |
| Yes | Strapi base URL, for example |
| Yes | Strapi API token for REST content and media operations. |
| Optional | Token for content-manager/admin schema discovery. Falls back to |
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 5documentIdor Strapi 4id.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 Tutorialsnumeric id105maps to VIHướng Dẫn n8nnumeric id111.EN
Archivednumeric id113maps to VIArchivednumeric id115.
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.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zhuylanz/lapage-strapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server