25 KiB
Jobber MCP Server
A comprehensive Model Context Protocol (MCP) server for the Jobber field service management platform. This server provides 96 GraphQL-powered tools and 15 React-based applications for complete business operations management.
Table of Contents
- Overview
- Installation
- Configuration
- Available Tools (96)
- Client Management (7 tools)
- Job Management (8 tools)
- Quote Management (8 tools)
- Invoice Management (7 tools)
- Scheduling & Visits (6 tools)
- Team Management (4 tools)
- Expense Tracking (5 tools)
- Product Catalog (5 tools)
- Service Requests (6 tools)
- Reporting & Analytics (3 tools)
- Property Management (6 tools)
- Timesheet Management (7 tools)
- Line Items (8 tools)
- Form Builder (8 tools)
- Tax Management (8 tools)
- React Applications (15)
- Usage Examples
- GraphQL API
- Development
- License
Overview
The Jobber MCP Server enables AI assistants and automation tools to interact with Jobber's complete field service management platform. It supports:
- Client & Property Management: Track customers, properties, and service history
- Job Lifecycle: From quotes to completion with full workflow support
- Scheduling: Manage visits, assignments, and team calendars
- Invoicing: Create, send, and track payments
- Team Management: Monitor team performance, timesheets, and utilization
- Forms: Build custom forms and capture submissions
- Reporting: Generate business insights and analytics
Installation
npm install @mcpengine/jobber-server
Or install from source:
git clone https://github.com/BusyBee3333/mcpengine.git
cd mcpengine/servers/jobber
npm install
npm run build
Configuration
Set your Jobber API token as an environment variable:
export JOBBER_API_TOKEN="your_api_token_here"
To obtain an API token:
- Log into your Jobber account
- Navigate to Settings > API Access
- Generate a new API token with appropriate permissions
Available Tools
Client Management
7 tools for managing customer relationships:
-
list_clients - List all clients with optional filtering
- Parameters:
isArchived,limit,cursor - Returns paginated client list with contact details
- Parameters:
-
get_client - Get a specific client by ID
- Parameters:
clientId - Returns full client details including contact info and billing address
- Parameters:
-
create_client - Create a new client
- Parameters:
firstName,lastName,companyName,email,phone,billingAddress - Returns newly created client
- Parameters:
-
update_client - Update existing client information
- Parameters:
clientId,firstName,lastName,companyName,email,phone,billingAddress - Returns updated client
- Parameters:
-
archive_client - Archive a client
- Parameters:
clientId - Returns archived client status
- Parameters:
-
search_clients - Search clients by name, email, or phone
- Parameters:
query,limit - Returns matching clients
- Parameters:
-
list_client_properties - List all properties for a client
- Parameters:
clientId,limit,cursor - Returns paginated property list
- Parameters:
Job Management
8 tools for complete job lifecycle management:
-
list_jobs - List all jobs with filtering
- Parameters:
status,clientId,limit,cursor - Returns paginated job list with status and details
- Parameters:
-
get_job - Get detailed job information
- Parameters:
jobId - Returns complete job details including line items and visits
- Parameters:
-
create_job - Create a new job
- Parameters:
title,description,clientId,propertyId,startAt,endAt - Returns newly created job
- Parameters:
-
update_job - Update job information
- Parameters:
jobId,title,description,startAt,endAt,status - Returns updated job
- Parameters:
-
close_job - Mark a job as complete
- Parameters:
jobId - Returns closed job status
- Parameters:
-
create_job_visit - Schedule a visit for a job
- Parameters:
jobId,title,startAt,endAt,assignedUserIds - Returns created visit
- Parameters:
-
list_job_visits - List all visits for a job
- Parameters:
jobId,limit,cursor - Returns paginated visit list
- Parameters:
-
list_job_line_items - List all line items on a job
- Parameters:
jobId,limit,cursor - Returns job line items with pricing
- Parameters:
Quote Management
8 tools for creating and managing quotes:
-
list_quotes - List all quotes
- Parameters:
status,clientId,limit,cursor - Returns paginated quote list
- Parameters:
-
get_quote - Get detailed quote information
- Parameters:
quoteId - Returns complete quote with line items
- Parameters:
-
create_quote - Create a new quote
- Parameters:
title,message,clientId,propertyId - Returns newly created quote
- Parameters:
-
update_quote - Update quote details
- Parameters:
quoteId,title,message,status - Returns updated quote
- Parameters:
-
send_quote - Send quote to client
- Parameters:
quoteId,recipientEmail - Returns send status
- Parameters:
-
approve_quote - Approve a quote
- Parameters:
quoteId - Returns approved quote
- Parameters:
-
convert_quote_to_job - Convert approved quote to job
- Parameters:
quoteId - Returns created job
- Parameters:
-
list_quote_line_items - List all line items on a quote
- Parameters:
quoteId,limit,cursor - Returns quote line items
- Parameters:
Invoice Management
7 tools for billing and payments:
-
list_invoices - List all invoices
- Parameters:
status,clientId,limit,cursor - Returns paginated invoice list
- Parameters:
-
get_invoice - Get detailed invoice information
- Parameters:
invoiceId - Returns complete invoice with line items and payments
- Parameters:
-
create_invoice - Create a new invoice
- Parameters:
jobId,subject,message,issueDate,dueDate - Returns newly created invoice
- Parameters:
-
send_invoice - Send invoice to client
- Parameters:
invoiceId,recipientEmail - Returns send status
- Parameters:
-
mark_invoice_paid - Mark invoice as paid
- Parameters:
invoiceId,amount,paymentDate,method - Returns payment record
- Parameters:
-
create_payment - Record a payment
- Parameters:
invoiceId,amount,paymentDate,method,reference - Returns payment details
- Parameters:
-
list_invoice_payments - List payments for an invoice
- Parameters:
invoiceId,limit,cursor - Returns payment history
- Parameters:
Scheduling & Visits
6 tools for managing schedules and field visits:
-
list_visits - List all scheduled visits
- Parameters:
startDate,endDate,status,limit,cursor - Returns paginated visit list
- Parameters:
-
get_visit - Get detailed visit information
- Parameters:
visitId - Returns complete visit details with assignments
- Parameters:
-
create_visit - Create a new visit
- Parameters:
jobId,title,startAt,endAt,assignedUserIds - Returns created visit
- Parameters:
-
update_visit - Update visit details
- Parameters:
visitId,title,startAt,endAt,status - Returns updated visit
- Parameters:
-
complete_visit - Mark visit as complete
- Parameters:
visitId,completionNotes - Returns completed visit
- Parameters:
-
list_visit_assignments - List team member assignments for visits
- Parameters:
visitId,limit - Returns assigned team members
- Parameters:
Team Management
4 tools for managing your field service team:
-
list_users - List all team members
- Parameters:
isActive,limit,cursor - Returns paginated user list
- Parameters:
-
get_user - Get detailed user information
- Parameters:
userId - Returns user details and role information
- Parameters:
-
get_team_utilization_report - Get team utilization metrics
- Parameters:
startDate,endDate,userIds - Returns utilization statistics
- Parameters:
-
get_user_timesheet - Get timesheet for a user
- Parameters:
userId,startDate,endDate - Returns time entries and totals
- Parameters:
Expense Tracking
5 tools for managing business expenses:
-
list_expenses - List all expenses
- Parameters:
status,userId,startDate,endDate,limit,cursor - Returns paginated expense list
- Parameters:
-
get_expense - Get detailed expense information
- Parameters:
expenseId - Returns expense details with attachments
- Parameters:
-
create_expense - Create a new expense
- Parameters:
description,amount,category,date,userId - Returns created expense
- Parameters:
-
update_expense - Update expense details
- Parameters:
expenseId,description,amount,category,status - Returns updated expense
- Parameters:
-
delete_expense - Delete an expense
- Parameters:
expenseId - Returns deletion confirmation
- Parameters:
Product Catalog
5 tools for managing products and services:
-
list_products - List all products
- Parameters:
isActive,limit,cursor - Returns paginated product list
- Parameters:
-
get_product - Get detailed product information
- Parameters:
productId - Returns product details with pricing
- Parameters:
-
create_product - Create a new product
- Parameters:
name,description,unitPrice,unit,taxable - Returns created product
- Parameters:
-
update_product - Update product details
- Parameters:
productId,name,description,unitPrice,isActive - Returns updated product
- Parameters:
-
delete_product - Delete a product
- Parameters:
productId - Returns deletion confirmation
- Parameters:
Service Requests
6 tools for managing incoming service requests:
-
list_requests - List all service requests
- Parameters:
status,limit,cursor - Returns paginated request list
- Parameters:
-
get_request - Get detailed request information
- Parameters:
requestId - Returns request details and contact info
- Parameters:
-
create_request - Create a new service request
- Parameters:
title,description,clientName,clientEmail,clientPhone - Returns created request
- Parameters:
-
update_request - Update request status and details
- Parameters:
requestId,status,notes - Returns updated request
- Parameters:
-
convert_request_to_quote - Convert request to quote
- Parameters:
requestId - Returns created quote
- Parameters:
-
convert_request_to_job - Convert request directly to job
- Parameters:
requestId - Returns created job
- Parameters:
Reporting & Analytics
3 tools for business intelligence:
-
get_revenue_report - Generate revenue report
- Parameters:
startDate,endDate,groupBy - Returns revenue metrics and trends
- Parameters:
-
get_job_profit_report - Get job profitability analysis
- Parameters:
startDate,endDate,clientId - Returns profit margins and costs
- Parameters:
-
get_team_utilization_report - Analyze team productivity
- Parameters:
startDate,endDate,userIds - Returns utilization percentages and billable hours
- Parameters:
Property Management
6 tools for managing service locations:
-
list_properties - List all properties
- Parameters:
clientId,limit,cursor - Returns paginated property list
- Parameters:
-
get_property - Get detailed property information
- Parameters:
propertyId - Returns property details and address
- Parameters:
-
create_property - Create a new property
- Parameters:
clientId,address,city,province,postalCode,country - Returns created property
- Parameters:
-
update_property - Update property details
- Parameters:
propertyId,address,city,province,postalCode - Returns updated property
- Parameters:
-
delete_property - Delete a property
- Parameters:
propertyId - Returns deletion confirmation
- Parameters:
-
set_default_property - Set default property for a client
- Parameters:
clientId,propertyId - Returns updated client
- Parameters:
Timesheet Management
7 tools for tracking team time:
-
list_time_entries - List all time entries
- Parameters:
userId,startDate,endDate,limit,cursor - Returns paginated time entry list
- Parameters:
-
get_time_entry - Get detailed time entry information
- Parameters:
timeEntryId - Returns time entry with job details
- Parameters:
-
create_time_entry - Create a new time entry
- Parameters:
userId,jobId,startTime,endTime,description - Returns created time entry
- Parameters:
-
update_time_entry - Update time entry details
- Parameters:
timeEntryId,startTime,endTime,description - Returns updated time entry
- Parameters:
-
delete_time_entry - Delete a time entry
- Parameters:
timeEntryId - Returns deletion confirmation
- Parameters:
-
stop_time_entry - Stop a running time entry
- Parameters:
timeEntryId - Returns stopped time entry
- Parameters:
-
get_user_timesheet - Get complete timesheet for a user
- Parameters:
userId,startDate,endDate - Returns all time entries and totals
- Parameters:
Line Items
8 tools for managing quote/job/invoice line items:
-
create_job_line_item - Add line item to job
- Parameters:
jobId,name,description,quantity,unitPrice - Returns created line item
- Parameters:
-
create_quote_line_item - Add line item to quote
- Parameters:
quoteId,name,description,quantity,unitPrice - Returns created line item
- Parameters:
-
create_invoice_line_item - Add line item to invoice
- Parameters:
invoiceId,name,description,quantity,unitPrice - Returns created line item
- Parameters:
-
update_line_item - Update line item details
- Parameters:
lineItemId,name,description,quantity,unitPrice - Returns updated line item
- Parameters:
-
delete_line_item - Delete a line item
- Parameters:
lineItemId - Returns deletion confirmation
- Parameters:
-
reorder_line_items - Change line item order
- Parameters:
lineItemIds(ordered array) - Returns reordered items
- Parameters:
-
duplicate_line_item - Copy a line item
- Parameters:
lineItemId - Returns duplicated item
- Parameters:
-
bulk_update_line_items - Update multiple line items
- Parameters:
updates(array of updates) - Returns updated items
- Parameters:
Form Builder
8 tools for creating and managing custom forms:
-
list_forms - List all forms
- Parameters:
limit,cursor - Returns paginated form list
- Parameters:
-
get_form - Get form definition
- Parameters:
formId - Returns form with all fields
- Parameters:
-
create_form - Create a new form
- Parameters:
name,fields(array) - Returns created form
- Parameters:
-
update_form - Update form definition
- Parameters:
formId,name,fields - Returns updated form
- Parameters:
-
delete_form - Delete a form
- Parameters:
formId - Returns deletion confirmation
- Parameters:
-
submit_form - Submit form data
- Parameters:
formId,data(field values) - Returns submission record
- Parameters:
-
list_form_submissions - List all submissions for a form
- Parameters:
formId,limit,cursor - Returns paginated submissions
- Parameters:
-
get_form_submission - Get detailed submission
- Parameters:
submissionId - Returns submission with all field values
- Parameters:
Tax Management
8 tools for managing taxes and tax calculations:
-
list_taxes - List all tax rates
- Parameters:
isActive,limit,cursor - Returns paginated tax list
- Parameters:
-
get_tax - Get tax details
- Parameters:
taxId - Returns tax rate and settings
- Parameters:
-
create_tax - Create a new tax
- Parameters:
name,rate,isCompound - Returns created tax
- Parameters:
-
update_tax - Update tax details
- Parameters:
taxId,name,rate,isActive - Returns updated tax
- Parameters:
-
delete_tax - Delete a tax
- Parameters:
taxId - Returns deletion confirmation
- Parameters:
-
apply_tax_to_line_item - Apply tax to a line item
- Parameters:
lineItemId,taxId - Returns updated line item
- Parameters:
-
remove_tax_from_line_item - Remove tax from line item
- Parameters:
lineItemId,taxId - Returns updated line item
- Parameters:
-
calculate_tax_total - Calculate total tax amount
- Parameters:
lineItemIds,taxIds - Returns calculated tax breakdown
- Parameters:
React Applications
15 Interactive Web Applications
All applications are built with React 18, TypeScript, and Tailwind CSS. Each app is production-ready and fully functional.
1. Client Dashboard
Path: src/ui/react-app/src/apps/client-dashboard/
View and manage all clients with revenue and job statistics. Features:
- Client list with search and filtering
- Revenue tracking per client
- Job count and status overview
- Quick access to client details
2. Client Detail
Path: src/ui/react-app/src/apps/client-detail/
Comprehensive client profile view with:
- Complete contact information
- Property list
- Job history
- Revenue metrics
- Quick actions for creating quotes/jobs
3. Expense Manager
Path: src/ui/react-app/src/apps/expense-manager/
Track and approve team expenses:
- Filter by status (pending/approved/rejected)
- Category-based organization
- Attachment support
- Approval workflow
4. Financial Dashboard
Path: src/ui/react-app/src/apps/financial-dashboard/
Business financial overview:
- Total revenue and expenses
- Net profit calculation
- Outstanding vs paid invoices
- Monthly growth metrics
- Collection rate tracking
5. Form Builder
Path: src/ui/react-app/src/apps/form-builder/
Visual form designer with:
- Drag-and-drop field management
- Multiple field types (text, select, textarea, checkbox, date)
- Required field configuration
- Live preview
- Form submission handling
6. Invoice Dashboard
Path: src/ui/react-app/src/apps/invoice-dashboard/
Invoice management interface:
- Invoice list with status filtering
- Payment tracking
- Quick send and payment actions
- Client and amount details
7. Job Board
Path: src/ui/react-app/src/apps/job-board/
Visual job management board:
- Kanban-style job organization
- Status-based filtering (quoted, scheduled, in progress, completed)
- Job cards with key metrics
- Quick status updates
8. Job Detail
Path: src/ui/react-app/src/apps/job-detail/
Comprehensive job view:
- Job information and timeline
- Line items and pricing
- Visit schedule
- Client and property details
- Status management
9. Property Map
Path: src/ui/react-app/src/apps/property-map/
Geographic property visualization:
- Interactive map view
- Property markers with job counts
- Property list panel
- Client information
- Click to select and view details
10. Quote Builder
Path: src/ui/react-app/src/apps/quote-builder/
Create and edit quotes:
- Client selection
- Line item management
- Pricing calculator
- Tax application
- Quote preview
11. Request Inbox
Path: src/ui/react-app/src/apps/request-inbox/
Service request management:
- Request status workflow (new, contacted, quoted, converted)
- Priority indicators
- Client contact information
- Quick actions (contact, quote, convert)
12. Schedule Calendar
Path: src/ui/react-app/src/apps/schedule-calendar/
Visual scheduling interface:
- Day/week calendar view
- Visit timeline visualization
- Team member assignments
- Status tracking (scheduled, in progress, completed)
- Time slot management
13. Team Overview
Path: src/ui/react-app/src/apps/team-overview/
Team performance dashboard:
- Team member list
- Active and completed job counts
- Weekly hours tracking
- Availability status
- Performance metrics
14. Timesheet Grid
Path: src/ui/react-app/src/apps/timesheet-grid/
Time entry management:
- Tabular timesheet view
- Approval workflow
- Filter by status (pending/approved)
- Employee and job details
- Hours calculation
15. Visit Tracker
Path: src/ui/react-app/src/apps/visit-tracker/
Field visit tracking:
- Visit status workflow (scheduled, en route, in progress, completed)
- Client and location details
- Team assignments
- Notes and completion tracking
- Quick status updates
Usage Examples
Basic Connection
import { JobberServer } from '@mcpengine/jobber-server';
const server = new JobberServer();
await server.run();
Create Client and Job
// Create a new client
const client = await tools.create_client({
firstName: "John",
lastName: "Doe",
companyName: "Doe Enterprises",
email: "john@doeenterprises.com",
phone: "555-0123"
});
// Create a job for the client
const job = await tools.create_job({
title: "HVAC Installation",
description: "Install new heating system",
clientId: client.id,
startAt: "2024-02-20T09:00:00Z",
endAt: "2024-02-20T17:00:00Z"
});
Generate Quote and Convert to Job
// Create a quote
const quote = await tools.create_quote({
title: "Kitchen Renovation",
message: "As discussed, here is your quote",
clientId: "client_123"
});
// Add line items
await tools.create_quote_line_item({
quoteId: quote.id,
name: "Cabinet Installation",
quantity: 1,
unitPrice: 2500
});
// Send to client
await tools.send_quote({
quoteId: quote.id,
recipientEmail: "client@example.com"
});
// After approval, convert to job
const job = await tools.convert_quote_to_job({
quoteId: quote.id
});
Track Team Time
// Start time entry
const timeEntry = await tools.create_time_entry({
userId: "user_123",
jobId: "job_456",
startTime: "2024-02-15T09:00:00Z",
description: "Installation work"
});
// Stop when complete
await tools.stop_time_entry({
timeEntryId: timeEntry.id
});
// Get user timesheet
const timesheet = await tools.get_user_timesheet({
userId: "user_123",
startDate: "2024-02-12",
endDate: "2024-02-18"
});
Generate Reports
// Revenue report
const revenue = await tools.get_revenue_report({
startDate: "2024-01-01",
endDate: "2024-01-31",
groupBy: "week"
});
// Team utilization
const utilization = await tools.get_team_utilization_report({
startDate: "2024-02-01",
endDate: "2024-02-29",
userIds: ["user_1", "user_2", "user_3"]
});
GraphQL API
This server uses Jobber's GraphQL API. All tools execute GraphQL queries and mutations against the Jobber platform.
Authentication
API requests require a valid Jobber API token passed via the JOBBER_API_TOKEN environment variable.
Rate Limiting
Jobber implements rate limiting on API requests. This server respects those limits. For high-volume operations, consider:
- Batching requests
- Implementing retry logic
- Using pagination cursors
API Documentation
For complete Jobber GraphQL API documentation, visit: https://developer.getjobber.com/docs/
Development
Build from Source
# Clone repository
git clone https://github.com/BusyBee3333/mcpengine.git
cd mcpengine/servers/jobber
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run in development mode
npm run dev
TypeScript Compilation
# Type check without emitting
npx tsc --noEmit
# Build with source maps
npm run build
Project Structure
jobber/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server implementation
│ ├── clients/
│ │ └── jobber.ts # GraphQL client
│ ├── tools/ # 15 tool modules (96 total tools)
│ │ ├── clients-tools.ts
│ │ ├── jobs-tools.ts
│ │ ├── quotes-tools.ts
│ │ ├── invoices-tools.ts
│ │ ├── scheduling-tools.ts
│ │ ├── team-tools.ts
│ │ ├── expenses-tools.ts
│ │ ├── products-tools.ts
│ │ ├── requests-tools.ts
│ │ ├── reporting-tools.ts
│ │ ├── properties-tools.ts
│ │ ├── timesheets-tools.ts
│ │ ├── line-items-tools.ts
│ │ ├── forms-tools.ts
│ │ └── taxes-tools.ts
│ └── ui/
│ └── react-app/
│ └── src/
│ └── apps/ # 15 React applications
│ ├── client-dashboard/
│ ├── client-detail/
│ ├── expense-manager/
│ ├── financial-dashboard/
│ ├── form-builder/
│ ├── invoice-dashboard/
│ ├── job-board/
│ ├── job-detail/
│ ├── property-map/
│ ├── quote-builder/
│ ├── request-inbox/
│ ├── schedule-calendar/
│ ├── team-overview/
│ ├── timesheet-grid/
│ └── visit-tracker/
├── dist/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md
Contributing
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
MIT License - see LICENSE file for details
Built with ❤️ using:
- Model Context Protocol
- Jobber GraphQL API
- TypeScript 5.7+
- React 18+
- Zod for validation
Part of the MCPEngine project - A comprehensive collection of MCP servers for business platforms.
For issues and support, visit: https://github.com/BusyBee3333/mcpengine/issues