Strapi MCP
Um servidor MCP para o Strapi CMS, fornecendo acesso a tipos de conteúdo e entradas através do protocolo MCP.
Documentação
Strapi MCP
Um servidor MCP para Strapi CMS, fornecendo acesso a tipos de conteúdo e entradas através do Model Context Protocol.
Visão Geral
Este servidor MCP integra-se com qualquer instância do Strapi CMS para fornecer:
- Acesso aos tipos de conteúdo do Strapi como recursos
- Ferramentas para criar e atualizar tipos de conteúdo no Strapi
- Ferramentas para gerenciar entradas de conteúdo (criar, ler, atualizar, excluir)
- Suporte para Strapi em modo de desenvolvimento
- Tratamento robusto de erros com diagnósticos claros e orientações de solução de problemas
- Validação de configuração para prevenir problemas comuns de configuração
Configuração
Variáveis de Ambiente
É recomendado usar um arquivo .env na raiz do projeto para armazenar suas credenciais.
STRAPI_URL: A URL da sua instância Strapi (padrão:http://localhost:1337)STRAPI_ADMIN_EMAIL: O endereço de e-mail de um usuário administrador do Strapi (Recomendado para funcionalidade completa, especialmente acesso ao schema).STRAPI_ADMIN_PASSWORD: A senha do usuário administrador do Strapi (Recomendado).STRAPI_API_TOKEN: (Fallback Opcional) Um token de API. Pode ser usado se as credenciais de administrador não forem fornecidas, mas pode ter permissões limitadas.STRAPI_DEV_MODE: Defina como"true"para habilitar recursos do modo de desenvolvimento (padrão:false).
Exemplo de arquivo .env:
STRAPI_URL=http://localhost:1337
STRAPI_ADMIN_EMAIL=your_admin_email@example.com
STRAPI_ADMIN_PASSWORD=your_admin_password
# STRAPI_API_TOKEN=your_api_token_here # Optional
Importante:
- Adicione
.envao seu arquivo.gitignorepara evitar o commit de credenciais - Evite valores de exemplo como
"strapi_token"- o servidor valida e rejeita placeholders comuns
Instalação
Instalar a partir do npm (Recomendado)
npm install strapi-mcp
Instalar a partir do código-fonte (Desenvolvimento)
Para os recursos de desenvolvimento mais recentes:
git clone https://github.com/l33tdawg/strapi-mcp.git
cd strapi-mcp
npm install
npm run build
Execução
Método Recomendado (usando Configuração MCP do Cursor):
Para usuários do Cursor, configure o servidor strapi-mcp no seu arquivo ~/.cursor/mcp.json:
"strapi-mcp": {
"command": "npx",
"args": ["strapi-mcp"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_ADMIN_EMAIL": "your_admin_email@example.com",
"STRAPI_ADMIN_PASSWORD": "your_admin_password"
}
}
Se você instalou a partir do código-fonte, use o caminho direto:
"strapi-mcp": {
"command": "node",
"args": ["/path/to/strapi-mcp/build/index.js"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_ADMIN_EMAIL": "your_admin_email@example.com",
"STRAPI_ADMIN_PASSWORD": "your_admin_password"
}
}
O Cursor gerenciará o ciclo de vida do servidor automaticamente quando as ferramentas strapi-mcp forem usadas.
Método Alternativo (usando arquivo .env):
Certifique-se de ter compilado o projeto (npm run build). Em seguida, execute o servidor usando Node.js v20.6.0+ com a flag --env-file:
node --env-file=.env build/index.js
Alternativa (usando variáveis de ambiente diretamente):
export STRAPI_URL=http://localhost:1337
export STRAPI_ADMIN_EMAIL=your_admin_email@example.com
export STRAPI_ADMIN_PASSWORD=your_admin_password
# export STRAPI_API_TOKEN=your-api-token # Optional fallback
export STRAPI_DEV_MODE=true # optional
# Run the globally installed package (if installed via npm install -g)
strapi-mcp
# Or run the local build directly
node build/index.js
Recursos
- Listar e ler tipos de conteúdo
- Obter, criar, atualizar e excluir entradas
- Enviar arquivos de mídia
- Conectar e desconectar relações
- Obter schemas de tipos de conteúdo
Changelog
0.2.3 - 2025-07-25
- CORREÇÃO CRÍTICA: Corrigido problema de timeout nas ferramentas de relação - connect_relation e disconnect_relation agora tratam adequadamente erros de validação em vez de expirar
- TRATAMENTO DE ERROS MELHORADO: Todos os erros de validação agora retornam mensagens de erro adequadas em vez de causar timeouts nas ferramentas
0.2.2 - 2025-07-25
- FERRAMENTAS DE RELAÇÃO MELHORADAS: Tratamento de erros aprimorado para
connect_relationedisconnect_relationcom mensagens detalhadas de validação e solução de problemas - CREATE_COMPONENT CORRIGIDO: Corrigido bug de validação de parâmetros - agora valida adequadamente parâmetros individuais em vez de um único objeto
- MELHORES DIAGNÓSTICOS DE ERRO: Adicionadas mensagens de erro específicas para campos de relação inválidos, entradas inexistentes e IDs malformados
- Todas as 20 ferramentas agora funcionam 100% com tratamento robusto de erros e validação
0.2.0 - 2025-07-25
- CORREÇÃO CRÍTICA DE BUG: Corrigido validateStrapiConnection causando erro de "status de resposta indefinido"
- PROBLEMA DE CONEXÃO MCP RESOLVIDO: Corrigido o problema de "luz verde mas não funciona" com ferramentas de IA
- TRATAMENTO DE ERROS MELHORADO: Melhor lógica de validação de conexão com tratamento adequado de autenticação de administrador
- Os usuários devem atualizar para esta versão se estiverem enfrentando problemas de conexão MCP com ferramentas de IA
0.1.9 - 2025-07-02
- CORREÇÃO DE ESTOURO DA JANELA DE CONTEXTO: Adicionados limites de tamanho e filtragem de resposta para evitar que arquivos base64 sobrecarreguem a janela de contexto
- NOVA FERRAMENTA: Adicionado
upload_media_from_path- Envie arquivos de caminhos locais (máx. 10MB) para evitar problemas de contexto base64 - UPLOAD_MEDIA MELHORADO: Adicionado limite de tamanho base64 de 1MB (~750KB de arquivo) com mensagens de erro claras sobre estouro de contexto
- LOGGING MELHORADO: Dados base64 truncados nos logs para evitar spam de log e estouro de contexto
- FILTRAGEM DE RESPOSTA: Filtra automaticamente strings base64 grandes das respostas da API para evitar estouro de eco
0.1.8 - 2025-06-12
- CORREÇÃO MAJOR DE BUG: Substituídas falhas silenciosas por mensagens de erro descritivas quando tipos de conteúdo ou entradas não podem ser obtidos
- Validação de Configuração Adicionada: Detecta tokens de API de exemplo e encerra com mensagens de erro úteis
- Validação de Conexão Adicionada: Testa a conectividade do Strapi antes de tentar operações com diagnósticos de erro específicos
- Tratamento de Erros Aprimorado: Diagnósticos de erro abrangentes que distinguem entre coleções vazias legítimas e erros reais
- Solução de Problemas Melhorada: Todas as mensagens de erro incluem etapas específicas para resolver problemas comuns de configuração
0.1.7 - 2025-05-17
- Ferramentas
publish_entryeunpublish_entryadicionadas: Gerenciamento completo do ciclo de vida do conteúdo - Gerenciamento de Componentes Adicionado:
list_components,get_component_schema,create_component,update_component - Ferramenta
delete_content_typeadicionada: Exclua tipos de conteúdo existentes via API do Content-Type Builder - Autenticação de Administrador Aprimorada: Melhor tratamento de erros e gerenciamento de tokens para todas as operações da API
0.1.6
- Ferramenta
create_content_typeadicionada: Permite criar novos tipos de conteúdo via API do Content-Type Builder (requer credenciais de administrador). - Credenciais de Administrador Priorizadas: Lógica atualizada para preferir e-mail/senha de administrador para obter tipos de conteúdo e schemas, melhorando a confiabilidade.
- Documentação Atualizada: Esclarecidos métodos de autenticação e procedimentos recomendados de execução.
0.1.5
- Descoberta de tipos de conteúdo melhorada com múltiplos métodos de fallback
- Tratamento de erros e logging mais robustos adicionados
- Inferência de schema aprimorada para tipos de conteúdo
0.1.4
- Tratamento de erros melhorado com códigos de erro mais específicos
- Adicionados códigos de erro
ResourceNotFoundeAccessDenied - Melhores mensagens de erro para erros comuns de API
0.1.3
- Lançamento público inicial
Licença
MIT
strapi-mcp MCP Server
Um servidor MCP para o seu Strapi CMS
Este é um servidor MCP baseado em TypeScript que se integra ao Strapi CMS. Ele fornece acesso a tipos de conteúdo e entradas do Strapi através do protocolo MCP, permitindo que você:
- Acesse tipos de conteúdo do Strapi como recursos
- Crie, leia, atualize e exclua entradas de conteúdo
- Gerencie seu conteúdo Strapi através de ferramentas MCP
Recursos
Recursos
- Liste e acesse tipos de conteúdo via URIs
strapi://content-type/ - Cada tipo de conteúdo expõe suas entradas como JSON
- Tipo MIME Application/JSON para acesso estruturado a conteúdo
Ferramentas
list_content_types- Liste todos os tipos de conteúdo disponíveis no Strapiget_entries- Obtenha entradas para um tipo de conteúdo específico com filtragem, paginação, ordenação e população de relações opcionaisget_entry- Obtenha uma entrada específica por IDcreate_entry- Crie uma nova entrada para um tipo de conteúdoupdate_entry- Atualize uma entrada existentedelete_entry- Exclua uma entradaupload_media- Envie um arquivo de mídia para o Strapi (máx. ~750KB devido aos limites de contexto base64)upload_media_from_path- Envie um arquivo de mídia de um caminho de arquivo local (máx. 10MB, evita estouro de contexto)get_content_type_schema- Obtenha o schema (campos, tipos, relações) para um tipo de conteúdo específico.connect_relation- Conecte entradas relacionadas ao campo de relação de uma entrada.disconnect_relation- Desconecte entradas relacionadas do campo de relação de uma entrada.create_content_type- Crie um novo tipo de conteúdo usando a API do Content-Type Builder (Requer privilégios de Administrador).publish_entry- Publique uma entrada específica.unpublish_entry- Despublique uma entrada específica.list_components- Liste todos os componentes disponíveis no Strapi.get_component_schema- Obtenha o schema para um componente específico.create_component- Crie um novo componente.update_component- Atualize um componente existente.
Recursos Avançados
Filtragem, Paginação e Ordenação
A ferramenta get_entries suporta opções avançadas de consulta:
{
"contentType": "api::article.article",
"filters": {
"title": {
"$contains": "hello"
}
},
"pagination": {
"page": 1,
"pageSize": 10
},
"sort": ["title:asc", "createdAt:desc"],
"populate": ["author", "categories"]
}
URIs de Recursos
Os recursos podem ser acessados com vários formatos de URI:
strapi://content-type/api::article.article- Obtenha todos os artigosstrapi://content-type/api::article.article/1- Obtenha o artigo com ID 1strapi://content-type/api::article.article?filters={"title":{"$contains":"hello"}}- Obtenha artigos filtrados
Publicando e Despublicando Conteúdo
As ferramentas publish_entry e unpublish_entry fornecem controle sobre o ciclo de vida do conteúdo:
{
"contentType": "api::article.article",
"id": "1"
}
Essas ferramentas utilizam os caminhos da API de administração para ações de publicação/despublicação, com fallback para atualizar diretamente o campo publishedAt se as permissões de administrador não estiverem disponíveis.
Gerenciamento de Componentes
Os componentes do Strapi podem ser gerenciados com as seguintes ferramentas:
list_components: Obtenha todos os componentes disponíveisget_component_schema: Visualize a estrutura de um componente específicocreate_component: Crie um novo componente com campos especificadosupdate_component: Modifique um componente existente
Exemplo de criação de um componente:
{
"componentData": {
"displayName": "Security Settings",
"category": "security",
"icon": "shield",
"attributes": {
"enableTwoFactor": {
"type": "boolean",
"default": false
},
"passwordExpiration": {
"type": "integer",
"min": 0
}
}
}
}
Desenvolvimento
Instale as dependências:
npm install
Compile o servidor:
npm run build
Para desenvolvimento com recompilação automática:
npm run watch
Instalação
Para instruções detalhadas passo a passo sobre como implantar e testar este servidor MCP, consulte o arquivo DEPLOYMENT.md.
Configuração rápida:
- Compile o servidor:
npm run build - Configure sua instância Strapi e obtenha um token de API
- Adicione a configuração do servidor ao Claude Desktop:
No MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
No Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"strapi-mcp": {
"command": "npx",
"args": ["strapi-mcp"],
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_ADMIN_EMAIL": "your_admin_email@example.com",
"STRAPI_ADMIN_PASSWORD": "your_admin_password"
}
}
}
}
Se você instalou a partir do código-fonte, use o caminho direto:
{
"mcpServers": {
"strapi-mcp": {
"command": "/path/to/strapi-mcp/build/index.js",
"env": {
"STRAPI_URL": "http://localhost:1337",
"STRAPI_ADMIN_EMAIL": "your_admin_email@example.com",
"STRAPI_ADMIN_PASSWORD": "your_admin_password"
}
}
}
}
Variáveis de Ambiente
STRAPI_URL(opcional): A URL da sua instância Strapi (padrão: http://localhost:1337)STRAPI_ADMIN_EMAIL&STRAPI_ADMIN_PASSWORD(Recomendado): Credenciais de um usuário administrador do Strapi. Necessárias para funcionalidade completa, como obter schemas de tipos de conteúdo.STRAPI_API_TOKEN(Fallback Opcional): Seu token de API do Strapi. Pode ser usado se as credenciais de administrador não forem fornecidas, mas a funcionalidade pode ser limitada com base nas permissões do token.STRAPI_DEV_MODE(opcional): Defina como "true" para habilitar recursos do modo de desenvolvimento (padrão: false)
Prioridade de Autenticação
O servidor prioriza os métodos de autenticação nesta ordem:
- E-mail e Senha de Administrador (
STRAPI_ADMIN_EMAIL,STRAPI_ADMIN_PASSWORD) - Token de API (
STRAPI_API_TOKEN)
É fortemente recomendado usar Credenciais de Administrador para obter os melhores resultados.
Obtendo Credenciais do Strapi
- Credenciais de Administrador: Use o e-mail e a senha de um Super Admin existente ou crie um usuário administrador dedicado no painel administrativo do Strapi (Configurações > Painel de Administração > Usuários).
- Token de API: (Fallback Opcional)
- Faça login no painel administrativo do Strapi
- Vá para Configurações > Tokens de API
- Clique em "Criar novo Token de API"
- Defina um nome, descrição e tipo de token (preferencialmente "Acesso total")
- Copie o token gerado e use-o na configuração do seu servidor MCP
Solução de Problemas
Problemas Comuns e Soluções:
1. Erro de Token de API de Exemplo
[Error] STRAPI_API_TOKEN appears to be a placeholder value...
Solução: Substitua "strapi_token" ou "your-api-token-here" por um token de API real do painel administrativo do Strapi.
2. Erro de Conexão Recusada
Cannot connect to Strapi instance: Connection refused. Is Strapi running at http://localhost:1337?
Solução:
- Certifique-se de que o Strapi está em execução:
npm run developouyarn develop - Verifique se a URL em
STRAPI_URLestá correta - Verifique se seu banco de dados (MySQL/PostgreSQL) está em execução
3. Falha na Autenticação
Cannot connect to Strapi instance: Authentication failed. Check your API token or admin credentials.
Solução:
- Verifique se seu token de API tem permissões adequadas (preferencialmente "Acesso total")
- Verifique se o e-mail/senha de administrador estão corretos
- Certifique-se de que o usuário administrador existe e está ativo
4. Estouro da Janela de Contexto com Uploads de Arquivos
Error: Context window overflow due to large base64 strings
Problema: Arquivos codificados em Base64 podem ser extremamente grandes (até imagens pequenas podem ter 50-100KB de texto), causando estouro da janela de contexto. Soluções:
- Use
upload_media_from_pathem vez deupload_mediapara arquivos maiores que ~500KB - Reduza o tamanho dos arquivos antes do upload (comprima imagens, reduza a resolução)
- Use arquivos menores - a ferramenta
upload_mediatem um limite de 1MB em base64 (~750KB de arquivo)
5. Tipos de Conteúdo Falsos (api::data.data, api::error.error)
Este problema foi corrigido na v0.1.8. Se você ainda os vir, pode estar usando uma versão mais antiga.
6. Resultados Vazios vs Erros
A partir da v0.1.8, o servidor agora distingue claramente entre:
- Coleções vazias (o tipo de conteúdo existe, mas não tem entradas) → Retorna
{"data": [], "meta": {...}} - Erros reais (o tipo de conteúdo não existe, falha de autenticação, etc.) → Lança erro descritivo com etapas de solução de problemas
7. Erros de Permissão
Access forbidden. Your API token may lack necessary permissions.
Solução:
- Use credenciais de administrador em vez de token de API para funcionalidade completa
- Se usar token de API, garanta que ele tenha permissões de "Acesso total"
- Verifique se o tipo de conteúdo permite acesso público ao usar token de API limitado
Depuração
Como os servidores MCP se comunicam via stdio, a depuração pode ser desafiadora. Recomendamos usar o MCP Inspector, que está disponível como script de pacote:
npm run inspector
O Inspector fornecerá uma URL para acessar as ferramentas de depuração no seu navegador.
Exemplos de Uso
Uma vez que o servidor MCP esteja configurado e em execução, você pode usá-lo com o Claude para interagir com seu CMS Strapi. Aqui estão alguns exemplos:
Listando Tipos de Conteúdo
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "list_content_types",
arguments: {}
)
Obtendo Entradas
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "get_entries",
arguments: {
"contentType": "api::article.article",
"filters": {
"title": {
"$contains": "hello"
}
},
"pagination": {
"page": 1,
"pageSize": 10
},
"sort": ["title:asc"]
}
)
Criando uma Entrada
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "create_entry",
arguments: {
"contentType": "api::article.article",
"data": {
"title": "My New Article",
"content": "This is the content of my article.",
"publishedAt": "2023-01-01T00:00:00.000Z"
}
}
)
Enviando Mídia
Método 1: Upload em Base64 (apenas arquivos pequenos)
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "upload_media",
arguments: {
"fileData": "base64-encoded-data-here",
"fileName": "image.jpg",
"fileType": "image/jpeg"
}
)
Método 2: Upload por caminho de arquivo (recomendado para arquivos maiores)
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "upload_media_from_path",
arguments: {
"filePath": "/path/to/your/image.jpg"
}
)
Conectando Relações
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "connect_relation",
arguments: {
"contentType": "api::article.article",
"id": "1",
"relationField": "authors",
"relatedIds": [2, 3]
}
)
Desconectando Relações
use_mcp_tool(
server_name: "strapi-mcp",
tool_name: "disconnect_relation",
arguments: {
"contentType": "api::article.article",
"id": "1",
"relationField": "authors",
"relatedIds": [3]
}
)
Criando um Tipo de Conteúdo
use_mcp_tool(
server_name: "strapi-mcp-local",
tool_name: "create_content_type",
arguments: {
"displayName": "My New Product",
"singularName": "product",
"pluralName": "products",
"kind": "collectionType",
"description": "Represents products in the store",
"draftAndPublish": true,
"attributes": {
"name": { "type": "string", "required": true },
"description": { "type": "text" },
"price": { "type": "decimal", "required": true },
"stock": { "type": "integer" }
}
}
)
Atualizando um Tipo de Conteúdo
use_mcp_tool(
server_name: "strapi-mcp-local",
tool_name: "update_content_type",
arguments: {
"contentType": "api::speaker.speaker",
"attributes": {
"isHighlightSpeaker": {
"type": "boolean",
"default": false
},
"newTextField": {
"type": "string"
}
}
}
)
Acessando Recursos