Skip to main content
Glama
jobber-mcp

jobber-mcp

jobber-mcp

License Node Jobber API Access Quality and maintenance score on Glama

A read-only MCP server connecting AI assistants (Claude, ChatGPT, Gemini, Copilot) to Jobber - field/home-services business software - via Jobber's official GraphQL API. Ask your assistant things like "which invoices are overdue?" or "what's on the schedule this week?" and get answers from your real account.

Not affiliated with Jobber. This is an independent, community-built integration. "Jobber" is a trademark of Jobber Software Corp. Use of the name here is nominative - it describes what the tool connects to.

Tools (read-only v1)

Tool

What it does

authenticate

Connect your Jobber account — one time, in-chat, via browser OAuth

search_jobs

Find jobs (work orders) by client, status, date range; paginated

get_unpaid_invoices

Overdue/balanced-owing invoices, days overdue, total AR outstanding

get_client_details

Client profile + outstanding balance + recent jobs and invoices

get_schedule

Upcoming visits in a date range (default today → +7 days)

get_quotes

Quote pipeline grouped by status

draft_client_message

Compose a payment reminder / follow-up draft enriched with live invoice facts - never sends

Related MCP server: Jobber MCP Server

Why this one

Several Jobber MCP servers exist; most are weekend prototypes that break in week two. This one is built for the failures that actually kill Jobber integrations:

  • Silent token refresh - access tokens expire; renewal just works when a refresh token and app credentials are configured

  • Throttle-aware retries - Jobber's GraphQL API uses a query-cost budget (10,000 points, +500/sec); bursts wait and retry instead of erroring

  • API-version pinning + drift fallback - sends the required X-JOBBER-GRAPHQL-VERSION header, and if a schema change rejects our filters, queries degrade gracefully instead of failing

  • Verified against the live schema (2026-05-12) - EncodedId identifiers, enum statuses, amounts money shape, scalar sort inputs

  • Correct details - money in your account's own currency (₹/€/£/…, not a hardcoded $), visit times in your local timezone

  • Tests - an offline end-to-end suite (mock Jobber API + in-memory MCP client) and a live read-only smoke script

  • Trust posture - strictly read-only, least-privilege scopes, your tokens never leave your machine, drafts never send

Requirements

  • For the Claude Desktop extension: nothing but Claude Desktop and a Jobber account

  • For other MCP clients: Node.js 18.17+

  • A free developer app from https://developer.getjobber.com (created during setup, ~5 minutes)

Install

Claude Desktop — no coding (easiest)

  1. Download jobber-mcp.mcpb from this repo's releases.

  2. In Claude Desktop: Settings → Extensions → Install extension → select the file.

  3. In a chat, say "authenticate with Jobber" and follow the one-time setup: create a free app at https://developer.getjobber.com with read-only scopes (Clients, Jobs, Quotes, Scheduled Items, Invoices — leave the Callback URL blank), then paste the app's Client ID and Secret when asked.

  4. Your browser opens; log into Jobber and approve. Done — try "Which invoices are overdue?"

No Node.js, no terminal, no config files. Tokens are stored locally at ~/.jobber-mcp/tokens.json and refreshed automatically.

Building the extension yourself: npm run build:extension produces dist/jobber-mcp.mcpb from source.

Any other MCP client (developers)

Works with anything that speaks MCP over stdio (Cursor, VS Code Copilot, Claude Code, …).

  1. Create a Jobber developer app at https://developer.getjobber.com (free). Note your CLIENT ID / CLIENT SECRET. Enable read-only scopes for Clients, Jobs, Quotes, Scheduled Items, and Invoices. Leave the Callback URL blank - Jobber allows localhost redirects automatically on any port.

  2. Install & configure (or skip this entirely and just call the authenticate tool from your assistant):

    git clone https://github.com/buildminimal/jobber-mcp.git
    cd jobber-mcp
    npm install
    cp .env.example .env      # fill in JOBBER_CLIENT_ID / JOBBER_CLIENT_SECRET
    npm run auth              # opens browser → prints tokens → paste into .env
  3. Connect your AI client. Claude Desktop (claude_desktop_config.json):

    {
      "mcpServers": {
        "jobber": {
          "command": "node",
          "args": ["/absolute/path/to/jobber-mcp/dist/src/index.js"],
          "env": {
            "JOBBER_ACCESS_TOKEN": "<from npm run auth>",
            "JOBBER_REFRESH_TOKEN": "<optional, enables silent renewal>",
            "JOBBER_CLIENT_ID": "<optional, needed for renewal>",
            "JOBBER_CLIENT_SECRET": "<optional, needed for renewal>"
          }
        }
      }
    }

    Other MCP clients: run node dist/src/index.js over stdio with the same env vars.

