Jitbit × Metabase

How to build Jitbit help desk dashboards in Metabase

Jitbit is an IT help desk available as SaaS or self-hosted, with tickets, categories, assets, and SLAs. Metabase is where you turn that activity into shared, trustworthy dashboards. This guide covers two complementary paths: a lightweight MCP + CLI routethat pulls live data with the Jitbit MCP server and loads a CSV into Metabase with the Metabase CLI for quick analysis, and a durable pipeline route — and, uniquely, if you self-host Jitbit, Metabase can connect directly to its SQL Server database.

Heads up: Metabase connects to SQL databases and warehouses. The JitbitSaaS API needs a sync step first. But self-hosted Jitbit runs on SQL Server / Azure SQL, which Metabase connects to natively — point it at a read replica.

How do you connect Jitbit to Metabase?

Most teams combine both routes: use the Jitbit MCP server and Metabase CLI route to pull live data and stand up a quick analysis, and a pipeline or direct-database connection for the dashboards people depend on.

1 · MCP + CLI route (AI-assisted)

Live data in, quick analysis out

Pair Jitbit's built-in, read-only MCP server (to search and read live tickets) with the Metabase CLI, whose upload command loads a CSV into Metabase as a ready-to-query table and model.

Best for
  • Quick lookups like "what's open in the IT queue?"
  • Loading a Jitbit CSV export into Metabase in seconds
  • Spot-checks and one-off analyses without a warehouse
Trade-offs
  • Great for exploration, not governed reporting
  • Jitbit's MCP server is read-only and needs Jitbit 11.21 or later
  • CSV uploads are snapshots — refresh or move to the pipeline for history
2 · Pipeline / direct route

Durable dashboards with history

On Jitbit SaaS, sync via the REST API. On self-hosted Jitbit, Metabase can connect directly to the underlying SQL Server database.

Best for
  • SLA, category, and volume dashboards the team relies on
  • Self-hosted instances where you control the database
  • Trends over quarters and year-over-year comparisons
Trade-offs
  • SaaS has no first-party warehouse connector — use the REST API or dlt
  • Direct DB access is read-only best practice — never report off the live OLTP under load
  • You own the data model and refresh schedule

What can you analyze from Jitbit data in Metabase?

  • Ticket volume — created vs. closed by day and category
  • First response time — how long requesters wait for a technician
  • Resolution time — created to closed, with median and p90
  • Category drivers — what's generating IT tickets
  • Backlog and aging — open work and how long it's been waiting
  • Technician performance — workload distribution and resolution speed
  • Repeat requesters — users filing tickets repeatedly

Which Jitbit dashboards should you build in Metabase?

For: IT support leads

Support overview

The daily pulse of the help desk.

  • Tickets created vs. closed per day (dual line)
  • Median first response time (number + trend)
  • Open backlog by status (bar)
  • Volume by category (bar)
For: Support ops

SLA & response time

Are we meeting internal SLAs?

  • First response time p50/p90 by week (line)
  • Overdue tickets by category (table)
  • Aging open tickets by days-open bucket (table)
  • Reopened tickets by week (line)
For: Team managers

Technician performance

Balance workload across the team.

  • Closed tickets by technician (bar)
  • Median resolution time by technician (bar)
  • Open assigned tickets by technician (table)
  • Volume by priority (bar)
For: IT leadership

Categories & assets

Understand what's driving IT tickets.

  • Volume by category over time (line)
  • Top recurring issue types (bar)
  • Tickets by department/requester group (bar)
  • Repeat-requester customers (table)

How do you use the Jitbit MCP server with the Metabase CLI?

Pair the Jitbit MCP server with the Metabase CLI for fast, hands-on analysis. Jitbit ships a built-in, read-only MCP server that searches and reads current tickets; the Metabase CLI's upload command loads a CSV into Metabase and creates a ready-to-query table and model.

Example workflow

  • Ask the Jitbit MCP for unassigned high-priority tickets created today, or open tickets in a category summarized by technician.
  • Export the tickets or comments you want to keep as a CSV.
  • Run mb upload csv to load it into Metabase as a table and model, then build questions and dashboards on top.

