# 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](#overview) - [Installation](#installation) - [Configuration](#configuration) - [Available Tools (96)](#available-tools) - [Client Management (7 tools)](#client-management) - [Job Management (8 tools)](#job-management) - [Quote Management (8 tools)](#quote-management) - [Invoice Management (7 tools)](#invoice-management) - [Scheduling & Visits (6 tools)](#scheduling--visits) - [Team Management (4 tools)](#team-management) - [Expense Tracking (5 tools)](#expense-tracking) - [Product Catalog (5 tools)](#product-catalog) - [Service Requests (6 tools)](#service-requests) - [Reporting & Analytics (3 tools)](#reporting--analytics) - [Property Management (6 tools)](#property-management) - [Timesheet Management (7 tools)](#timesheet-management) - [Line Items (8 tools)](#line-items) - [Form Builder (8 tools)](#form-builder) - [Tax Management (8 tools)](#tax-management) - [React Applications (15)](#react-applications) - [Usage Examples](#usage-examples) - [GraphQL API](#graphql-api) - [Development](#development) - [License](#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 ```bash npm install @mcpengine/jobber-server ``` Or install from source: ```bash 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: ```bash export JOBBER_API_TOKEN="your_api_token_here" ``` To obtain an API token: 1. Log into your Jobber account 2. Navigate to Settings > API Access 3. Generate a new API token with appropriate permissions ## Available Tools ### Client Management **7 tools** for managing customer relationships: 1. **list_clients** - List all clients with optional filtering - Parameters: `isArchived`, `limit`, `cursor` - Returns paginated client list with contact details 2. **get_client** - Get a specific client by ID - Parameters: `clientId` - Returns full client details including contact info and billing address 3. **create_client** - Create a new client - Parameters: `firstName`, `lastName`, `companyName`, `email`, `phone`, `billingAddress` - Returns newly created client 4. **update_client** - Update existing client information - Parameters: `clientId`, `firstName`, `lastName`, `companyName`, `email`, `phone`, `billingAddress` - Returns updated client 5. **archive_client** - Archive a client - Parameters: `clientId` - Returns archived client status 6. **search_clients** - Search clients by name, email, or phone - Parameters: `query`, `limit` - Returns matching clients 7. **list_client_properties** - List all properties for a client - Parameters: `clientId`, `limit`, `cursor` - Returns paginated property list ### Job Management **8 tools** for complete job lifecycle management: 1. **list_jobs** - List all jobs with filtering - Parameters: `status`, `clientId`, `limit`, `cursor` - Returns paginated job list with status and details 2. **get_job** - Get detailed job information - Parameters: `jobId` - Returns complete job details including line items and visits 3. **create_job** - Create a new job - Parameters: `title`, `description`, `clientId`, `propertyId`, `startAt`, `endAt` - Returns newly created job 4. **update_job** - Update job information - Parameters: `jobId`, `title`, `description`, `startAt`, `endAt`, `status` - Returns updated job 5. **close_job** - Mark a job as complete - Parameters: `jobId` - Returns closed job status 6. **create_job_visit** - Schedule a visit for a job - Parameters: `jobId`, `title`, `startAt`, `endAt`, `assignedUserIds` - Returns created visit 7. **list_job_visits** - List all visits for a job - Parameters: `jobId`, `limit`, `cursor` - Returns paginated visit list 8. **list_job_line_items** - List all line items on a job - Parameters: `jobId`, `limit`, `cursor` - Returns job line items with pricing ### Quote Management **8 tools** for creating and managing quotes: 1. **list_quotes** - List all quotes - Parameters: `status`, `clientId`, `limit`, `cursor` - Returns paginated quote list 2. **get_quote** - Get detailed quote information - Parameters: `quoteId` - Returns complete quote with line items 3. **create_quote** - Create a new quote - Parameters: `title`, `message`, `clientId`, `propertyId` - Returns newly created quote 4. **update_quote** - Update quote details - Parameters: `quoteId`, `title`, `message`, `status` - Returns updated quote 5. **send_quote** - Send quote to client - Parameters: `quoteId`, `recipientEmail` - Returns send status 6. **approve_quote** - Approve a quote - Parameters: `quoteId` - Returns approved quote 7. **convert_quote_to_job** - Convert approved quote to job - Parameters: `quoteId` - Returns created job 8. **list_quote_line_items** - List all line items on a quote - Parameters: `quoteId`, `limit`, `cursor` - Returns quote line items ### Invoice Management **7 tools** for billing and payments: 1. **list_invoices** - List all invoices - Parameters: `status`, `clientId`, `limit`, `cursor` - Returns paginated invoice list 2. **get_invoice** - Get detailed invoice information - Parameters: `invoiceId` - Returns complete invoice with line items and payments 3. **create_invoice** - Create a new invoice - Parameters: `jobId`, `subject`, `message`, `issueDate`, `dueDate` - Returns newly created invoice 4. **send_invoice** - Send invoice to client - Parameters: `invoiceId`, `recipientEmail` - Returns send status 5. **mark_invoice_paid** - Mark invoice as paid - Parameters: `invoiceId`, `amount`, `paymentDate`, `method` - Returns payment record 6. **create_payment** - Record a payment - Parameters: `invoiceId`, `amount`, `paymentDate`, `method`, `reference` - Returns payment details 7. **list_invoice_payments** - List payments for an invoice - Parameters: `invoiceId`, `limit`, `cursor` - Returns payment history ### Scheduling & Visits **6 tools** for managing schedules and field visits: 1. **list_visits** - List all scheduled visits - Parameters: `startDate`, `endDate`, `status`, `limit`, `cursor` - Returns paginated visit list 2. **get_visit** - Get detailed visit information - Parameters: `visitId` - Returns complete visit details with assignments 3. **create_visit** - Create a new visit - Parameters: `jobId`, `title`, `startAt`, `endAt`, `assignedUserIds` - Returns created visit 4. **update_visit** - Update visit details - Parameters: `visitId`, `title`, `startAt`, `endAt`, `status` - Returns updated visit 5. **complete_visit** - Mark visit as complete - Parameters: `visitId`, `completionNotes` - Returns completed visit 6. **list_visit_assignments** - List team member assignments for visits - Parameters: `visitId`, `limit` - Returns assigned team members ### Team Management **4 tools** for managing your field service team: 1. **list_users** - List all team members - Parameters: `isActive`, `limit`, `cursor` - Returns paginated user list 2. **get_user** - Get detailed user information - Parameters: `userId` - Returns user details and role information 3. **get_team_utilization_report** - Get team utilization metrics - Parameters: `startDate`, `endDate`, `userIds` - Returns utilization statistics 4. **get_user_timesheet** - Get timesheet for a user - Parameters: `userId`, `startDate`, `endDate` - Returns time entries and totals ### Expense Tracking **5 tools** for managing business expenses: 1. **list_expenses** - List all expenses - Parameters: `status`, `userId`, `startDate`, `endDate`, `limit`, `cursor` - Returns paginated expense list 2. **get_expense** - Get detailed expense information - Parameters: `expenseId` - Returns expense details with attachments 3. **create_expense** - Create a new expense - Parameters: `description`, `amount`, `category`, `date`, `userId` - Returns created expense 4. **update_expense** - Update expense details - Parameters: `expenseId`, `description`, `amount`, `category`, `status` - Returns updated expense 5. **delete_expense** - Delete an expense - Parameters: `expenseId` - Returns deletion confirmation ### Product Catalog **5 tools** for managing products and services: 1. **list_products** - List all products - Parameters: `isActive`, `limit`, `cursor` - Returns paginated product list 2. **get_product** - Get detailed product information - Parameters: `productId` - Returns product details with pricing 3. **create_product** - Create a new product - Parameters: `name`, `description`, `unitPrice`, `unit`, `taxable` - Returns created product 4. **update_product** - Update product details - Parameters: `productId`, `name`, `description`, `unitPrice`, `isActive` - Returns updated product 5. **delete_product** - Delete a product - Parameters: `productId` - Returns deletion confirmation ### Service Requests **6 tools** for managing incoming service requests: 1. **list_requests** - List all service requests - Parameters: `status`, `limit`, `cursor` - Returns paginated request list 2. **get_request** - Get detailed request information - Parameters: `requestId` - Returns request details and contact info 3. **create_request** - Create a new service request - Parameters: `title`, `description`, `clientName`, `clientEmail`, `clientPhone` - Returns created request 4. **update_request** - Update request status and details - Parameters: `requestId`, `status`, `notes` - Returns updated request 5. **convert_request_to_quote** - Convert request to quote - Parameters: `requestId` - Returns created quote 6. **convert_request_to_job** - Convert request directly to job - Parameters: `requestId` - Returns created job ### Reporting & Analytics **3 tools** for business intelligence: 1. **get_revenue_report** - Generate revenue report - Parameters: `startDate`, `endDate`, `groupBy` - Returns revenue metrics and trends 2. **get_job_profit_report** - Get job profitability analysis - Parameters: `startDate`, `endDate`, `clientId` - Returns profit margins and costs 3. **get_team_utilization_report** - Analyze team productivity - Parameters: `startDate`, `endDate`, `userIds` - Returns utilization percentages and billable hours ### Property Management **6 tools** for managing service locations: 1. **list_properties** - List all properties - Parameters: `clientId`, `limit`, `cursor` - Returns paginated property list 2. **get_property** - Get detailed property information - Parameters: `propertyId` - Returns property details and address 3. **create_property** - Create a new property - Parameters: `clientId`, `address`, `city`, `province`, `postalCode`, `country` - Returns created property 4. **update_property** - Update property details - Parameters: `propertyId`, `address`, `city`, `province`, `postalCode` - Returns updated property 5. **delete_property** - Delete a property - Parameters: `propertyId` - Returns deletion confirmation 6. **set_default_property** - Set default property for a client - Parameters: `clientId`, `propertyId` - Returns updated client ### Timesheet Management **7 tools** for tracking team time: 1. **list_time_entries** - List all time entries - Parameters: `userId`, `startDate`, `endDate`, `limit`, `cursor` - Returns paginated time entry list 2. **get_time_entry** - Get detailed time entry information - Parameters: `timeEntryId` - Returns time entry with job details 3. **create_time_entry** - Create a new time entry - Parameters: `userId`, `jobId`, `startTime`, `endTime`, `description` - Returns created time entry 4. **update_time_entry** - Update time entry details - Parameters: `timeEntryId`, `startTime`, `endTime`, `description` - Returns updated time entry 5. **delete_time_entry** - Delete a time entry - Parameters: `timeEntryId` - Returns deletion confirmation 6. **stop_time_entry** - Stop a running time entry - Parameters: `timeEntryId` - Returns stopped time entry 7. **get_user_timesheet** - Get complete timesheet for a user - Parameters: `userId`, `startDate`, `endDate` - Returns all time entries and totals ### Line Items **8 tools** for managing quote/job/invoice line items: 1. **create_job_line_item** - Add line item to job - Parameters: `jobId`, `name`, `description`, `quantity`, `unitPrice` - Returns created line item 2. **create_quote_line_item** - Add line item to quote - Parameters: `quoteId`, `name`, `description`, `quantity`, `unitPrice` - Returns created line item 3. **create_invoice_line_item** - Add line item to invoice - Parameters: `invoiceId`, `name`, `description`, `quantity`, `unitPrice` - Returns created line item 4. **update_line_item** - Update line item details - Parameters: `lineItemId`, `name`, `description`, `quantity`, `unitPrice` - Returns updated line item 5. **delete_line_item** - Delete a line item - Parameters: `lineItemId` - Returns deletion confirmation 6. **reorder_line_items** - Change line item order - Parameters: `lineItemIds` (ordered array) - Returns reordered items 7. **duplicate_line_item** - Copy a line item - Parameters: `lineItemId` - Returns duplicated item 8. **bulk_update_line_items** - Update multiple line items - Parameters: `updates` (array of updates) - Returns updated items ### Form Builder **8 tools** for creating and managing custom forms: 1. **list_forms** - List all forms - Parameters: `limit`, `cursor` - Returns paginated form list 2. **get_form** - Get form definition - Parameters: `formId` - Returns form with all fields 3. **create_form** - Create a new form - Parameters: `name`, `fields` (array) - Returns created form 4. **update_form** - Update form definition - Parameters: `formId`, `name`, `fields` - Returns updated form 5. **delete_form** - Delete a form - Parameters: `formId` - Returns deletion confirmation 6. **submit_form** - Submit form data - Parameters: `formId`, `data` (field values) - Returns submission record 7. **list_form_submissions** - List all submissions for a form - Parameters: `formId`, `limit`, `cursor` - Returns paginated submissions 8. **get_form_submission** - Get detailed submission - Parameters: `submissionId` - Returns submission with all field values ### Tax Management **8 tools** for managing taxes and tax calculations: 1. **list_taxes** - List all tax rates - Parameters: `isActive`, `limit`, `cursor` - Returns paginated tax list 2. **get_tax** - Get tax details - Parameters: `taxId` - Returns tax rate and settings 3. **create_tax** - Create a new tax - Parameters: `name`, `rate`, `isCompound` - Returns created tax 4. **update_tax** - Update tax details - Parameters: `taxId`, `name`, `rate`, `isActive` - Returns updated tax 5. **delete_tax** - Delete a tax - Parameters: `taxId` - Returns deletion confirmation 6. **apply_tax_to_line_item** - Apply tax to a line item - Parameters: `lineItemId`, `taxId` - Returns updated line item 7. **remove_tax_from_line_item** - Remove tax from line item - Parameters: `lineItemId`, `taxId` - Returns updated line item 8. **calculate_tax_total** - Calculate total tax amount - Parameters: `lineItemIds`, `taxIds` - Returns calculated tax breakdown ## 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 ```typescript import { JobberServer } from '@mcpengine/jobber-server'; const server = new JobberServer(); await server.run(); ``` ### Create Client and Job ```typescript // 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 ```typescript // 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 ```typescript // 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 ```typescript // 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 ```bash # 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 ```bash # 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: 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests if applicable 5. Submit a pull request ## License MIT License - see LICENSE file for details --- **Built with ❤️ using:** - [Model Context Protocol](https://modelcontextprotocol.io/) - [Jobber GraphQL API](https://developer.getjobber.com/) - 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