Ethora MCP CLI
SDK de chat e mensagens e plataforma em nuvem para seus aplicativos. Suporta agentes de IA e bots RAG.
Documentação
Ethora MCP Server (Model Context Protocol)
Instalação com um clique para Cursor e VS Code (botões acima). Para Claude Code, Claude Desktop, GitHub Copilot, Gemini CLI, Codex CLI, Windsurf e Cline, consulte Usando com clientes MCP abaixo.
Um CLI/servidor MCP (Model Context Protocol) que conecta clientes MCP populares à plataforma Ethora — uma plataforma de chat e mensagens de código aberto com um framework integrado de agente de IA / chatbot. Ele roda localmente na máquina do desenvolvedor via stdio, em vez de um serviço Ethora hospedado.
Use-o a partir do Cursor, VS Code MCP, Claude Desktop ou Windsurf/Cline para gerenciar aplicativos e salas de chat, transmitir mensagens, implantar agentes de IA / chatbots com fontes RAG e automatizar fluxos de provisionamento B2B. (Ferramentas de carteira ERC-20 também estão incluídas — veja a lista de ferramentas abaixo.)
Parte do ecossistema Ethora SDK — veja todos os SDKs, ferramentas e aplicativos de exemplo. Acompanhe as atualizações entre SDKs nas Notas de versão.
- npm: https://www.npmjs.com/package/@ethora/mcp-server
- API Ethora padrão:
https://api.chat.ethora.com/v1(Swagger: https://api.chat.ethora.com/api-docs/#/)
✨ O que você obtém
- Fale com a plataforma Ethora diretamente do seu IDE ou cliente de agente de IA (Cursor, VS Code MCP, Claude Desktop, Windsurf / Cline).
- Fluxos de autenticação de usuário (login/registro, arquivos, endpoints de proprietário/admin) e fluxos B2B / app-token (provisionamento de tenant, jobs de broadcast, lotes assíncronos de usuários, configuração de bot de IA).
- Receitas, prompts e geradores integrados para os fluxos de trabalho Ethora mais comuns (configuração de componente de chat Vite/Next, bootstrap B2B, habilitação de bot de IA, fontes RAG).
- Envelope de resposta padrão de ferramenta (
{ ok, ts, meta, data | error }) para que o código do agente possa avaliar sucesso/falha de forma consistente.
🚦 Só testando? (início rápido de 60 segundos)
Não leia os modos de autenticação ainda. Depois que o servidor estiver conectado no seu cliente, peça ao seu agente para executar, em ordem:
ethora-doctor— confirma que o servidor está ativo e consegue acessar a API Ethora. Nenhuma credencial é necessária.ethora-configurecom seuappJwt→ethora-auth-use-user→ethora-user-logincom um e-mail + senha.ethora-app-list— pronto; isso lista seus aplicativos.
Esse é o caminho do desenvolvedor local. Precisa de automação no lado do servidor? Vá para modo B2B. Perdeu-se em algum ponto? Chame ethora-help — ele lê seu estado atual e informa a próxima chamada.
🔐 Dois modos de uso típicos
1) Modo de autenticação de usuário
Ideal para:
- desenvolvedores testando Ethora localmente
- administradores de tenant / proprietários de aplicativos usando MCP manualmente
- fluxos que começam com
ethora-user-login
Como funciona:
- configure
ETHORA_APP_JWTuma vez para o bootstrap de login/registro - alterne para
ethora-auth-use-user - chame
ethora-user-login - use ferramentas de autenticação de usuário, como arquivos e endpoints legados de proprietário/admin
2) Modo B2B
Ideal para:
- integrações permanentes de backend
- fluxos de provisionamento de parceiros
- agentes autônomos operando Ethora sem uma sessão de usuário humano
Como funciona:
- configure
ETHORA_B2B_TOKEN - alterne para
ethora-auth-use-b2bpara rotas/v2/apps/:appId/...explícitas de ator de tenant - opcionalmente, alterne para
ethora-auth-use-appapósethora-app-selectquando quiser rotas de conveniência com escopo de aplicativo alimentadas porappToken
Regra prática:
- o primeiro uso local geralmente começa com User Auth
- automação repetível geralmente começa com B2B e depois costuma migrar para o modo app-token para um aplicativo selecionado
Prompts e recursos (P2: documentação voltada ao desenvolvedor)
- Recursos (documentos carregáveis no contexto)
ethora://docs/auth-map— appJwt vs appToken vs b2bTokenethora://docs/chat-component/quickstart— início rápido Vite/Next + substituição de tokens de demonstraçãoethora://docs/sdk-backend/quickstart— início rápido de integração de backendethora://docs/recipes— sequências comuns de ferramentas (broadcast/sources/files/bot)
- Prompts
ethora-auth-mapethora-vite-quickstartethora-nextjs-quickstartethora-backend-sdk-quickstartethora-recipes
Geradores (sem shell, sem gravação de arquivos)
ethora-generate-chat-component-app-tsx— snippetApp.tsxpronto para colar para@ethora/chat-componentethora-generate-env-examples— modelos.env.examplepara:- componente de chat de frontend
- integração de SDK de backend
- uso de MCP (
ETHORA_API_URL,ETHORA_APP_JWT,ETHORA_B2B_TOKEN)
ethora-generate-b2b-bootstrap-runbook— runbook mínimo de "chame estas ferramentas MCP em ordem" para bootstrap B2B
Dica: para listar receitas executáveis sem chamar ethora-help, chame ethora-run-recipe com goal: "auto" e omita recipeId.
-
Sessão / Configuração
ethora-configure— define a URL da API mais App JWT / token B2B / appToken para esta sessão MCPethora-status— mostra a URL da API configurada, o modo de autenticação ativo e quais credenciais estão presentesethora-help— ajuda orientada a tarefas (próximas chamadas recomendadas + "receitas de um clique" com base no estado atual)ethora-run-recipe— executa uma receita integrada por id (etapas sequenciais; sem shell, sem gravação de arquivos)ethora-doctor— valida a configuração + faz ping na API Ethora configurada para uso de usuário e B2Bethora-app-select— seleciona o appId atual e opcionalmente define o appTokenethora-auth-use-app— alterna para o modo de autenticação app-token para operações com escopo de aplicativoethora-auth-use-user— alterna para o modo de autenticação de sessão de usuárioethora-auth-use-b2b— alterna para o modo de autenticação B2Bx-custom-tokende ator de tenant
-
Chats (v2)
ethora-chats-broadcast-v2— enfileira job de broadcast usando autenticação app-token ou B2B +appIdexplícitoethora-chats-broadcast-job-v2— obtém status/resultados do job de broadcast usando autenticação app-token ou B2B +appIdexplícitoethora-wait-broadcast-job-v2— faz polling do job de broadcast até concluído/falho usando autenticação app-token ou B2B +appIdexplícitoethora-chats-message-v2— envia uma mensagem de teste/automação pela superfície de chat do aplicativo (requer autenticação app-token)ethora-chats-history-v2— lê o histórico persistido de automação/teste para sessões privadas ou em grupo (requer autenticação app-token)
-
Usuários (lote assíncrono v2)
ethora-users-batch-create-v2— cria job de lote assíncrono de usuários (requer autenticação B2B)ethora-users-batch-job-v2— obtém status/resultados do job de lote de usuários (requer autenticação B2B)ethora-wait-users-batch-job-v2— faz polling do job de lote de usuários até concluído/falho (requer autenticação B2B)
-
Arquivos (v2)
-
Bot / Agente (v2)
-
ethora-bot-get-v2— obtém status/configurações do bot usando autenticação app-token ou B2B +appIdexplícito -
ethora-bot-update-v2— atualiza configurações do bot usando autenticação app-token ou B2B +appIdexplícito -
ethora-bot-enable-v2— habilita o bot usando autenticação app-token ou B2B +appIdexplícito -
ethora-bot-disable-v2— desabilita o bot usando autenticação app-token ou B2B +appIdexplícito -
ethora-bot-widget-v2— obtém configuração de widget/embed e metadados da URL pública do widget (autenticação app-token) -
ethora-agents-list-v2— lista agentes salvos reutilizáveis para o proprietário atual do aplicativo (autenticação app-token) -
ethora-agents-get-v2— obtém um agente salvo reutilizável (autenticação app-token) -
ethora-agents-create-v2— cria um agente salvo reutilizável (autenticação app-token) -
ethora-agents-update-v2— atualiza um agente salvo reutilizável (autenticação app-token) -
ethora-agents-clone-v2— clona um agente salvo reutilizável (autenticação app-token) -
ethora-agents-activate-v2— vincula um agente salvo como o bot ativo para o aplicativo selecionado (autenticação app-token) -
ethora-bot-message-v2— alias de compatibilidade paraethora-chats-message-v2 -
ethora-bot-history-v2— alias de compatibilidade paraethora-chats-history-v2 -
ethora-files-upload-v2— envia arquivos (requer autenticação de usuário) -
ethora-files-get-v2— lista/obtém arquivos (requer autenticação de usuário) -
ethora-files-delete-v2— exclui arquivo por id (requer autenticação de usuário)
-
-
Fontes
ethora-sources-site-crawl— rastreia uma URL (requer autenticação de usuário)ethora-sources-site-reindex— reindexa URL por urlId (requer autenticação de usuário)ethora-sources-site-delete-url— exclui por URL (requer autenticação de usuário)ethora-sources-site-delete-url-v2— exclui URLs em lote (requer autenticação de usuário)ethora-sources-docs-upload— envia documentos para ingestão (requer autenticação de usuário)ethora-sources-docs-delete— exclui documento ingerido por id (requer autenticação de usuário)ethora-sources-site-crawl-v2— rastreia uma URL usando autenticação app-token ou B2B +appIdexplícitoethora-sources-site-reindex-v2— reindexa URL por urlId usando autenticação app-token ou B2B +appIdexplícitoethora-sources-site-crawl-v2-wait— auxiliar de chamada única com timeout longo para rastreamento (autenticação app-token)ethora-sources-site-reindex-v2-wait— auxiliar de chamada única com timeout longo para reindexação (autenticação app-token)ethora-sources-site-list-v2— lista fontes de site rastreadas e tags atuais usando autenticação app-token ou B2B +appIdexplícitoethora-sources-site-tags-update-v2— define/atualiza tags para uma fonte de site rastreada usando autenticação app-token ou B2B +appIdexplícitoethora-sources-site-delete-url-v2— exclui uma URL rastreada por URL usando autenticação app-token ou B2B +appIdexplícitoethora-sources-site-delete-url-v2-batch— exclui em lote registros de fonte rastreada por id usando autenticação app-token ou B2B +appIdexplícitoethora-sources-docs-upload-v2— envia documentos para ingestão usando autenticação app-token ou B2B +appIdexplícitoethora-sources-docs-list-v2— lista documentos indexados e tags atuais usando autenticação app-token ou B2B +appIdexplícitoethora-sources-docs-tags-update-v2— define/atualiza tags para um documento indexado usando autenticação app-token ou B2B +appIdexplícitoethora-sources-docs-delete-v2— exclui documento por id usando autenticação app-token ou B2B +appIdexplícito
-
Autenticação e contas
ethora-user-login— faz login do usuário (e-mail + senha)ethora-user-register— registra usuário (e-mail + nome/sobrenome)
-
Aplicativos
ethora-app-create— cria aplicativoethora-app-update— atualiza aplicativoethora-app-delete— exclui aplicativoethora-app-list— lista aplicativosethora-b2b-app-create— cria aplicativo usando autenticação B2B (x-custom-token)ethora-b2b-app-bootstrap-ai— cria aplicativo → indexa fontes → configura/habilita bot, incluindo seleção de LLM em tempo de execução (automação B2B)ethora-app-tokens-list-v2— lista metadados de token de aplicativo (autenticação B2B)ethora-app-tokens-create-v2— cria novo token de aplicativo (retornado uma única vez) (autenticação B2B)ethora-app-tokens-rotate-v2— rotaciona token (revoga o antigo, retorna o novo uma única vez) (autenticação B2B)ethora-app-tokens-revoke-v2— revoga token por tokenId (idempotente) (autenticação B2B)ethora-b2b-app-provision— cria aplicativo + cria tokens + provisiona salas + configura bot, incluindo seleção de LLM em tempo de execução (orquestrador B2B)
-
Chat e salas
ethora-app-get-default-rooms— lista salas padrãoethora-app-get-default-rooms-with-app-id— salas para um determinado aplicativoethora-app-create-chat— cria chat para aplicativoethora-app-delete-chat— exclui chat
-
Carteira
ethora-wallet-get-balance— obtém saldoethora-wallet-erc20-transfer— envia tokens ERC-20
Os nomes de ferramentas acima refletem as áreas funcionais expostas pelo servidor. Seus nomes exatos de ferramentas podem variar ligeiramente conforme a versão; execute o "list tools" do cliente para confirmar.
📦 Instalação / Execução
Pré-requisitos
Antes de começar, certifique-se de ter o seguinte:
- Node.js instalado no seu sistema (versão recomendada 18.x ou superior).
Instalação
O servidor é distribuído como um pacote npm e normalmente é iniciado por clientes MCP via npx:
npx -y @ethora/mcp-server
Nenhuma instalação global é necessária.
🔐 Configuração (variáveis de ambiente)
Este servidor MCP suporta tanto o fluxo local de autenticação de usuário quanto o fluxo B2B no lado do servidor.
Valores principais:
- URL da API Ethora (para onde enviar solicitações)
- Ethora App JWT (usado apenas para o bootstrap de login/registro no modo de autenticação de usuário)
- Ethora B2B Token (usado para fluxos servidor-a-servidor de ator de tenant)
Você pode fornecê-los de duas formas:
- via variáveis de ambiente, ou
- em tempo de execução via a ferramenta
ethora-configure(em memória; é redefinida quando o processo MCP reinicia)
Variáveis de ambiente suportadas
ETHORA_API_URL: URL completa da API (exemplo:https://api.chat.ethora.com/v1,http://localhost:8080/v1)ETHORA_BASE_URL: URL base do host (exemplo:https://api.chat.ethora.com,http://localhost:8080)
Se fornecido, o servidor usará por padrão.../v1.ETHORA_APP_JWT: string JWT do App, geralmente começando comJWT ...ETHORA_B2B_TOKEN: token de servidor B2B para autenticaçãox-custom-token(JWT comtype=server)ETHORA_MCP_ENABLE_DANGEROUS_TOOLS: habilita ferramentas destrutivas (padrão: desabilitado). Defina comotruepara expor:- ferramentas de exclusão de app
- ferramentas de transferência de carteira
- ferramentas de exclusão em massa
Segurança: nunca commite JWTs de App, tokens B2B ou appTokens no git. Configure-os via variáveis de ambiente, no armazenamento de segredos do cliente MCP ou no seu próprio backend.
🧱 Envelope de resposta padrão (ferramentas)
Todas as ferramentas retornam JSON em um envelope consistente:
- Sucesso:
{ ok: true, ts, meta, data } - Erro:
{ ok: false, ts, meta, error }, ondeerrorinclui:code: string estável (prefira APIcode, caso contrário inferida)httpStatus: status HTTP quando a falha veio de uma chamada de APIrequestId: id de requisição/correlação se retornado pela APIhint: linha única "o que fazer a seguir"
🚀 Usando com clientes MCP
Cada cliente executa a mesma coisa — npx -y @ethora/mcp-server via stdio. Botões de um clique existem para Cursor e VS Code (no topo deste README). Para os demais, é um bloco de configuração curto ou um comando de uma linha.
Cursor
Use o botão Adicionar ao Cursor acima, ou manualmente: Configurações → MCP → Adicionar novo servidor MCP global:
{
"mcpServers": {
"ethora": {
"command": "npx",
"args": ["-y", "@ethora/mcp-server"]
}
}
}
VS Code (e GitHub Copilot)
Use o botão Instalar no VS Code acima, ou adicione um arquivo .vscode/mcp.json (nível de projeto) — observe que a chave é servers:
{
"servers": {
"ethora": {
"command": "npx",
"args": ["-y", "@ethora/mcp-server"]
}
}
}
O modo agente do GitHub Copilot no VS Code lê esse mesmo .vscode/mcp.json — sem configuração separada. (Para instalação em nível de usuário, coloque o bloco servers sob "mcp" no seu JSON de Configurações do Usuário.)
Claude Code
Um comando:
claude mcp add ethora -- npx -y @ethora/mcp-server
Adicione --scope user para disponibilizá-lo em todos os projetos. Verifique com claude mcp list.
Para pré-configurar credenciais, passe-as como variáveis de ambiente com -e (recomendado em vez da ferramenta ethora-configure — veja a nota abaixo):
claude mcp add ethora \
-e ETHORA_API_URL=https://api.chat.ethora.com/v1 \
-e ETHORA_B2B_TOKEN=<your-b2b-token> \
-- npx -y @ethora/mcp-server
Nota sobre segredos: prefira variáveis de ambiente (acima) ou o armazenamento de segredos do seu cliente MCP para credenciais. A ferramenta
ethora-configuretambém funciona, mas passa segredos como argumentos de ferramenta, o que significa que eles acabam no transcript da conversa. Use-a para testes locais rápidos, não para tokens que você valoriza.
Claude Desktop
Configurações → Desenvolvedor → Editar Config, abra claude_desktop_config.json:
{
"mcpServers": {
"ethora": {
"command": "npx",
"args": ["-y", "@ethora/mcp-server"]
}
}
}
Gemini CLI
Adicione a ~/.gemini/settings.json (global) ou .gemini/settings.json (por projeto):
{
"mcpServers": {
"ethora": {
"command": "npx",
"args": ["-y", "@ethora/mcp-server"]
}
}
}
Codex CLI
Adicione a ~/.codex/config.toml — observe que o nome da tabela é mcp_servers (sublinhado; mcp-servers é ignorado silenciosamente):
[mcp_servers.ethora]
command = "npx"
args = ["-y", "@ethora/mcp-server"]
Windsurf
Configurações → Cascade → Servidores MCP → Ver configuração bruta (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"ethora": {
"command": "npx",
"args": ["-y", "@ethora/mcp-server"]
}
}
}
Cline
Abra o painel de servidores MCP e edite cline_mcp_settings.json:
{
"mcpServers": {
"ethora": {
"command": "npx",
"args": ["-y", "@ethora/mcp-server"]
}
}
}
🧪 Teste rápido
Depois que o servidor aparecer como conectado no seu cliente:
- Execute
list tools(comando do cliente) para verificar se as ferramentas Ethora estão disponíveis. - Verifique configuração/conectividade: chame
ethora-doctor(ouethora-status) - Para um primeiro teste local/manual:
- chame
ethora-configurecomapiUrl/appJwt - chame
ethora-auth-use-user - chame
ethora-user-login - depois tente
ethora-app-listouethora-wallet-get-balance
- chame
- Para um teste do lado do servidor/B2B:
- chame
ethora-configurecomapiUrl/b2bToken - chame
ethora-auth-use-b2b - depois tente
ethora-b2b-app-createouethora-app-tokens-list-v2
- chame
🧭 P1: B2B "criar app → indexar fontes → implantar bot" em uma chamada
Pré-requisitos:
- Configure
ETHORA_API_URL(ou chameethora-configure) - Configure
ETHORA_B2B_TOKEN(ou chameethora-configurecomb2bToken) - Garanta que seu backend Ethora esteja configurado com URL/segredo do serviço de IA (para ativação do bot)
Fluxo sugerido:
- Chame
ethora-auth-use-b2b - Chame
ethora-b2b-app-bootstrap-aicom:displayName- opcional
savedAgentId - opcional
crawlUrl - opcional
docs[](base64) enableBot: true- opcional
llmProvider - opcional
llmModel
Ele irá:
- criar o app (B2B)
- definir o contexto atual do app (melhor esforço)
- indexar fontes via
/v2/sources/*(autenticação por app-token) - configurar e/ou habilitar o bot (melhor esforço)
Exemplos de payloads
Mínimo (apenas criar app):
{
"displayName": "Acme AI Demo",
"setAsCurrent": true
}
Criar app + rastrear um site + habilitar bot:
{
"displayName": "Acme AI Demo",
"savedAgentId": "6790abc1234567890def1111",
"crawlUrl": "https://example.com",
"followLink": true,
"enableBot": true,
"botTrigger": "/bot",
"llmProvider": "openai",
"llmModel": "gpt-4o-mini"
}
Criar app + enviar documentos + habilitar bot:
{
"displayName": "Acme AI Demo",
"docs": [
{
"name": "faq.pdf",
"mimeType": "application/pdf",
"base64": "BASE64_PDF_CONTENT_HERE"
}
],
"enableBot": true,
"llmProvider": "openai",
"llmModel": "gpt-4o-mini"
}
Provisionar app + token + salas padrão + configurações do bot:
{
"displayName": "Acme Support",
"savedAgentId": "6790abc1234567890def1111",
"tokenLabels": ["default", "staging"],
"rooms": [
{ "title": "General" },
{ "title": "Support", "pinned": true }
],
"enableBot": true,
"botTrigger": "/bot",
"botPrompt": "You are the Acme support assistant.",
"botGreetingMessage": "Hello. How can I help?",
"llmProvider": "openai",
"llmModel": "gpt-4o-mini"
}
Nota sobre provedor/modelo:
- Valores comuns são
openaieopenai-compatible. - O provedor/modelo efetivo também deve estar habilitado pelo seu backend Ethora + ambiente do serviço de IA.
🤖 Loop de automação do app
Depois de já ter um app selecionado com autenticação appToken:
- chame
ethora-auth-use-app - chame
ethora-bot-get-v2para inspecionar o status atual do bot e as configurações de prompt - chame
ethora-sources-site-list-v2eethora-sources-docs-list-v2para inspecionar fontes indexadas - chame
ethora-sources-site-tags-update-v2ouethora-sources-docs-tags-update-v2para organizar a recuperação por tags - chame
ethora-chats-message-v2/ethora-chats-history-v2se o seu backend expõe a superfície de automação de chat no mesmo host da API
Exemplo: aplicar tags de recuperação a uma fonte rastreada
{
"sourceId": "6790abc1234567890def1234",
"tags": ["support", "faq", "billing"]
}
Exemplo: aplicar tags de recuperação a um documento indexado
{
"docId": "6790abc1234567890def1235",
"tags": ["support", "faq"]
}
🛡️ Notas de segurança
- Nunca coloque chaves de API fixas em configuração compartilhada. Prefira armazenamentos de segredos no lado do cliente.
- Use chaves com menor privilégio e considere listas de permissão/limites de taxa no seu backend Ethora.
- Rotacione credenciais regularmente em uso de produção.
Verificações de segurança em CI (somente relatório)
Este repositório executa verificações somente relatório em pushes/PRs:
- gitleaks para varredura de segredos
- semgrep para SAST básico
🧰 Desenvolvimento
Clone e execute localmente:
git clone https://github.com/dappros/ethora-mcp-server.git
cd ethora-mcp-server
npm install
npm run build
npm start
Scripts sugeridos (se não estiverem presentes):
{
"scripts": {
"build": "tsc -p .",
"start": "node dist/index.js",
"dev": "tsx src/index.ts"
}
}
❓ Solução de problemas
- Cliente não consegue conectar: Garanta que
npx @ethora/mcp-serverexecute localmente sem erros. Verifique Node ≥ 18. - Erros de autenticação: Verifique se
ETHORA_BASE_URLe quaisquer segredos necessários estão definidos no ambiente do cliente. - Ferramentas ausentes: Reinicie o cliente MCP e inspecione os logs do servidor para erros de registro.
- Rede: Confirme o acesso de saída da IDE para o seu host Ethora.
🔗 Repositórios Relacionados
- Ethora Chat Component — nosso componente de chat React usado em widgets e aplicativos autônomos https://github.com/dappros/ethora-chat-component
- Ethora WP Plugin — integração com WordPress
https://github.com/dappros/ethora-wp-plugin - RAG Demos — exemplos de assistente de IA RAG
https://github.com/dappros/rag_demos
📜 Licença
Veja LICENSE.