Be honest about the limits

  • The Jitbit MCP is great for live lookups — not for scheduled or audited reporting.
  • Jitbit's MCP server is read-only and needs Jitbit 11.21 or later.
  • A CSV upload is a point-in-time snapshot; refresh it with mb upload replace or move to the pipeline for real history.
  • mb upload csv needs an uploads database configured under Admin → Settings → Uploads.

How do you set up the Jitbit MCP server and the Metabase CLI?

Jitbit MCPofficial

Endpoint
https://yourcompany.jitbit.com/api/mcp
Transport
Streamable HTTP (stateless)
Auth
Bearer API token from your Jitbit profile
Requires
Jitbit 11.21 or later (SaaS or on-prem)

Metabase CLIofficial

Install
npm install -g @metabase/cli
Auth
mb auth login (browser OAuth on v62+, or an API key)
Load data
mb upload csv --file data.csv
Requires
An uploads database (Admin → Settings → Uploads)
Cursor~/.cursor/mcp.json or .cursor/mcp.json
{
  "mcpServers": {
    "jitbit": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://yourcompany.jitbit.com/api/mcp",
        "--header",
        "Authorization:Bearer YOUR_JITBIT_TOKEN"
      ]
    }
  }
}
TerminalLoad a Jitbit CSV with the Metabase CLI
# Install the Metabase CLI
npm install -g @metabase/cli

# Log in (opens your browser; requires Metabase v62+)
mb auth login --url https://your-metabase.example.com

# Load a Jitbit CSV export — creates a table AND a model
mb upload csv --file jitbit-tickets.csv --collection root

# Refresh that same table later from a new export
mb upload replace <table-id> --file jitbit-tickets.csv

Use the hosted /api/mcp endpoint when your client supports HTTP transport; a thin jitbit-helpdesk-mcp npm proxy exists for stdio-only clients. The Metabase CLI stores its credentials securely after mb auth login.

Verify before shipping: confirm an uploads database is enabled under Admin → Settings → Uploads (Metabase docs) and the current Jitbit MCP setup in the Jitbit MCP docs.

Can you generate a Jitbit dashboard with AI?

Yes. Use the prompt below with any assistant that can run the Jitbit MCP server and the Metabase CLI. It works end to end: if Jitbit tables already exist in Metabase (a sync on SaaS, or the SQL Server replica on self-hosted) it analyzes those; otherwise it pulls the data over the Jitbit MCP, loads it with mb upload csv, then builds the dashboard — using medians and skipping cards it has no data for.

Prompt for creating a Jitbit Help Desk Overview dashboard
Create a polished Metabase dashboard for Jitbit help desk analytics.
Work end to end: get the data into Metabase if it isn't there yet, then build.

Goal: Help IT support leaders understand volume, responsiveness, SLA, category
drivers, and technician workload from Jitbit data.

Step 1 — Find or load the data:
- First, check what already exists in Metabase (search for Jitbit tables and
  models). If durable Jitbit data is already present — synced from a warehouse,
  read directly from a self-hosted SQL Server replica, or uploaded earlier — use
  it and skip to Step 2.
- If nothing is there, pull it with the read-only Jitbit MCP server: search and
  read tickets, comments, and categories. Write each result to a CSV, then load
  it with the Metabase CLI — run "mb upload csv --file <export>.csv" so each
  upload creates a table and a ready-to-query model. Use "mb upload replace
  <table-id> --file <export>.csv" to refresh an existing table instead of
  creating duplicates.

Step 2 — Inspect before querying:
Do not assume exact table names. Map the available raw tables into these
analytical concepts where possible: Tickets, Comments, Users (technicians and end
users), Categories, Statuses, Priorities, Tags, and Departments. Inspect the
actual tables and column names first.

Important:
- Build on whatever data is present; don't claim Metabase connects natively to
  the Jitbit SaaS API — it reads a database, a self-hosted SQL Server, or
  CLI-uploaded tables.
- Use medians (p50) and p90 for response and resolution times, never averages.
- Define "first response" as the first technician comment, excluding internal
  notes and automated messages.
- If status-change history is missing, do not calculate reopen rate or
  time-in-status. Use a caveat instead.
