使用说明
Jobber MCP服务器
用于Jobber现场服务管理平台的综合模型上下文协议(MCP)服务器。该服务器提供96个基于GraphQL的工具和15个基于React的应用程序,用于完整的业务运营管理。
目录
概述
Jobber MCP服务器使人工智能助手和自动化工具能够与Jobber的完整现场服务管理平台进行交互。它支持:
- 客户与物业管理:跟踪客户、物业和服务历史
- 作业生命周期:从报价到完成,提供完整的工作流程支持
- 调度:管理访问、任务和团队日历
- 开具发票:创建、发送和跟踪付款
- 团队管理:监控团队绩效、时间表和利用率
- 表单:构建自定义表单并捕获提交内容
- 报告:生成业务见解和分析
安装
npm install @mcpengine/jobber-server
或者从源代码安装:
git clone https://github.com/BusyBee3333/mcpengine.git
cd mcpengine/servers/jobber
npm install
npm run build
配置
将Jobber API令牌设置为环境变量:
export JOBBER_API_TOKEN="your_api_token_here"
要获取API令牌,请执行以下操作:
- 登录您的Jobber帐户
- 导航到“设置”>“API访问”
- 生成具有适当权限的新API令牌
可用工具
客户管理
7工具 用于管理客户关系:
-
list_clients -列出所有具有可选筛选功能的客户端
- 参数:
isArchived,limit,cursor - 返回带联系人详细信息的分页客户列表
- 参数:
-
get_client -按ID获取特定客户端
- 参数:
clientId - 返回完整的客户详细信息,包括联系信息和账单地址
- 参数:
-
创建客户端 -创建新客户端
- 参数:
firstName,lastName,companyName,email,phone,billingAddress - 返回新创建的客户端
- 参数:
-
更新客户端 -更新现有客户信息
- 参数:
clientId,firstName,lastName,companyName,email,phone,billingAddress - 返回更新的客户端
- 参数:
-
建筑客户端 -将客户存档
- 参数:
clientId - 返回已存档的客户端状态
- 参数:
-
搜索客户端 -按姓名、电子邮件或电话搜索客户
- 参数:
query,limit - 返回匹配的客户端
- 参数:
-
列表_客户_属性 -列出客户端的所有属性
- 参数:
clientId,limit,cursor - 返回分页属性列表
- 参数:
作业管理
8工具 为了实现完整的作业生命周期管理:
-
list_jobs -列出所有具有筛选功能的作业
- 参数:
status,clientId,limit,cursor - 返回带状态和详细信息的分页作业列表
- 参数:
-
get_job -获取详细的工作信息
- 参数:
jobId - 返回完整的工作详细信息,包括行项目和访问
- 参数:
-
create_job -创建新作业
- 参数:
title,description,clientId,propertyId,startAt,endAt - 返回新创建的作业
- 参数:
-
update_job -更新作业信息
- 参数:
jobId,title,description,startAt,endAt,status - 返回更新的作业
- 参数:
-
close_job -将作业标记为已完成
- 参数:
jobId - 返回已关闭的作业状态
- 参数:
-
create_job_visit -安排一次工作访问
- 参数:
jobId,title,startAt,endAt,assignedUserIds - 返回已创建的访问
- 参数:
-
list_job_visits -列出某个工作的所有访问
- 参数:
jobId,limit,cursor - 返回分页访问列表
- 参数:
-
list_job_line_items -列出作业中的所有行项目
- 参数:
jobId,limit,cursor - 返回带有定价的作业行项目
- 参数:
报价管理
8工具 用于创建和管理报价:
-
list_quotes -列出所有报价
- 参数:
status,clientId,limit,cursor - 返回分页报价列表
- 参数:
-
get_quote -获取详细的报价信息
- 参数:
quoteId - 返回包含行项目的完整报价
- 参数:
-
create_quote -创建新报价
- 参数:
title,message,clientId,propertyId - 返回新创建的报价
- 参数:
-
update_quote -更新报价详细信息
- 参数:
quoteId,title,message,status - 返回更新的报价
- 参数:
-
send_quote -向客户发送报价
- 参数:
quoteId,recipientEmail - 返回发送状态
- 参数:
-
批准_报价 -批准报价
- 参数:
quoteId - 返回已批准的报价
- 参数:
-
convert_quote_to_job -将批准的报价转换为工作
- 参数:
quoteId - 返回创建的作业
- 参数:
-
list_quote_line_items -列出报价单上的所有行项目
- 参数:
quoteId,limit,cursor - 返回报价行项目
- 参数:
发票管理
7工具 账单和付款:
-
list_invoices -列出所有发票
- 参数:
status,clientId,limit,cursor - 返回分页发票列表
- 参数:
-
get_invoice -获取详细的发票信息
- 参数:
invoiceId - 返回包含行项目和付款的完整发票
- 参数:
-
create_invoice -创建新发票
- 参数:
jobId,subject,message,issueDate,dueDate - 返回新创建的发票
- 参数:
-
send_invoice -向客户发送发票
- 参数:
invoiceId,recipientEmail - 返回发送状态
- 参数:
-
mark_invoice_paid -将发票标记为已付款
- 参数:
invoiceId,amount,paymentDate,method - 返回付款记录
- 参数:
-
创建_付款 -记录付款
- 参数:
invoiceId,amount,paymentDate,method,reference - 返回付款详细信息
- 参数:
-
list_invoice_付款 -列出发票的付款
- 参数:
invoiceId,limit,cursor - 返回付款历史记录
- 参数:
日程安排和参观
6工具 用于管理日程安排和实地考察:
-
list_访问次数 -列出所有已安排的访问
- 参数:
startDate,endDate,status,limit,cursor - 返回分页访问列表
- 参数:
-
get_visit -获取详细的访问信息
- 参数:
visitId - 返回完整的访问详细信息和任务
- 参数:
-
创建_访问 -创建新访问
- 参数:
jobId,title,startAt,endAt,assignedUserIds - 返回已创建的访问
- 参数:
-
update_visit -更新访问详细信息
- 参数:
visitId,title,startAt,endAt,status - 返回更新的访问
- 参数:
-
完成_访问 -将访问标记为完成
- 参数:
visitId,completionNotes - 返回已完成的访问
- 参数:
-
list_visit_分配 -列出团队成员的访问任务
- 参数:
visitId,limit - 返回分配的团队成员
- 参数:
团队管理
4工具 管理您的现场服务团队:
-
list_users -列出所有团队成员
- 参数:
isActive,limit,cursor - 返回分页用户列表
- 参数:
-
get_user -获取详细的用户信息
- 参数:
userId - 返回用户详细信息和角色信息
- 参数:
-
get_team_utilization_report -获取团队利用率指标
- 参数:
startDate,endDate,userIds - 退货利用率统计
- 参数:
-
用户时间表 -获取用户的时间表
- 参数:
userId,startDate,endDate - 返回时间条目和总计
- 参数:
支出追踪
5工具 用于管理业务费用:
-
list_费用 -列出所有费用
- 参数:
status,userId,startDate,endDate,limit,cursor - 返回分页的费用列表
- 参数:
-
get_expense -获取详细的费用信息
- 参数:
expenseId - 返回带有附件的费用明细
- 参数:
-
创建_费用 -创建新支出
- 参数:
description,amount,category,date,userId - 退货产生的费用
- 参数:
-
更新_费用 -更新费用明细
- 参数:
expenseId,description,amount,category,status - 返回更新的费用
- 参数:
-
删除_费用 -删除费用
- 参数:
expenseId - 返回删除确认
- 参数:
产品目录
5工具 用于管理产品和服务:
-
产品列表 -列出所有产品
- 参数:
isActive,limit,cursor - 返回分页的产品列表
- 参数:
-
get_产品 -获取详细的产品信息
- 参数:
productId - 返回产品详细信息和定价
- 参数:
-
创建产品 -创建新产品
- 参数:
name,description,unitPrice,unit,taxable - 返回已创建的产品
- 参数:
-
update_product -更新产品详细信息
- 参数:
productId,name,description,unitPrice,isActive - 返回更新的产品
- 参数:
-
删除产品 -删除产品
- 参数:
productId - 返回删除确认
- 参数:
服务请求
6工具 用于管理传入的服务请求:
-
list_requests -列出所有服务请求
- 参数:
status,limit,cursor - 返回分页请求列表
- 参数:
-
获取请求 -获取详细的请求信息
- 参数:
requestId - 返回请求详细信息和联系信息
- 参数:
-
创建请求 -创建新的服务请求
- 参数:
title,description,clientName,clientEmail,clientPhone - 返回已创建的请求
- 参数:
-
update_request -更新请求状态和详细信息
- 参数:
requestId,status,notes - 返回更新的请求
- 参数:
-
convert_request_to_quote -将请求转换为报价
- 参数:
requestId - 返回已创建的报价
- 参数:
-
convert_request_to_job -将请求直接转换为作业
- 参数:
requestId - 返回创建的作业
- 参数:
报告和分析
3工具 对于商业智能:
-
get_revenue_report -生成收入报告
- 参数:
startDate,endDate,groupBy - 返回收入指标和趋势
- 参数:
-
get_job_profit_report -获取工作盈利能力分析
- 参数:
startDate,endDate,clientId - 利润率和成本回报
- 参数:
-
get_team_utilization_report -分析团队生产力
- 参数:
startDate,endDate,userIds - 返回利用率百分比和计费小时数
- 参数:
物业管理
6工具 用于管理服务地点:
-
列表_特性 -列出所有属性
- 参数:
clientId,limit,cursor - 返回分页属性列表
- 参数:
-
get_财产 -获取详细的房产信息
- 参数:
propertyId - 返回物业详细信息和地址
- 参数:
-
创建属性 -创建新属性
- 参数:
clientId,address,city,province,postalCode,country - 返回已创建的属性
- 参数:
-
update_property -更新物业详细信息
- 参数:
propertyId,address,city,province,postalCode - 返回更新的属性
- 参数:
-
删除属性 -删除属性
- 参数:
propertyId - 返回删除确认
- 参数:
-
set_default_属性 -为客户端设置默认属性
- 参数:
clientId,propertyId - 返回更新的客户端
- 参数:
时间表管理
7工具 用于跟踪团队时间:
-
list_time_entrys -列出所有时间条目
- 参数:
userId,startDate,endDate,limit,cursor - 返回分页时间条目列表
- 参数:
-
get_time_entry -获取详细的时间输入信息
- 参数:
timeEntryId - 返回包含作业详细信息的时间条目
- 参数:
-
create_time_entry -创建新的时间条目
- 参数:
userId,jobId,startTime,endTime,description - 返回创建的时间条目
- 参数:
-
update_time_entry -更新时间条目详细信息
- 参数:
timeEntryId,startTime,endTime,description - 返回更新的时间条目
- 参数:
-
delete_time_entry -删除时间条目
- 参数:
timeEntryId - 返回删除确认
- 参数:
-
stop_time_entry -停止运行时间条目
- 参数:
timeEntryId - 返回已停止的时间输入
- 参数:
-
用户时间表 -获取用户的完整时间表
- 参数:
userId,startDate,endDate - 返回所有时间条目和总计
- 参数:
系列商品
8工具 用于管理报价/作业/发票行项目:
-
create_job_line_item -将行项目添加到作业中
- 参数:
jobId,name,description,quantity,unitPrice - 返回已创建的行项目
- 参数:
-
create_quote_line_item -在报价中添加行项目
- 参数:
quoteId,name,description,quantity,unitPrice - 返回已创建的行项目
- 参数:
-
create_invoice_line_item -将行项目添加到发票
- 参数:
invoiceId,name,description,quantity,unitPrice - 返回已创建的行项目
- 参数:
-
update_line_item -更新行项目详细信息
- 参数:
lineItemId,name,description,quantity,unitPrice - 返回更新的行项目
- 参数:
-
delete_line_item -删除行项目
- 参数:
lineItemId - 返回删除确认
- 参数:
-
重新排序_行_项 -更改行项目顺序
- 参数:
lineItemIds(有序数组) - 退回重新订购的商品
- 参数:
-
复制行项目 -复制行项目
- 参数:
lineItemId - 返回重复项
- 参数:
-
bulk_update_line_items -更新多行项目
- 参数:
updates(更新数组) - 返回更新的项目
- 参数:
表单构建器
8工具 用于创建和管理自定义表单:
-
list_forms -列出所有表单
- 参数:
limit,cursor - 返回分页表单列表
- 参数:
-
get_form -获取表单定义
- 参数:
formId - 返回包含所有字段的表单
- 参数:
-
create_form -创建新表单
- 参数:
name,fields(数组) - 返回已创建的表单
- 参数:
-
update_form -更新表单定义
- 参数:
formId,name,fields - 返回更新的表单
- 参数:
-
delete_form -删除表单
- 参数:
formId - 返回删除确认
- 参数:
-
提交表单 -提交表单数据
- 参数:
formId,data(字段值) - 返回提交记录
- 参数:
-
list_form_submissions -列出表单的所有提交内容
- 参数:
formId,limit,cursor - 返回分页提交
- 参数:
-
get_form_submission -获取详细提交
- 参数:
submissionId - 返回包含所有字段值的提交
- 参数:
税务管理
8工具 用于管理税务和税务计算:
-
list_taxs -列出所有税率
- 参数:
isActive,limit,cursor - 返回分页税务清单
- 参数:
-
get_tax -获取税务详细信息
- 参数:
taxId - 退货税率和设置
- 参数:
-
create_tax -创建新税
- 参数:
name,rate,isCompound - 纳税申报单
- 参数:
-
update_tax -更新税务详细信息
- 参数:
taxId,name,rate,isActive - 返回更新的税款
- 参数:
-
delete_tax -删除税款
- 参数:
taxId - 返回删除确认
- 参数:
-
应用_税务_在线项目 -对行项目征税
- 参数:
lineItemId,taxId - 返回更新的行项目
- 参数:
-
remove_tax_from_line_item -从行项目中删除税款
- 参数:
lineItemId,taxId - 返回更新的行项目
- 参数:
-
计算最大值总计 -计算总税额
- 参数:
lineItemIds,taxIds - 返回计算所得税明细
- 参数:
React应用程序
15交互式Web应用程序
所有应用程序都是用React 18、TypeScript和Tailwind CSS构建的。每个应用程序都已准备就绪,功能齐全。
1.客户端仪表板
路径: src/ui/react-app/src/apps/client-dashboard/
通过收入和工作统计数据查看和管理所有客户。特征:
- 具有搜索和过滤功能的客户端列表
- 每个客户的收入跟踪
- 作业计数和状态概述
- 快速访问客户详细信息
2.客户详细信息
路径: src/ui/react-app/src/apps/client-detail/
全面的客户资料视图,包括:
- 完整的联系方式
- 属性列表
- 工作经历
- 收入指标
- 创建报价/作业的快速操作
3.费用经理
路径: src/ui/react-app/src/apps/expense-manager/
跟踪和批准团队费用:
- 按状态筛选(待定/批准/拒绝)
- 基于类别的组织
- 附件支持
- 审批工作流程
4.财务仪表板
路径: src/ui/react-app/src/apps/financial-dashboard/
业务财务概述:
- 总收入和支出
- 净利润计算
- 未付发票与已付发票
- 月度增长指标
- 收款率跟踪
5.表单生成器
路径: src/ui/react-app/src/apps/form-builder/
视觉形式设计师:
- 拖放字段管理
- 多种字段类型(文本、选择、文本区域、复选框、日期)
- 必填字段配置
- 实时预览
- 表单提交处理
6.发票仪表板
路径: src/ui/react-app/src/apps/invoice-dashboard/
发票管理界面:
- 带状态过滤的发票列表
- 付款跟踪
- 快速发送和付款操作
- 客户和金额详细信息
7.工作板
路径: src/ui/react-app/src/apps/job-board/
可视化作业管理板:
- 看板式作业组织
- 基于状态的筛选(已报价、已计划、正在进行、已完成)
- 带有关键指标的工作卡
- 快速状态更新
8.工作细节
路径: src/ui/react-app/src/apps/job-detail/
全面的工作视图:
- 工作信息和时间表
- 行项目和定价
- 访问日程表
- 客户和物业详细信息
- 状态管理
9.房产地图
路径: src/ui/react-app/src/apps/property-map/
地理属性可视化:
- 交互式地图视图
- 带有作业计数的属性标记
- 属性列表面板
- 客户信息
- 单击以选择和查看详细信息
10.报价生成器
路径: src/ui/react-app/src/apps/quote-builder/
创建和编辑报价:
- 客户选择
- 行项目管理
- 定价计算器
- 税务申请
- 报价预览
11.请求收件箱
路径: src/ui/react-app/src/apps/request-inbox/
服务请求管理:
- 请求状态工作流(新、已联系、已报价、已转换)
- 优先级指标
- 客户联系信息
- 快速操作(联系、报价、转换)
12.日程表
路径: src/ui/react-app/src/apps/schedule-calendar/
可视化调度界面:
- 日/周日历视图
- 访问时间线可视化
- 团队成员分配
- 状态跟踪(已计划、正在进行、已完成)
- 时隙管理
13.团队概述
路径: src/ui/react-app/src/apps/team-overview/
团队绩效仪表板:
- 团队成员列表
- 活动和已完成的作业计数
- 每周小时跟踪
- 可用性状态
- 性能指标
14.时间表网格
路径: src/ui/react-app/src/apps/timesheet-grid/
时间录入管理:
- 表格时间表视图
- 审批工作流程
- 按状态筛选(待定/批准)
- 员工和工作详细信息
- 工时计算
15.访问跟踪器
路径: src/ui/react-app/src/apps/visit-tracker/
实地考察跟踪:
- 就诊状态工作流程(已安排、正在途中、正在进行、已完成)
- 客户和位置详细信息
- 团队作业
- 备注和完成跟踪
- 快速状态更新
使用示例
基本连接
import { JobberServer } from '@mcpengine/jobber-server';
const server = new JobberServer();
await server.run();
创建客户和作业
// 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"
});
生成报价并转换为工作
// 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
});
追踪团队时间
// 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"
});
生成报告
// 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
此服务器使用Jobber的GraphQL API。所有工具都对Jobber平台执行GraphQL查询和突变。
认证
API请求需要通过 JOBBER_API_TOKEN 环境变量。
速率限制
Jobber对API请求实现速率限制。此服务器遵守这些限制。对于大批量操作,请考虑:
- 批处理请求
- 实现重试逻辑
- 使用分页光标
API 文档
有关完整的Jobber GraphQL API文档,请访问: https://developer.getjobber.com/docs/
发展
从源代码构建
# 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编译
# Type check without emitting
npx tsc --noEmit
# Build with source maps
npm run build
项目结构
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
贡献
欢迎投稿!拜托:
- 克隆该仓库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件
内置于❤️ 使用:
- 模型上下文协议
- Jobber GraphQL API
- TypeScript 5.7+
- 反应18+
- Zod用于验证
MCPEngine项目的一部分 -用于业务平台的MCP服务器的全面集合。
有关问题和支持,请访问:https://github.com/BusyBee3333/mcpengine/issues
