jobber-mcp
Read-only MCP server that connects an AI assistant to Jobber for querying business data and drafting client messages.
Authenticate one-time via browser OAuth with a Jobber developer app.
Search jobs by status, client, created date, or free text.
List unpaid/overdue invoices with days overdue and total outstanding.
Get client profile, balance, recent jobs and invoices.
View scheduled visits in a date range.
View quote pipeline grouped by status.
Draft client messages (payment/appointment reminders, follow-ups) enriched with live invoice facts; drafts are never sent.
Click on "Deploy 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., "@jobber-mcp which invoices are overdue right now?"
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.
jobber-mcp
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 |
| Connect your Jobber account — one time, in-chat, via browser OAuth |
| Find jobs (work orders) by client, status, date range; paginated |
| Overdue/balanced-owing invoices, days overdue, total AR outstanding |
| Client profile + outstanding balance + recent jobs and invoices |
| Upcoming visits in a date range (default today → +7 days) |
| Quote pipeline grouped by status |
| 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-VERSIONheader, and if a schema change rejects our filters, queries degrade gracefully instead of failingVerified against the live schema (
2026-05-12) -EncodedIdidentifiers, enum statuses,amountsmoney shape, scalar sort inputsCorrect details - money in your account's own currency (₹/€/£/…, not a hardcoded
$), visit times in your local timezoneTests - 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)
Download
jobber-mcp.mcpbfrom this repo's releases.In Claude Desktop: Settings → Extensions → Install extension → select the file.
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.
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:extensionproducesdist/jobber-mcp.mcpbfrom source.
Any other MCP client (developers)
Works with anything that speaks MCP over stdio (Cursor, VS Code Copilot, Claude Code, …).
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 allowslocalhostredirects automatically on any port.Install & configure (or skip this entirely and just call the
authenticatetool 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 .envConnect 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.jsover 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:
The API requires an
X-JOBBER-GRAPHQL-VERSIONheader (default set viaJOBBER_API_VERSIONin.envif Jobber ships a newer version).All GraphQL documents live in
src/jobber/queries.ts- re-runnpm run introspect(dumps root queries + type/input fields), align that file, then check withnpm run test:wiring(offline) andnpm 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
Read-only first; write tools (
create_quote,quote_to_invoice, send) only after validation, behind an explicit confirm-before-send design.Customer-held OAuth tokens - never store secrets server-side; tokens live in the customer's env/config.
Opinionated workflow tools, not thin CRUD wrappers.
Open-source core; a hosted version may come later.
License
MIT - see LICENSE.
Available Tools
7 toolsauthenticateConnect 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
Scored across 7 tools
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.
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.
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.
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
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
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.
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.
Related MCP Servers
- AlicenseAqualityDmaintenanceCustomer-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.665 npm1MIT
- AlicenseAqualityFmaintenanceEnables AI assistants to access and manage Jobber field-service data including clients, jobs, invoices, and quotes through natural language interactions.679 npmMIT
- AlicenseAqualityDmaintenanceMCP server for Jobber home service management software enabling read/write of clients, jobs, quotes, invoices via GraphQL API.71MIT
- AlicenseAqualityDmaintenanceConnect 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.12MIT