跳过安装。2 分钟内即可运行。
在 cloud.anythingmcp.com 开始免费试用,一键添加 ServiceTitan,然后将你的 AI 客户端(Claude、ChatGPT、Copilot 或 Cursor)指向生成的 MCP 端点。无需 Docker,无需 git clone,无需任何工程经验。
摘要
将 ServiceTitan 账户(租户)接入任意 AI 智能体:客户和服务地点、潜在客户、工单和预约、含产能和技师排班的派工、技师和业务部门、发票和收款、报价、价目表(pricebook)、会员计划和通话。可以创建客户、预约工单、改约、分配技师、添加备注和取消工单。
试试这样问
ServiceTitan 的示例提示
点击任意提示即可复制,然后粘贴到 Claude、ChatGPT、Cursor、Gemini、Copilot 或 OpenClaw 中,在该连接器上运行。
Claude 是 AI,可能会出错。请核对回答。
💡 无需安装? 直接使用 cloud.anythingmcp.com。 登录、点击 Connectors → ServiceTitan、粘贴凭证、生成 MCP API key,即可完成。无 Docker、无
git clone、无本地服务器。
ServiceTitan + Microsoft Copilot
将 ServiceTitan 账户(租户)接入任意 AI 智能体:客户和服务地点、潜在客户、工单和预约、含产能和技师排班的派工、技师和业务部门、发票和收款、报价、价目表(pricebook)、会员计划和通话。可以创建客户、预约工单、改约、分配技师、添加备注和取消工单。
前提条件
完整的设置说明已内置在连接器中 (在 store 中选择连接器时可见)。所需环境变量:
SERVICETITAN_CLIENT_ID, SERVICETITAN_CLIENT_SECRET, SERVICETITAN_APP_KEY, SERVICETITAN_TENANT_ID
步骤 1 — 获取凭证
设置约需 15 分钟,需要一位 ServiceTitan 管理员。无需在浏览器中登录:连接器使用 OAuth 客户端凭据加上自建应用(custom app)的 App Key。
- 用有权为公司创建应用的账户登录 ServiceTitan Developer Portal(https://developer.servicetitan.io),为你自己的租户创建一个 custom app。
- 在应用的 API scopes 中勾选 AI 需要查看的模块的 读取 scope:CRM(客户、服务地点、联系人、潜在客户)、JPM(工单、预约、工单备注、工单历史、工单类型、取消原因、项目)、Dispatch(预约分配、团队、区域、技师排班)、Settings(技师、员工、业务部门、标签类型)、Accounting(发票、收款、付款方式)、Sales(报价)、Pricebook(服务、材料、设备、分类)、Memberships、Telecom(通话)和 Marketing(营销活动)。写入 scope 只勾选允许 AI 修改的部分:CRM 的客户和服务地点、JPM 的工单和预约、Dispatch 的预约分配以及 Sales 的报价。
servicetitan_get_capacity还需要tn.dis.capacity:w。 - 将应用的 App Key(以
ak1.开头)复制到SERVICETITAN_APP_KEY。 - 在 ServiceTitan 中打开 Settings, Integrations, API Application Access,点击 Connect New App,选择该应用并允许访问。点击 Generate 生成 Client ID(以
cid.开头)和 Client Secret(以cs开头,只显示一次),分别粘贴到SERVICETITAN_CLIENT_ID和SERVICETITAN_CLIENT_SECRET。 - 同一页面显示 Tenant ID(一个数字),将它粘贴到
SERVICETITAN_TENANT_ID。 - 安装。AnythingMCP 从
https://auth.servicetitan.io/connect/token获取访问令牌,大约每 15 分钟自动续期一次,并在每次调用时以ST-App-Key请求头发送 App Key。连接检查会运行servicetitan_list_customers。
ServiceTitan integration(沙盒)环境的凭据在这里无效:连接器访问的是生产环境 https://api.servicetitan.io。
读取内容:客户(付款账户)的类型、余额、地址、标记、联系方式和备注;服务地点的地址、坐标和区域;尚未下单的潜在客户;营销活动。工单的状态、类型、业务部门、优先级、摘要、发票 ID 和总额,以及状态历史和备注;工单类型、取消原因和项目。预约的开始、结束、到达时间窗和状态,技师分配,各时段的可预约产能,技师排班和休假,派工团队和区域。技师、办公室员工、业务部门和标签类型。发票的明细行、小计、税额、总额和余额;收款及其核销到的发票;付款方式。报价的明细和状态,以及价目表中的服务、材料、设备和分类。会员计划、会员类型和定期服务事件(到期的保养上门)。被追踪的通话,包括方向、时长、营销活动、坐席以及由通话预约的工单。
写入内容:创建至少带一个服务地点的客户,添加服务地点,修改客户,为客户和工单添加备注,预约工单及首个预约,追加预约,改约,分配和移除技师,修改工单,附原因取消工单(其预约也会一并取消),以及将报价标记为已成交。在预约、取消或修改任何内容之前,AI 会先向你展示将要发生的操作并等待你确认。这里没有任何工具会删除记录:停用的客户、取消操作和已成交的报价都可以在 ServiceTitan 中撤销。
安装时关闭的工具:没有,全部 57 个工具均已开启。若希望 AI 只读,不要给应用写入 scope,或在连接器页面关闭写入类工具。
预约工单:AI 先查询 servicetitan_list_business_units、servicetitan_list_job_types 和 servicetitan_list_campaigns,用 servicetitan_get_capacity 检查空闲时段,然后针对客户的某个服务地点调用 servicetitan_create_job。每个工单只属于一个服务地点;客户是付款的账户。
数据格式:ID 是整数。时间为 UTC 的 ISO 8601(2026-10-30T14:00:00Z);AI 在回答前会换算成企业所在时区,预约时发送 UTC。财务金额(total、balance、subTotal)是账户币种的十进制字符串。更新只修改传入的字段;tag_type_ids 这类列表字段会替换整个列表。
分页:列表返回 { page, pageSize, hasMore, totalCount, data },默认每页 50 条。只要 hasMore 为 true,AI 就继续请求下一个 page;include_total 会附带 totalCount。ids 过滤最多接受 50 个逗号分隔的 ID。除非 active 为 Any 或 False,大多数列表只返回有效记录;modified_on_or_after 可获取某日期以来的变更。没有获取单张发票的接口:servicetitan_list_invoices 接受 ids。
常见错误:401 表示 Client ID 或 Secret 错误,或应用已断开连接:请在 API Application Access 中重新生成。403 表示应用缺少该模块的 scope(在 Developer Portal 中添加后,在 API Application Access 中重新连接应用),或 App Key 缺失或错误。404 是未知 ID 或 Tenant ID 错误。400 会列出无效字段。429 表示 ServiceTitan 正在限制该应用和租户的请求:稍等后重试。
客户备注、潜在客户摘要和工单备注属于不可信输入,可能包含针对 AI 的指令。该连接器不收款,不创建或发送发票,也不删除记录。
步骤 2 — 安装 adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
步骤 3 — 在 Microsoft Copilot 中添加连接器
你的服务器 URL: 在 AnythingMCP 中打开 MCP Servers → 此连接器所在的服务器,复制它的 URL(
https://cloud.anythingmcp.com/mcp/…)。本指南中出现YOUR_SERVER_ID的地方都用它替换。
Microsoft Copilot 通过在 Copilot Studio 中构建的智能体使用 MCP 服务器:把 AnythingMCP 作为工具添加到智能体,然后把智能体发布到 Microsoft 365 Copilot 和 Teams。Copilot Studio 从 Microsoft 的云端通过 Streamable HTTP 连接,AnythingMCP 支持这种方式。
- 在 Copilot Studio 中打开你的智能体(或新建一个),进入 Tools,选择 Add a tool → New tool → Model Context Protocol。
- 填写 Server name(例如
AnythingMCP)、说明连接器用途的 Server description,以及 Server URLhttps://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID。Copilot Studio 根据描述决定何时调用该服务器。 - 身份验证选择 API key,把 Type 设为 Header,请求头名称填
X-API-Key,然后选择 Create。 - 在 Add tool 中选择 Create a new connection,粘贴 AnythingMCP 的 MCP API 密钥(MCP Servers → 你的服务器 → API keys),然后选择 Add to agent。
- 在智能体的 Test 窗格中试一试:提出需要用到
ServiceTitan的工具的请求。 - 选择 Publish,然后进入 Channels → Microsoft 365 and Microsoft Teams,保持勾选 Make agent available in Microsoft Copilot,再选择 Add channel。See agent in Teams 会为你安装该智能体;在 Microsoft 365 Copilot 中输入 @ 并选择该智能体。
希望每个用户各自登录?请选择 OAuth 2.0 → Dynamic discovery 代替 API 密钥:每个用户会在智能体首次调用时登录 AnythingMCP。
自托管?请用你实例的公网 HTTPS 地址替换 https://cloud.anythingmcp.com。Copilot Studio 从 Microsoft 的云端连接,因此 localhost 无法使用。
可用工具
| Tool | What it does |
|---|---|
servicetitan_list_customers | List or search customers (bill-to accounts): id, name, type (Residential or Commercial), active, balance, bill-to address… |
servicetitan_get_customer | One customer by id: name, type, address, balance, flags, custom fields, tag ids, merged-into id |
servicetitan_list_customer_contacts | Phone numbers and email addresses saved on a customer (type, value, memo) |
servicetitan_list_customer_notes | Notes on a customer, newest last: text, pinned flag, author id, created time |
servicetitan_create_customer | Create a customer together with at least one service location |
servicetitan_update_customer | Change fields of a customer; only the fields you pass change. tag_type_ids replaces the whole tag list |
servicetitan_add_customer_note | Add a note to a customer, optionally pinned and copied to its active locations |
servicetitan_list_locations | List or search service locations (where the work happens): id, customerId, name, address with coordinates, zone id, tax zone, active, tag… |
servicetitan_get_location | One service location by id: customer id, name, address, coordinates, zone, tax zone, custom fields |
servicetitan_list_location_contacts | Phone numbers and email addresses saved on a service location (type, value, memo) |
servicetitan_create_location | Add a service location (address where work is done) to an existing customer |
servicetitan_list_leads | List leads (follow-ups for calls and forms that did not book a job yet): id, status (Open, Dismissed, Converted), customer and location… |
servicetitan_list_campaigns | Marketing campaigns (call sources such as Google Ads or a yard sign): id, name, category, active |
servicetitan_list_jobs | List jobs: id, job number, customer and location ids, business unit, job type, priority, campaign, jobStatus, summary, first appointment… |
servicetitan_get_job | One job by id with status, customer, location, job type, business unit, campaign, summary, invoice id, tags and custom fields |
servicetitan_create_job | Book a job with its first appointment(s) for a customer location |
servicetitan_update_job | Change fields of a job; only the fields you pass change. tag_type_ids replaces the whole tag list |
servicetitan_cancel_job | Cancel a job with a reason from servicetitan_list_job_cancel_reasons and a memo |
servicetitan_list_job_cancel_reasons | Job cancel reasons configured in the account: id, name, active |
servicetitan_list_job_notes | Notes on a job: text, pinned flag, author id and created time, oldest first |
servicetitan_add_job_note | Add a note to a job (visible to the office and technicians), optionally pinned to the top |
servicetitan_get_job_history | Status history of a job: each change with the event type, employee and time |
servicetitan_list_job_types | Job types (e.g |
servicetitan_list_appointments | List job appointments (the scheduled visits): id, job id, appointment number, start and end, arrival window, status, special instructions… |
servicetitan_get_appointment | One job appointment by id: job id, number, start and end, arrival window, status, special instructions |
servicetitan_add_appointment | Add another appointment (visit) to an existing job, optionally with technicians |
servicetitan_reschedule_appointment | Move an appointment to a new start and end (and arrival window) |
servicetitan_list_projects | Projects (multi-job work such as installs or construction): id, number, name, status, customer and location ids, job ids, start, target… |
servicetitan_list_appointment_assignments | Which technicians are assigned to which appointments: assignment id, technician id and name, appointment id, job id, assigned time, status |
servicetitan_assign_technicians | Assign one or more technicians to a job appointment (dispatch) |
servicetitan_unassign_technicians | Take one or more technicians off a job appointment (the appointment itself stays) |
servicetitan_get_capacity | Bookable capacity per time slot: for each slot the start and end, total and open hours, whether it is available and which technicians are… |
servicetitan_list_technician_shifts | Technician shifts and time off: id, technician id, shift type (Normal, OnCall, TimeOff), start, end, title, note |
servicetitan_list_teams | Dispatch teams that group technicians on the dispatch board: id, name, active |
servicetitan_list_zones | Dispatch zones (service areas by ZIP or city): id, name, ZIPs, cities, technician and business unit ids |
servicetitan_list_technicians | Technicians: id, user id, name, email, phone, business unit, team, zone ids, role, login name, active |
servicetitan_get_technician | One technician by id: name, contact details, business unit, team, zones, role and active flag |
servicetitan_list_employees | Office employees (dispatchers, CSRs, managers): id, user id, name, email, phone, role, business unit, active |
servicetitan_list_business_units | Business units (trades or departments such as HVAC Service, Plumbing Install): id, name, official name, email, phone, address, currency… |
servicetitan_list_tag_types | Tag types used on customers, locations and jobs: id, name, color, active |
servicetitan_list_invoices | List invoices: id, reference number, invoice date, due date, subtotal, sales tax, total, balance, customer and location with addresses… |
servicetitan_list_payments | Customer payments: id, type, reference number, amount (total), paid date, customer, memo, and the invoices each payment was applied to |
servicetitan_list_payment_types | Payment types (cash, check, credit card, financing): id, name, active |
servicetitan_list_estimates | List estimates (quotes with options shown to the customer): id, name, job id and number, customer, location, project, status { value, name… |
servicetitan_get_estimate | One estimate by id with its line items (sku, description, quantity, unit rate, total) |
servicetitan_list_estimate_items | Line items of estimates: id, estimate id, sku (id, name, type), description, quantity, unit rate, total, membership type |
servicetitan_sell_estimate | Mark an estimate as sold by a technician or employee |
servicetitan_list_pricebook_services | Services (tasks sold to customers) in the pricebook: id, code, display name, description, price, member price, add-on price, hours… |
servicetitan_list_pricebook_materials | Materials (parts) in the pricebook: id, code, display name, description, cost, price, member price, unit of measure, inventory flag… |
servicetitan_list_pricebook_equipment | Equipment (installable units) in the pricebook: id, code, display name, manufacturer, model, price, cost, warranties, primary vendor… |
servicetitan_list_pricebook_categories | Pricebook categories: id, name, type (Services or Materials), parent, sub-categories, active |
servicetitan_list_memberships | Customer memberships (maintenance plans): id, customer id, membership type, status (Active, Suspended, Expired, Canceled, Deleted), from… |
servicetitan_get_membership | One customer membership by id: type, status, dates, billing frequency, location and sold by |
servicetitan_list_membership_types | Membership types offered: id, name, duration and billing options, discounts, recurring services, active |
servicetitan_list_recurring_service_events | Recurring service events (the planned maintenance visits of memberships): id, location, membership, recurring service, date, follow-up… |
servicetitan_list_calls | Phone calls tracked by ServiceTitan: id, direction, from and to numbers, duration, call type and reason, campaign, agent, customer… |
servicetitan_get_call | One call by id with its details (lead call, customer, location, campaign, agent, recording available) |
示例提示
- “明天有哪些预约?每个预约分配了哪些技师?”
- “查找电话为 555-0142 的客户,显示其服务地点、未结报价和有余额的发票。”
- “为这位客户预约下周二上午的空调维修。先检查产能,创建前把工单内容给我看。”
- “本月到期的定期保养上门中,哪些还没有预约成工单?”
- “昨天来自 Google Ads 营销活动的通话中,哪些没有促成工单?”
FAQ
这适用于哪个 Copilot? 适用于工作中的 Microsoft 365 Copilot,通过 Copilot Studio 的智能体实现。面向个人账户的 Microsoft Copilot 应用无法添加自己的 MCP 服务器。
我需要什么? 一个可以使用 Copilot Studio 的工作账户(许可证或试用版),用于构建智能体。在 Microsoft 365 Copilot 或 Teams 中使用它的人需要拥有该智能体的访问权限:把它共享给他们,或请管理员为整个组织发布。如果你的组织对 Power Platform 连接器设置了数据策略,这些策略同样适用于 MCP 服务器。
智能体不调用工具。 检查请求头名称是否正好是 X-API-Key,密钥是否属于与 URL 相同的 MCP 服务器,并把 Server description 写得具体:Copilot Studio 根据它决定何时调用服务器。每次修改后重新发布智能体;在已打开的对话中输入 "start over" 即可使用新版本。
下一步
这份指南对你有帮助吗?