Jitbit × Metabase

How to build Jitbit help desk dashboards in Metabase

Jitbitis 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 route for fast, AI-assisted questions, 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 these: use the MCP route to explore and triage, and a pipeline or direct-database connection for the dashboards people depend on.

1 · MCP route (AI-assisted)

Live, conversational analysis

Pair Jitbit's built-in MCP server with the Metabase MCP server so an AI assistant can read live ticket data and query existing Metabase models on demand.

Best for
  • Ad-hoc questions like "what's open in the IT queue?"
  • Searching and reading tickets without leaving your assistant
  • Exploring before you build a report
Trade-offs
  • Jitbit's MCP server is read-only and needs Jitbit 11.21 or later
  • Not a substitute for governed or scheduled reporting
  • No history unless your data already lives in Metabase
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 and Metabase MCP servers together?

Pair the Jitbit MCP server with the Metabase MCP server for live, conversational analysis. The Jitbit MCP searches and reads current tickets; the Metabase MCP queries the models and dashboards you've already built.

Example workflows

  • Search open tickets in a category and summarize by technician.
  • Read a ticket's full thread, then compare resolution trends against a Metabase model.
  • Triage: "find unassigned high-priority tickets created today."

Be honest about the limits

  • MCP is great for live lookups — not for scheduled or audited reporting.
  • Jitbit's MCP server is read-only — it can't create or modify tickets.
  • It does not create history; trend analysis still needs synced data.
  • The Metabase MCP server is built in; an admin enables it under Admin → AI → MCP.

How do you set up the Jitbit and Metabase MCP servers?

Jitbit MCP official

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 MCP built-in

Enable
Admin → AI → MCP
Endpoint
https://<your-metabase>/api/metabase-mcp
Auth
OAuth handled by Metabase
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"
      ]
    },
    "metabase": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://your-metabase.example.com/api/metabase-mcp"]
    }
  }
}

Use the hosted /api/mcp endpoint when your client supports HTTP transport; a thin jitbit-helpdesk-mcp npm proxy exists for stdio-only clients.

Verify before shipping: confirm the Metabase MCP URL in Admin → AI → MCP (Metabase docs) and the current Jitbit MCP setup in the Jitbit MCP docs.

Can you generate a Jitbit dashboard with AI?

Yes — and this is the fastest way to a strong first draft. Use the prompt below with the Metabase MCP server and any assistant that can inspect your database schema and create Metabase questions. It assumes Jitbit data is reachable from a database Metabase can read (a sync on SaaS, or the SQL Server replica on self-hosted), treats MCP as exploratory, and tells the agent to skip metrics the schema can't support instead of faking them.

Prompt for creating a Jitbit Help Desk Overview dashboard
Create a polished Metabase dashboard for Jitbit help desk analytics using the
available Jitbit tables in this database.

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

First, inspect the schema and identify the available Jitbit tables. 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.

Important:
- Treat MCP data access as exploratory only.
- Build the dashboard from durable database/warehouse tables (or, on self-hosted
  Jitbit, a read replica of the SQL Server database).
- 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.
- Do not claim Metabase connects natively to the Jitbit SaaS API; on self-hosted
  it connects to the underlying SQL Server database directly.

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.

Before finalizing, create or recommend reusable Metabase 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 schema. Keep it practical, dense,
and executive-readable. Avoid vanity metrics.

How do you get Jitbit data into Metabase?

Your route depends on whether you run Jitbit SaaS or self-hosted.

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(code) — write a Python pipeline against the Jitbit REST API to land tickets and comments in your warehouse.
  • Jitbit REST API(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 the read-only MCP as a reporting layer.→ Use MCP for triage; build dashboards on the database.

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 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.