ElmapiCMS MCP Server
Conecte o Cursor, Claude Code ou qualquer ferramenta compatível com MCP diretamente à sua instância do ElmapiCMS. Gerencie coleções, conteúdo e ativos por meio de linguagem natural.
Documentação
Servidor MCP ElmapiCMS
Um servidor MCP (Model Context Protocol) que conecta agentes de IA como Cursor e Claude Code à sua instância ElmapiCMS. Gerencie coleções, campos, entradas de conteúdo, mídias e webhooks programaticamente por meio de linguagem natural.
Configuração
| Variável | Descrição |
|---|---|
ELMAPI_BASE_URL | Raiz da API da instância (ex.: https://your-domain.com/api). ELMAPI_API_URL é aceito como alias. |
ELMAPI_API_KEY | Token Sanctum do Projeto, em Configurações do projeto → Tokens de API |
ELMAPI_PROJECT_ID | UUID do projeto, na página inicial do projeto ou em Configurações do projeto → Acesso à API |
Uso com Cursor
Adicione isto às configurações de MCP do seu Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"elmapicms": {
"command": "npx",
"args": ["-y", "@elmapicms/mcp-server"],
"env": {
"ELMAPI_BASE_URL": "https://your-domain.com/api",
"ELMAPI_API_KEY": "your-project-api-token",
"ELMAPI_PROJECT_ID": "your-project-uuid"
}
}
}
}
Uso com Claude Code
claude mcp add elmapicms \
-e ELMAPI_BASE_URL=https://your-domain.com/api \
-e ELMAPI_API_KEY=your-project-api-token \
-e ELMAPI_PROJECT_ID=your-project-uuid \
-- npx -y @elmapicms/mcp-server
Desenvolvimento local (Laravel Herd / domínios .test)
Se a sua instância usa um certificado autoassinado (ex.: Laravel Herd), talvez seja necessário:
"env": {
"ELMAPI_BASE_URL": "https://myproject.test/api",
"ELMAPI_API_KEY": "your-project-api-token",
"ELMAPI_PROJECT_ID": "your-project-uuid",
"NODE_TLS_REJECT_UNAUTHORIZED": "0"
}
Prefira corrigir a confiança da CA local (ex.: node --use-system-ca) em vez de desabilitar a verificação de TLS em configurações de produção.
Ferramentas disponíveis (40)
Projeto
get_project— Obter informações do projeto (default_locale,locales, etc.)add_project_locale— Adicionar um código de idioma ao projeto (requer admin)set_default_project_locale— Definir o idioma padrão (requer admin)
A remoção de idiomas não é exposta aqui de propósito (use Configurações do projeto → Localização no painel, ou as APIs REST/SDK).
Coleções
list_collections— Listar todas as coleçõesget_collection— Obter uma coleção com seu esquema completo de camposcreate_collection— Criar uma coleção (com criação opcional de campos em lote)update_collection— Atualizar o nome e o slug de uma coleçãoreorder_collections— Reordenar coleções
Campos
create_field— Adicionar um campo a uma coleçãoupdate_field— Atualizar um camporeorder_fields— Reordenar campos dentro de uma coleção
Entradas de conteúdo
list_entries— Listar entradas com filtragem avançada (wherecom 13 operadores, grupos OR, filtragem por relação), ordenação, paginação, contagem e primeiraget_entry— Obter uma única entrada de conteúdocreate_entry— Criar uma entrada de conteúdoupdate_entry— Atualizar uma entrada de conteúdopatch_entry— Atualizar parcialmente uma entrada (HTTP PATCH; mescla apenas os campos enviados)publish_entry— Publicar o rascunho como uma nova versão imutável (update)unpublish_entry— Limpar o ponteiro de publicação ativo; versões mantidas (update)discard_entry_draft— Descartar alterações de rascunho não publicadas (update)delete_entry— Exclusão suave de uma entrada de conteúdo (move para a lixeira)bulk_create_entries— Criar várias entradas atomicamentebulk_update_entries— Atualizar várias entradas atomicamente por UUIDbulk_delete_entries— Excluir várias entradas atomicamente por UUIDlink_entry_translation— Vincular duas entradas (idiomas diferentes) ao mesmo grupo de tradução (POST …/link-translation; requer update)list_entry_versions— Listar o histórico de versões de uma entradaget_entry_version— Buscar uma versão pelo número (inclui o payload do snapshot)revert_entry_version— Restaurar o rascunho a partir de um snapshot anterior e publicar (update)update_entry_version_label— Editar rótulo/descrição de uma versão; snapshot inalterado (update)
Formato da API de conteúdo: Cada entrada tem uuid, locale, published_at e fields (valores de campos personalizados). Os nomes dos campos estão em kebab-case. O formato de escrita Richtext segue editor.mode: string HTML ou { html, json } para lexical; string markdown quando mode é markdown. create_field / create_collection do MCP (e update_field de richtext) usam por padrão editor.mode omitido como markdown. Passe mode: 'lexical' para Lexical. Nunca escreva markdown em um campo lexical. O formato de leitura segue editor.outputFormat. Campos de relação retornam objetos de entrada aninhados (ou arrays para um-para-muitos) na leitura; na escrita, envie apenas o UUID ou id numérico da entrada relacionada (nunca o objeto aninhado completo de um get_entry anterior). get_entry suporta os parâmetros de consulta translation_locale, exclude, timestamps e state.
Salvar ≠ publicar: create_entry / update_entry / patch_entry salvam apenas o rascunho. state=published listar/obter continuam servindo o último snapshot até que você chame publish_entry.
URLs de mídia: A API retorna url, thumbnail_url e original_url como links estáveis (?variant=thumbnail ou ?variant=original opcionais).
Mídias
list_assets— Listar mídias com paginaçãoget_asset— Obter uma mídia por UUID ou nome de arquivoupload_asset— Enviar um arquivo como mídiabulk_upload_assets— Enviar vários arquivos atomicamentebulk_update_asset_metadata— Atualizar metadados de várias mídias atomicamentedelete_asset— Excluir uma mídia
Webhooks
list_webhooks— Listar todos os webhooks do projetoget_webhook— Obter um webhook por UUIDcreate_webhook— Criar um webhook para eventos de conteúdo e autenticação (name,url,events,sources;description,secret,payload,status,collection_idsopcionais)update_webhook— Atualizar um webhook por UUID (mesmos campos da criação)delete_webhook— Excluir um webhook por UUIDlist_webhook_logs— Listar logs de entrega de um webhook (uuid;paginate,pageopcionais)
Recursos
O servidor expõe três recursos de referência que os agentes de IA podem ler para obter contexto:
- Referência de tipos de campo (
elmapicms://field-types) — Referência completa de todos os 16 tipos de campo, suas opções, validações e padrões comuns. - Guia de coleções (
elmapicms://collections-guide) — Guia para trabalhar com coleções, singletons, slugs reservados e boas práticas. - Referência de consultas (
elmapicms://query-reference) — Documentação completa para consultas de conteúdo: filtroswherecom 13 operadores, grupos OR, filtragem por relação, ordenação, paginação e exemplos.
Permissões do token de API
O token de API do seu projeto precisa das permissões adequadas para as ferramentas que você deseja usar:
| Permissão | Ferramentas |
|---|---|
read | listar/obter coleções, entradas, mídias, webhooks; logs de webhook |
create | criar entradas, enviar mídias, criar webhooks |
update | atualizar entradas, publicar/despublicar/descartar rascunho, link_entry_translation, versões, atualizar metadados de mídia, atualizar webhooks |
delete | excluir entradas, excluir mídias, excluir webhooks |
admin | criar/atualizar/reordenar coleções e campos; adicionar/definir idiomas padrão do projeto (o MCP não expõe remoção de idiomas) |
Crie o token no painel do ElmapiCMS em Configurações do projeto → Tokens de API. Copie o ID do projeto da página inicial do projeto ou de Configurações do projeto → Acesso à API ao configurar este servidor.
Usando vários projetos
Cada entrada de MCP conecta-se a um único projeto ElmapiCMS. Para trabalhar com vários projetos, adicione entradas separadas na sua configuração de MCP com valores de ambiente diferentes.
Licença
MIT