Eventor MCP Server
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., "@Eventor MCP Serverlist all published events"
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.
eventor-cli
Cliente headless da Management API do Eventor (/api/v1), desenhado com um agente de IA como usuário primário. Monorepo com três pacotes sobre um SDK tipado único:
Pacote | O que é | Status |
Cliente HTTP tipado (auth, retry, paginação, upload). Núcleo. | ✅ 9.B | |
Binário | ✅ 9.C | |
| Servidor MCP com tools auto-geradas do spec. | ⏳ 9.E |
A fonte de verdade é o OpenAPI 3.1 em openapi/eventor-v1.json (gerado pelo backend Laravel). Os tipos do SDK são gerados dele — endpoint novo na API = tipo novo no cliente, sem código escrito à mão.
Requisitos
Node ≥ 20 (usa
fetch/FormDatanativos — zero dependência de runtime)pnpm 10
Related MCP server: Strava MCP Server
Setup
pnpm install
pnpm gen # regenera os tipos a partir de openapi/eventor-v1.json
pnpm build # compila os pacotes
pnpm test # roda os testes
pnpm typecheckSDK em 30 segundos
import { EventorClient, createClient } from '@eventor-run/sdk';
// credencial em camadas: flag → EVENTOR_API_KEY → ~/.config/eventor/config.json
const sdk = createClient({ apiKey: process.env.EVENTOR_API_KEY });
// request tipado (path/query/body inferidos do OpenAPI):
const event = await sdk.request('get', '/events/{event}', { path: { event: 'MAR2026' } });
// paginação automática:
const all = await sdk.all('/events', { query: { status: 'published' } });
// upload por caminho local (sem montar multipart na mão):
await sdk.upload('post', '/events/{event}/logo', { path: { event: 'MAR2026' }, file: './logo.png' });
// escape hatch sem tipos (cobre 100% do spec):
await sdk.api('POST', '/events', { body: { name: 'Maratona' } });O que o SDK entrega (9.B)
Tipos gerados do OpenAPI (
request/all/paginate/uploadtotalmente tipados).Credencial em camadas (flag → env → config file
0600→ erroexit 4).Retry/backoff exponencial em
429/5xx, respeitandoRetry-After.POST/PATCHnão re-tentam em5xx(evita duplicar escrita);429re-tenta sempre.Paginação via
meta.last_page(all()/paginate()).Upload por caminho de arquivo (lê do disco, monta multipart).
Erros preservam o envelope
{error,message,details}+hintacionável e expõem exit code semântico (EventorApiError.exitCode) pro CLI.
CLI (eventor) — 9.C
Desenhado com stdout = dados, stderr = humanos. Sem TTY (pipe/agente) o stdout é JSON puro.
eventor auth login --api-key sk_live_... # valida em /me e grava ~/.config/eventor/config.json (0600)
eventor event list --json | jq '.data[].code' # dados no stdout
eventor event setup --from spec.json --dry-run # mostra o plano (would_create/would_update/unchanged)
eventor event setup --from spec.json # executa idempotente (organizer→event→races→batches→…)
eventor event publish --event MAR2026
eventor api GET /events --all # escape hatch: cobre 100% do spec, --all pagina tudoExit codes semânticos:
0ok ·1genérico/5xx ·2uso ·3not_found ·4unauthorized ·5conflict.Erro acionável: todo erro vira
{"error":{"code","message","hint"}}no stderr; o agente lêcode(decide) ehint(próximo comando).event setup: workflow consolidado e idempotente;race_pricesaceita o nome da prova (resolvido prarace_id);--dry-runsó faz GETs.Destrutivo (
api DELETE) exige--yes(agente em CI nunca fica pendurado).eventor skill installinstala oSKILL.mdem~/.claude/skills/eventor/— ensina o agente quando/como usar o CLI.--helpem qualquer comando traz exemplos copiáveis + a tabela de exit codes.
Publicando no npm (@eventor-run/cli + @eventor-run/sdk)
A publicação é automática ao empurrar uma tag vX.Y.Z (workflow release.yml). Pré-requisitos, uma vez:
Criar a org
eventorno npmjs.com (grátis para pacotes públicos).Gerar um automation token (Account → Access Tokens → Granular/Automation, só publish) e salvá-lo como secret
NPM_TOKENdo repositório (Settings → Secrets → Actions). É revogável — não é a credencial pessoal.
Depois, a cada release:
# bump das versões em packages/sdk e packages/cli, commit, então:
git tag v0.1.0 && git push origin v0.1.0 # dispara o workflow → publica sdk depois cliO pnpm -r publish publica em ordem (sdk antes do cli) e converte workspace:* na versão real. O binário instalado chama-se eventor independentemente do nome do pacote (npx @eventor-run/cli ... para uso pontual).
Decisões (PRD cli-eventor-headless §13–14)
Repo separado do backend Laravel; CLI antes do MCP; commander; OpenAPI como fonte de verdade.
Base URL default:
https://eventor.run/api/v1(sobrescrevível por--base-url/EVENTOR_BASE_URL).Distribuição npm (
@eventor-run/cli): decisão da 9.D.
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
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/marcossei22/eventor-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server