当用户询问专车搜索、运力查询或专车预订时,使用此 skill 通过 curl 调用专车 MCP 服务。
本 skill 通过 MCP 客户端调用专车 MCP 服务,使用 JSON-RPC 2.0 / tools/call 协议。
会话管理说明:
initialize 方法,这由 MCP 客户端自动处理预订功能会将用户提供的个人信息(乘车人姓名、手机号等)通过 HTTP POST 发送至专车 MCP 远端服务,以完成专车预订。使用本 skill 即表示用户知晓并同意上述 PII 被发送到外部服务。请勿在终端日志或大模型回复中暴露用户的完整个人信息。
tools/call),如城市站点查询、POI 搜索、运力搜索、订单创建、订单查询与取消等local_test(由业务方创建)https://t.rsscc.com/mcp/local_test该工具提供专车预订相关功能,包括:
重要流程:
getAllCities 获取城市站点信息,保存在本地供后续使用。getPoiListByKey 搜索具体地址structuredContent.data.pois 数组中提取并展示列表,让用户选择getEstimate 查询可用车型和价格getEstimate 返回 "服务时间不能早于当前时间" 错误(code: 704):getEstimatestructuredContent.data.products 数组中提取车型和价格信息,展示车型列表(车型名称、预估时长、预估里程、价格)productId、pTicket、directId 等参数createOrder 创建订单(phoneid 由网关自动处理,无需询问用户)structuredContent.data.orderId 提取订单号,立即调用 orderDetail 查询订单详情展示给用户pay 获取支付链接structuredContent.data 中提取并展示,不要只显示 "success"getCancelFee 查询取消费,告知用户后再确认是否取消数据提取原则:
result.structuredContent.data 中提取业务数据result.content[0].text 的简单文本(如 "success")通过 MCP 客户端调用工具,格式如下:
mcp-gateway-test/工具名称
参数: { "参数名": "参数值" }
例如:
mcp-gateway-test/getAllCities
参数: {}
mcp-gateway-test/getPoiListByKey
参数: { "cityId": 5, "key": "中南路地铁站" }
注意:
mcp-gateway-test/(MCP 客户端配置名称)重要:下方示例中的参数均为占位,调用时需根据用户当前需求填入实际值(城市、日期、坐标等),勿直接照抄示例值。
功能:获取开通服务的城市及其机场/火车站信息
触发词:城市列表、站点信息、机场信息、火车站信息
使用建议:该数据建议定时全量拉取保存在本地,可以每天一次
关键参数 (arguments):
{} // 无参数
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: [{
cityId: number; // 城市ID
cityName: string; // 城市名称
depots: [{
depotName: string; // 站点名称,如"北京首都机场"
depotCode: string; // 站点编码(三字码),如"PEK"
depotType: number; // 站点类型:0-机场,1-火车站/高铁站
terminals: [{
code: string; // 航站楼code,如"T1"
name: string; // 航站楼名称,如"北京首都机场T1航站楼"
}]
}]
}];
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "getAllCities",
"arguments": {}
}
}'
功能:通过城市 ID + 位置关键词模糊匹配,返回地址列表(最多 3 个)
触发词:搜索地址、查找位置、POI 搜索
关键参数 (arguments):
cityId (必填): 城市ID(从 getAllCities 获取)key (必填): 位置关键词,用来模糊匹配(如"知音广场"、"武汉站")响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
pois: [{
address: string; // 详细地址
city: string; // 城市名
cityId: string; // 城市ID
lat: number; // 坐标纬度
lng: number; // 坐标经度
name: string; // 地址名称
}]
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "getPoiListByKey",
"arguments": {
"cityId": 5,
"key": "知音广场"
}
}
}'
功能:查询可用车型和价格,输入的一端必须为机场/火车站,另一端为 POI 地址
触发词:查询车型、查询价格、运力搜索
关键参数 (arguments):
timestamp (必填): 当前时间戳(毫秒)serveTime (必填): 服务时间,格式 yyyy-MM-dd HH:mm:ssstartLon (条件必填): 预订开始坐标经度,最多6位小数(如果起点是场站则不需要)startLat (条件必填): 预订开始坐标纬度,最多6位小数(如果起点是场站则不需要)endLon (条件必填): 预订结束坐标经度,最多6位小数(如果终点是场站则不需要)endLat (条件必填): 预订结束坐标纬度,最多6位小数(如果终点是场站则不需要)startAddress (必填): 出发地名称startAddressDetail (必填): 出发地详细地址endAddress (必填): 到达地名称endAddressDetail (必填): 到达地详细地址depCode (可选): 出发地三字码(如果起点是场站则必填)depPortCode (可选): 出发地机场航站楼code(如"T2")arrCode (可选): 目的地三字码(如果终点是场站则必填)arrPortCode (可选): 到达地机场航站楼code(如"T2")phoneid 参数说明:
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
duration: number; // 预估时长(分钟)
distance: number; // 预估里程(Km),精确到米
products: [{
carLevel: number; // 车型ID
carLevelName: string; // 车型名称
products: [{
productId: string; // 产品ID(创建订单时需要)
pTicket: string; // 价格码(创建订单时需要)
directId: number; // 规则ID(创建订单时需要)
price: number; // 卖价
originPrice: number; // 原价
couponId: string; // 优惠券ID
directAmount: string; // 直减优惠价
}]
}]
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "getEstimate",
"arguments": {
"phoneid": "123456",
"timestamp": 1715760000000,
"serveTime": "2026-05-15 14:00:00",
"startLon": 114.341142,
"startLat": 30.5548,
"endLon": 0,
"endLat": 0,
"startAddress": "知音广场停车场",
"startAddressDetail": "武汉市武昌区中北路31号省工行大楼1层附近",
"endAddress": "武汉天河机场",
"endAddressDetail": "武汉天河机场T3航站楼",
"arrCode": "WUH",
"arrPortCode": "T3"
}
}
}'
功能:提交专车预订订单
触发词:创建订单、下订单、预订专车
关键参数 (arguments):
timestamp (必填): 当前时间戳(毫秒)productId (必填): 产品ID(从 getEstimate 返回的结果中获得)pTicket (必填): 价格码(从 getEstimate 返回的结果中获得)directId (必填): 规则ID(从 getEstimate 返回的结果中获得)passengerPhone (必填): 乘车人电话passengerName (必填): 乘车人姓名couponId (可选): 优惠券ID(从 getEstimate 返回的结果中获得)directAmount (可选): 直减优惠价(从 getEstimate 返回的结果中获得)phoneid 参数说明:
响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
orderId: string; // 伙力专车订单号
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "createOrder",
"arguments": {
"phoneid": "123456",
"timestamp": 1715760000000,
"productId": "1",
"pTicket": "29B6630B215F49A2A84CC26A08530041",
"directId": 1,
"passengerPhone": "13800138000",
"passengerName": "张三",
"couponId": "",
"directAmount": ""
}
}
}'
功能:获取订单支付链接
触发词:支付、支付订单、获取支付链接
关键参数 (arguments):
orderId (必填): 订单号响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
url: string; // 支付链接
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "pay",
"arguments": {
"orderId": "2603101813148416"
}
}
}'
功能:模糊查询订单列表
触发词:订单列表、查询订单、我的订单
关键参数 (arguments):
startIndex (可选): 分页起始位置,默认 0(第一页)pageSize (可选): 每页数量,默认 10响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: [{
orderId: string; // 订单号
customerName: string; // 乘车人
prodTypeShow: string; // 服务类型展示文案
serviceTimeShow: string; // 服务时间展示文案
startPositionShow: string; // 出发地
endPositionShow: string; // 到达地
orderStatusShow: string; // 订单状态展示文案
payPriceShow: string; // 支付价格
}];
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "orderList",
"arguments": {
"startIndex": 0,
"pageSize": 10
}
}
}'
功能:通过订单号查询订单详细信息
触发词:订单详情、查询订单、订单信息
关键参数 (arguments):
orderId (必填): 订单号响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
orderId: string; // 订单号
orderStatusDesc: string; // 订单状态
serviceTime: string; // 服务时间,如"03月23日 周一 20:00"
prodTypeName: string; // 服务类型
productName: string; // 产品类型
depPosition: string; // 出发地址
arrPosition: string; // 到达地址
customName: string; // 乘车人名称
customPhone: string; // 乘车人电话
price: number; // 订单金额
driverPhone: string; // 司机电话
driverName: string; // 司机名称
carName: string; // 车辆型号
carNumber: string; // 车牌号
carColor: string; // 车辆颜色
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "orderDetail",
"arguments": {
"orderId": "2603101813148416"
}
}
}'
功能:查询订单是否能免费取消及取消费金额
触发词:取消费、查询取消费、能否免费取消
关键参数 (arguments):
orderId (必填): 订单号响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {
orderId: string; // 订单号
cancelFeeAmount: number; // 取消费金额
};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 8,
"method": "tools/call",
"params": {
"name": "getCancelFee",
"arguments": {
"orderId": "2603101813148416"
}
}
}'
功能:取消专车订单
触发词:取消订单、退订
关键参数 (arguments):
orderId (必填): 订单号响应字段 (structuredContent.data):
{
code: number;
msg: string;
data: {};
ok: boolean;
success: boolean;
traceId: string;
}
调用示例:
curl -s -X POST "${MCP_URL:-https://t.rsscc.com/mcp/local_test}" \
-H "Content-Type: application/json" \
-H "MCP-Session-Id: $MCP_SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"id": 9,
"method": "tools/call",
"params": {
"name": "cancel",
"arguments": {
"orderId": "2603101813148416"
}
}
}'
网关返回标准 JSON-RPC 2.0 格式:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"isError": false,
"content": [
{
"type": "text",
"text": "调用成功"
}
],
"structuredContent": {
"code": 0,
"msg": "success",
"data": { /* 业务数据 */ }
}
}
}
字段说明:
isError: 工具执行是否失败(布尔标识)false: 业务执行成功true: 业务执行失败(但协议层正常)content: 模型/人类可读文本data 字段,若 data 为空则使用 msgmsgstructuredContent: 业务方返回的实际消息体code: 业务状态码,0 为成功,非 0 为业务失败msg: 业务描述信息data: 业务数据体协议错误(顶层 error):
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32602,
"message": "Invalid params: name is required"
}
}
协议错误表示 MCP 调用本身失败(如参数错误、鉴权失败、Session 过期等),而非业务失败。
重要:所有工具调用后,必须从 structuredContent.data 中提取业务数据并展示给用户,不要只显示 content[0].text 的简单文本。
从 structuredContent.data 数组中提取城市和站点信息,按城市分组展示:
数据路径:result.structuredContent.data[]
展示格式:
🌍 已开通服务的城市:
【北京】(cityId: 1)
🛫 北京首都机场 (PEK)
- T1航站楼
- T2航站楼
- T3航站楼
🛫 北京大兴国际机场 (PKX)
🚄 北京站 (BJP)
🚄 北京西站 (BXP)
【上海】(cityId: 2)
🛫 上海浦东机场 (PVG)
- T1航站楼
- T2航站楼
🛫 上海虹桥机场 (SHA)
- T1航站楼
- T2航站楼
🚄 上海站 (SHH)
🚄 上海虹桥站 (AOH)
... (其他城市)
处理逻辑:
data 数组中的每个城市对象cityName 和 cityIddepots 数组,根据 depotType 显示不同图标(0-机场🛫,1-火车站🚄)terminals 数组,缩进显示航站楼信息从 structuredContent.data.pois 数组中提取地址信息并展示。
数据路径:result.structuredContent.data.pois[]
展示格式:
如果搜索结果有多个,展示列表让用户选择:
📍 找到以下地址,请选择:
1. 知音广场停车场
地址:武汉市武昌区中北路31号省工行大楼1层附近
坐标:30.5548, 114.341142
2. 知音广场
地址:武汉市武昌区中北路88号
坐标:30.5550, 114.341200
如果只有一个结果,直接展示并询问用户确认:
📍 找到地址:
知音广场停车场
地址:武汉市武昌区中北路31号省工行大楼1层附近
坐标:30.5548, 114.341142
是否使用这个地址?
处理逻辑:
pois 数组长度name、address、lat、lng 字段从 structuredContent.data 中提取车型和价格信息。
数据路径:
result.structuredContent.data.duration、result.structuredContent.data.distanceresult.structuredContent.data.products[]result.structuredContent.data.products[].products[]展示格式:
🚗 可用车型:
预估行程:约 45 分钟 | 35.0 公里
【经济型】
价格:¥89 原价:¥99
产品ID: prod_001
【舒适型】
价格:¥129 原价:¥139
产品ID: prod_002
【商务型】
价格:¥189 原价:¥199
产品ID: prod_003
请选择您需要的车型。
处理逻辑:
duration(分钟)和 distance(公里)products 数组,显示每个车型的 carLevelNameproducts 数组中选择第一个报价(通常是最优价格)productId、pTicket、directId,创建订单时需要使用从 structuredContent.data 中提取订单号。
数据路径:result.structuredContent.data.orderId
展示格式:
✅ 订单创建成功!
订单号:2603101813148416
正在查询订单详情...
处理逻辑:
orderIdorderDetail 查询订单详情展示给用户从 structuredContent.data 数组中提取订单列表。
数据路径:result.structuredContent.data[]
展示格式(表格形式):
📋 订单列表:
| 序号 | 订单号 | 乘车人 | 服务时间 | 出发地 | 目的地 | 价格 | 订单状态 |
|------|--------|--------|----------|--------|--------|------|----------|
| 1 | 2603101813148416 | 张三 | 05月15日 14:00 | 知音广场 | 天河机场 | ¥129 | 待服务 |
| 2 | 2603101813148417 | 李四 | 05月16日 10:00 | 汉口站 | 光谷广场 | ¥89 | 已完成 |
处理逻辑:
data 数组orderDetail 接口从 structuredContent.data 中提取订单详细信息。
数据路径:result.structuredContent.data
展示格式:
📋 订单详情
订单号:2603101813148416
订单状态:待服务
服务时间:03月23日 周一 20:00
服务类型:接机
车型:舒适型
出发地:知音广场停车场
目的地:武汉天河机场T3航站楼
乘车人:张三
联系电话:138****8000
订单金额:¥129
司机信息:
- 姓名:李师傅
- 电话:139****5678
- 车辆:别克GL8 鄂A·12345(白色)
处理逻辑:
data 对象中的所有字段driverName、driverPhone 不为空),显示司机信息从 structuredContent.data 中提取支付链接。
数据路径:result.structuredContent.data.url
展示格式:
💳 支付信息
支付链接:https://pay.example.com/order/2603101813148416
请点击链接完成支付。
处理逻辑:
url 字段从 structuredContent.data 中提取取消费信息。
数据路径:result.structuredContent.data.cancelFeeAmount
展示格式:
取消前先查询取消费,告知用户:
⚠️ 取消提示
该订单取消需收取取消费:¥50
是否确认取消订单?
如果取消费为 0:
✅ 该订单可免费取消
是否确认取消订单?
处理逻辑:
cancelFeeAmount 字段cancel 接口从 structuredContent 中判断取消结果。
数据路径:result.structuredContent.code
展示格式:
✅ 订单取消成功
订单号:2603101813148416
或者失败时:
❌ 订单取消失败
原因:订单已派单,无法取消
处理逻辑:
code 是否为 200(成功)msg 显示相应提示如果接口调用失败,返回的 isError 为 true,需根据 content 中的错误信息向用户反馈。
常见错误码:
-32001: 缺少 MCP-Session-Id 请求头(需要重新初始化会话)-32002: Session 不存在或已过期(需要重新初始化会话)-32003: 鉴权失败(API Key 无效、已禁用、已过期、IP 不在白名单等)-32602: 参数错误(必填参数缺失、格式不符等)-32603: 内部错误(上游服务异常、超时、限流等)704: 服务时间不能早于当前时间(时间参数无效)Session 过期自动处理:
initialize 方法,Session 管理由 MCP 客户端自动处理productId、pTicket、directId 等参数yyyy-MM-dd HH:mm:ss,时间戳为毫秒级orderDetail 查询订单详情,确认订单状态pay 获取支付链接,引导用户完成支付getCancelFee 查询取消费,告知用户后再确认取消X-User-Authorization 请求头传递用户凭证共 1 个版本