Co-authored-by: Cursor <cursoragent@cursor.com>
TicketLab_MCP
Hello world — repositório de testes MCP do TicketLab.
Quick start
npm ci
cp .env.example .env # preencha LITELLM_API_KEY
npm run migrate
npm start
Requires Node.js 22+ and npm (package-lock.json).
SQLite
npm run migrate
Cria/atualiza SQLITE_PATH (default data/ticketlab.sqlite) com a migration migrations/001_tickets.sql.
LiteLLM
Configure no .env (veja .env.example):
LITELLM_BASE_URLLITELLM_MODELLITELLM_API_KEY
Observability lab stack
Local Grafana + Tempo + Loki + OTEL Collector (+ Prometheus):
docker compose up -d
| What | Where |
|---|---|
| Grafana UI | http://localhost:3001 (admin / admin) |
| Demo dashboard | http://localhost:3001/d/ticketlab-demo (folder TicketLab; starred) |
| OTLP HTTP | http://localhost:4318 |
| OTLP gRPC | localhost:4317 |
| Tempo | http://localhost:3200 |
| Loki | http://localhost:3100 |
| Prometheus | http://localhost:9090 |
Copy .env.example → .env for LiteLLM, SQLite e OTLP. Datasources (Prometheus, Loki, Tempo) are provisioned automatically. Stop with docker compose down.
Scripts
npm run build— compile TypeScript todist/npm start— hello world with OTLP (trace → Tempo, log → Loki, metric → Prometheus)npm run typecheck— type-check without emittingnpm run migrate— apply SQLite migrationsnpm test— build and run tests
CI / quality gate
Pushes and PRs into develop, release/** and main run SonarQube via Gitea Actions. Merge is blocked until the Quality Gate passes.
Plane MCP (self-hosted CE)
Plane CE 1.3.1 does not expose Cloud-only routes such as /projects-lite/. The Cursor config in .cursor/mcp.json therefore runs plane-ce-mcp locally via uvx with PLANE_BASE_URL=https://plane.app.andreferraro.com (requires uv on PATH).
Workarounds on CE: always pass project_id to list_work_items after list_projects; workspace-wide list_work_items and count_work_items may still fail.