Then try: "Which invoices are overdue? Draft a polite reminder for each."

Optional: set JOBBER_TIMEZONE (IANA name, e.g. Asia/Kolkata) so visit times display in your local timezone.

Schema verification & maintenance

The queries are verified against the live schema as of API version 2026-05-12 (the version Jobber's response extensions.versioning reports). Two things matter when something breaks after an API bump:

  1. The API requires an X-JOBBER-GRAPHQL-VERSION header (default set via JOBBER_API_VERSION in .env if Jobber ships a newer version).

  2. All GraphQL documents live in src/jobber/queries.ts - re-run npm run introspect (dumps root queries + type/input fields), align that file, then check with npm run test:wiring (offline) and npm run smoke (live, read-only).

Development

npm run build         # tsc, typechecks src + scripts
npm run test:wiring   # offline end-to-end: mock Jobber API + in-memory MCP client, all 6 tools (no token needed)
npm run smoke         # live read-only check that all queries still validate (needs token)
npm run dev           # run server from source
npm run auth          # local OAuth code-flow helper (localhost callback)
npm run introspect    # dump live schema surface (needs token)

Layout: src/index.ts (entry) · src/tools.ts (tool definitions + local filtering/formatting) · src/jobber/client.ts (GraphQL fetch, version header, 401 refresh, throttle retry, filter fallback) · src/jobber/queries.ts (all GraphQL documents, schema-verified) · src/config.ts (env/.env) · scripts/ (auth, introspect, smoke, wiring test).

See CONTRIBUTING.md for the full development guide, COMPETITORS.md for the landscape survey this project positions itself in, CHANGELOG.md for release history, and SECURITY.md for the trust model and how to report issues.

Principles

  1. Read-only first; write tools (create_quote, quote_to_invoice, send) only after validation, behind an explicit confirm-before-send design.

  2. Customer-held OAuth tokens - never store secrets server-side; tokens live in the customer's env/config.

  3. Opinionated workflow tools, not thin CRUD wrappers.

  4. Open-source core; a hosted version may come later.

License

MIT - see LICENSE.

Available Tools

7 tools
authenticateConnect your Jobber accountA

Connect this assistant to the user's Jobber account via OAuth (one time). PREREQUISITE the user must have done once: create a free app at https://developer.getjobber.com and enable READ-ONLY scopes for Clients, Jobs, Quotes, Scheduled Items and Invoices (leave the Callback URL blank - localhost is allowed automatically). Call this tool with that app's client_id and client_secret: it opens the user's browser to log in and approve, then stores tokens locally. If the tool is called without credentials, relay the setup instructions it returns to the user.

Inputs: client_id, client_secret.

draft_client_messageDraft a client messageA

Compose a DRAFT message (email or SMS) to a client, enriched with facts pulled live from Jobber (invoice number, balance owing, due date, days overdue, client name). Nothing is ever sent or written to Jobber - the draft is returned for human review. Provide message if you already wrote the body (the tool attaches verified facts); omit it to get a template based on purpose.

Inputs: purpose (required), tone, signer, channel, +4 more.

get_client_detailsGet client detailsA

Full profile for one client by Jobber client_id: name, email/phone, outstanding balance, member-since, recent jobs and recent invoices. Find the client_id first via search_jobs (results include client ids) when you only know the name.

Inputs: client_id (required).

get_quotesGet quotesA

Quote pipeline grouped by status, with quote number, client, total, and job. Use for pipeline questions like "which quotes are awaiting a response?". Optional server-side filters: status (one of: draft, awaiting_response, archived, approved, converted, changes_requested) and client_id.

Inputs: limit, cursor, status, client_id.

get_scheduleGet scheduleA

Visits/appointments in a date range (default today through +7 days), sorted by start time, with the job and client for each. Dates are YYYY-MM-DD. Filtering happens server-side on visit start time.

Inputs: to, from, limit, cursor.

get_unpaid_invoicesGet unpaid invoicesA

List invoices with a balance owing (status past_due / awaiting_payment), sorted oldest-due first, with days overdue and the total outstanding. Use for accounts-receivable questions like "which invoices are overdue?". Scans the most recent invoices (default 50) and filters on balance.

Inputs: limit.

search_jobsSearch jobsA

Search Jobber jobs (work orders) with job number, title, status, client and created/updated dates. Server-side filters: status (one of: requires_invoicing, archived, late, today, upcoming, action_required, on_hold, unscheduled, active, expiring_within_30_days), created_after / created_before (YYYY-MM-DD), and free-text search across job fields. Filter by client locally with client_id. Returns up to limit results (default 25, max 100) plus a cursor when more pages exist.

Inputs: limit, cursor, search, status, +3 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 7 tools

    Disambiguation5/5

    Each tool covers a distinct resource/action: job search, unpaid invoices, client profile, schedule, quotes, message drafting, and auth. The only mild adjacency (search_jobs results containing client ids that feed get_client_details) is explicitly documented rather than ambiguous.

    Naming Consistency4/5

    Most tools follow a verb_noun pattern (search_jobs, get_unpaid_invoices, get_client_details, get_quotes, draft_client_message). Minor deviations exist: 'authenticate' is a bare verb with no noun, and pluralization is uneven (get_schedule singular vs get_quotes/get_client_details plural), but overall it's readable and predictable.

    Tool Count5/5

    Seven tools is well-scoped for a read-only Jobber assistant covering jobs, invoices, clients, schedule, quotes, and messaging. Every tool earns its place with no bloat.

    Completeness4/5

    Covers the core read-only surface: jobs, unpaid invoices, client profiles, schedule, quotes, draft messaging, plus OAuth. Minor gaps remain — no single-job/invoice detail fetch, no listing of paid/settled invoices, and no direct client search (clients are only reachable via job results) — but agents can work around these.

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    • The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.

    • Jobber MCP server for ChatGPT, Claude and any AI agent: create quote, convert quote to job, create invoice, send invoice and list unpaid invoices in your own Jobber account. Cotlet works in the account through your Cloud Browser, a real Chrome where you sign in to Jobber yourself; Cotlet does not store your password and you need no Jobber API key. About the official Jobber API: Yes, Jobber has a GraphQL API in its Developer Center (checked 14 Oct 2026), but you cannot use it without registering an app. Each Jobber account authorizes your app with OAuth 2.0 and tokens must be refreshed. Setup and FAQ: https://cotlet.dev/integrations/jobber-api-mcp-server

      https://cotlet.dev/mcp/v1/jobber
    • Spacebring MCP server. Look up members, bookings, invoices, subscriptions, events and more, and take everyday actions such as creating events or replying to support tickets, from MCP-compatible AI assistants that support remote servers with OAuth.

      https://mcp.spacebring.com/mcp
    • Accounts receivable automation for Xero and QuickBooks Online, inside your AI assistant. Ask Claude, ChatGPT or any MCP client for a receivables summary, find customers and invoices, read the email and SMS replies your customers sent, and see what Paidnice sent or skipped. Ask why a reminder, late fee or statement did or did not go out, and update a customer's contact people straight into your ledger. Secure OAuth sign-in. One connection covers every organisation you tick, with Read or Read and Write access.

      https://mcp.paidnice.com/mcp

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Customer-hosted, read-only MCP server for Jobber operations workflows. It helps owners query Jobber for action lists, overdue invoices, stale requests, estimate/job follow-up, and safe read-only GraphQL validation.
      6
      65 npm
      1
      MIT
    • A
      license
      A
      quality
      F
      maintenance
      Enables AI assistants to access and manage Jobber field-service data including clients, jobs, invoices, and quotes through natural language interactions.
      6
      79 npm
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      MCP server for Jobber home service management software enabling read/write of clients, jobs, quotes, invoices via GraphQL API.
      7
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Connect an AI assistant to your Jobber account to query clients, jobs, invoices, and more in plain English, with optional write actions for creating clients and jobs.
      12
      MIT