- Only build a card if its underlying column/metric exists in the data.
- A single CSV is a point-in-time snapshot: only build trend cards if there is a
  usable date column or multiple periods have been uploaded.

Dashboard title: Jitbit Help Desk Overview

Sections:
1. Executive summary (KPI cards): Tickets created last 7 days; Closed last 7 days;
   Open backlog; Median first response time; Volume by category.
2. Volume & backlog: Created vs closed by day; Open by status; Backlog aging;
   Volume by category.
3. SLA & response time: First response p50/p90 by week; Overdue by category;
   Reopened by week (only if history exists).
4. Technician performance: Closed by technician; Median resolution time by
   technician; Open assigned by technician; Volume by priority.
5. Categories & drivers: Volume by category over time; Top recurring issue types;
   Tickets by department; Repeat requesters.

Filters: Category, Technician, Priority, Status, Department, Date range.

Reuse the models Metabase auto-created from uploaded CSVs, or (for a warehouse or
direct database) create reusable models: modeled_jitbit_tickets,
modeled_jitbit_comments, modeled_jitbit_users, and modeled_jitbit_categories.

Output: Build the dashboard if you have permission; otherwise provide the exact
questions, SQL, model definitions, and layout. Include caveats for any metric
that cannot be calculated from the available data. Keep it practical, dense,
and executive-readable. Avoid vanity metrics.

How do you build the Jitbit → Metabase pipeline?

Your route depends on whether you run Jitbit SaaS or self-hosted. On self-hosted, Metabase connects straight to the database; on SaaS, a pipeline is the same four stages — extract from the API, load into a database, model the raw tables into clean ones, and visualize in Metabase.

No paid tool required. On SaaS, a fully free stack: a small dlt or hand-written script (extract) → a free Postgres database like Neon or Supabase (load) → a scheduler such as GitHub Actions cron (host) → Metabase (visualize). On self-hosted, it's even simpler — Metabase reads the SQL Server database directly. For hosting and scheduling details, see our data pipeline guide.

Self-hosted: connect directly

  • Self-hosted Jitbit stores data in SQL Server / Azure SQL, which Metabase connects to natively. Point Metabase at a read replica and model on top — no ETL required.
  • Never run heavy reporting against the live production database under load; use a replica or restored backup.

SaaS: sync via the API

  • dlt (free, code) — write a Python pipeline against the Jitbit REST API to land tickets and comments in your warehouse.
  • Jitbit REST API (free, raw) — the source of truth on SaaS; paginate tickets and comments and upsert on a schedule.

Notes

  • On either route, build clean models rather than reporting off raw tables.
  • Capture status changes if you want accurate reopen rate and time-in-status.

How should you model Jitbit data in Metabase?

Core tables

TableGrainKey columns
Ticketsone row per ticketTicketID, StatusID, PriorityID, CategoryID, AssignedToUserID, UserID (requester), IssueDate, ResolvedDate
Commentsone row per commentIssueID, UserID, ForTechsOnly, CommentDate
Usersone row per userUserID, IsAdmin (technician), UserName, Email
Categoriesone row per categoryCategoryID, CategoryName

Modeling advice

  • Map StatusID and PriorityID codes to readable labels in a model.
  • Define first response from the first non-internal technician comment (ForTechsOnly = false, technician author).
  • Treat tags as a bridge table so a ticket can carry many tags.
  • On self-hosted, build models on a replica so dashboards don't load the OLTP database.
  • Define "closed" once (e.g. StatusID = 3) and reuse it everywhere.

Which Jitbit metrics should you track in Metabase?

MetricDefinitionNotes
First response timeCreated → first technician comment.Report median and p90; exclude tech-only notes.
Resolution timeCreated → resolved/closed.Decide whether to include on-hold time.
Ticket volumeCreated vs. closed in a period.Segment by category and priority.
Category mixTickets by category.Reveals recurring IT issues.
BacklogOpen tickets right now.Pair with aging buckets.
Technician loadOpen and closed tickets per technician.Frame as balance, not a leaderboard.

What SQL powers Jitbit dashboards in Metabase?

These use Jitbit's SQL Server table names (shown in PostgreSQL-style syntax). On SQL Server, swap percentile_cont and date functions for the T-SQL equivalents.

