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ávelDescrição
ELMAPI_BASE_URLRaiz da API da instância (ex.: https://your-domain.com/api). ELMAPI_API_URL é aceito como alias.
ELMAPI_API_KEYToken Sanctum do Projeto, em Configurações do projeto → Tokens de API
ELMAPI_PROJECT_IDUUID 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ções
  • get_collection — Obter uma coleção com seu esquema completo de campos
  • create_collection — Criar uma coleção (com criação opcional de campos em lote)
  • update_collection — Atualizar o nome e o slug de uma coleção
  • reorder_collections — Reordenar coleções

Campos

  • create_field — Adicionar um campo a uma coleção
  • update_field — Atualizar um campo
  • reorder_fields — Reordenar campos dentro de uma coleção

Entradas de conteúdo

  • list_entries — Listar entradas com filtragem avançada (where com 13 operadores, grupos OR, filtragem por relação), ordenação, paginação, contagem e primeira
  • get_entry — Obter uma única entrada de conteúdo
  • create_entry — Criar uma entrada de conteúdo
  • update_entry — Atualizar uma entrada de conteúdo
  • patch_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 atomicamente
  • bulk_update_entries — Atualizar várias entradas atomicamente por UUID
  • bulk_delete_entries — Excluir várias entradas atomicamente por UUID
  • link_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 entrada
  • get_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ção
  • get_asset — Obter uma mídia por UUID ou nome de arquivo
  • upload_asset — Enviar um arquivo como mídia
  • bulk_upload_assets — Enviar vários arquivos atomicamente
  • bulk_update_asset_metadata — Atualizar metadados de várias mídias atomicamente
  • delete_asset — Excluir uma mídia

Webhooks

  • list_webhooks — Listar todos os webhooks do projeto
  • get_webhook — Obter um webhook por UUID
  • create_webhook — Criar um webhook para eventos de conteúdo e autenticação (name, url, events, sources; description, secret, payload, status, collection_ids opcionais)
  • update_webhook — Atualizar um webhook por UUID (mesmos campos da criação)
  • delete_webhook — Excluir um webhook por UUID
  • list_webhook_logs — Listar logs de entrega de um webhook (uuid; paginate, page opcionais)

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: filtros where com 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ãoFerramentas
readlistar/obter coleções, entradas, mídias, webhooks; logs de webhook
createcriar entradas, enviar mídias, criar webhooks
updateatualizar entradas, publicar/despublicar/descartar rascunho, link_entry_translation, versões, atualizar metadados de mídia, atualizar webhooks
deleteexcluir entradas, excluir mídias, excluir webhooks
admincriar/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