Tickets created vs. closed per dayPostgreSQL

The basic volume trend over the last 30 days (StatusID 3 = closed).

SELECT
  CAST(t.IssueDate AS date) AS day,
  COUNT(*)                                          AS created,
  COUNT(*) FILTER (WHERE t.StatusID = 3)            AS closed
FROM Tickets t
WHERE t.IssueDate >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY CAST(t.IssueDate AS date)
ORDER BY 1;
First response time by weekPostgreSQL

Median from the first non-internal technician comment per ticket.

WITH first_tech_comment AS (
  SELECT
    c.IssueID,
    MIN(c.CommentDate) AS first_reply_at
  FROM Comments c
  JOIN Users u ON u.UserID = c.UserID
  WHERE u.IsAdmin = true       -- technician
    AND c.ForTechsOnly = false
  GROUP BY c.IssueID
)
SELECT
  date_trunc('week', t.IssueDate) AS week,
  percentile_cont(0.5) WITHIN GROUP (
    ORDER BY EXTRACT(EPOCH FROM (f.first_reply_at - t.IssueDate)) / 60.0
  ) AS median_first_reply_min
FROM Tickets t
JOIN first_tech_comment f ON f.IssueID = t.TicketID
GROUP BY 1
ORDER BY 1;
Volume by categoryPostgreSQL

Top IT ticket drivers over the last 90 days.

SELECT
  cat.CategoryName   AS category,
  COUNT(*)           AS tickets
FROM Tickets t
JOIN Categories cat ON cat.CategoryID = t.CategoryID
WHERE t.IssueDate >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY cat.CategoryName
ORDER BY tickets DESC;
Backlog agingPostgreSQL

Open tickets bucketed by how long they've been waiting.

SELECT
  CASE
    WHEN CURRENT_DATE - t.IssueDate::date <= 1  THEN '0-1 days'
    WHEN CURRENT_DATE - t.IssueDate::date <= 3  THEN '2-3 days'
    WHEN CURRENT_DATE - t.IssueDate::date <= 7  THEN '4-7 days'
    ELSE '8+ days'
  END                AS age_bucket,
  COUNT(*)           AS open_tickets
FROM Tickets t
WHERE t.StatusID <> 3
GROUP BY 1
ORDER BY MIN(CURRENT_DATE - t.IssueDate::date);

What are common mistakes when analyzing Jitbit in Metabase?

Reporting off the live self-hosted database under load.→ Point Metabase at a read replica or restored backup, not the production OLTP instance.
Leaving status and priority as raw codes.→ Map StatusID and PriorityID to readable labels in a model.
Counting tech-only notes as customer-facing replies.→ Restrict first response to non-internal technician comments.
Using averages for response and resolution time.→ Report medians and p90 — these durations are heavily right-skewed.
Treating a live MCP lookup or a one-off CSV as governed reporting.→ Use the Jitbit MCP and CSV uploads for triage and exploration; build warehouse- or database-backed Metabase dashboards for anything the team depends on.

Related analytics

Related integrations

FAQ

Can Metabase connect directly to Jitbit?
If you self-host Jitbit, yes — it runs on SQL Server / Azure SQL, which Metabase connects to natively. Point Metabase at a read replica. On Jitbit SaaS, sync via the REST API first, since you don't have direct database access.
Does Jitbit have a built-in MCP server?
Yes. Jitbit ships a built-in, read-only MCP endpoint at /api/mcp on SaaS and on-prem installs running 11.21 or later, authenticated with a Bearer API token. It exposes ticket search, list, and read tools.
How do I quickly analyze Jitbit data without a warehouse?
Search and read the tickets you need with Jitbit's read-only MCP server, export them to CSV, and run `mb upload csv --file data.csv` with the Metabase CLI. It creates a table and a model you can build questions on right away. You'll need an uploads database enabled under Admin → Settings → Uploads. Refresh later with `mb upload replace`, or move to the pipeline (or direct SQL Server) route when you need history.
How do I measure first response time in Jitbit?
Use the first non-internal technician comment (ForTechsOnly = false, authored by a technician) as the first response, and report the median and p90.