Lann(蘭)MCP 服务
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"lann-booking": {
"args": [
"-y",
"lann-mcp-server"
],
"command": "npx"
}
}
}
Streamable HTTP 传输配置
{
"mcpServers": {
"lann-booking": {
"type": "streamableHttp",
"url": "https://open.lannlife.com/mcp"
}
}
}
可用工具 (3 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
create_booking 5 个参数 需填 5 项
创建蘭泰式按摩预约。需要提供手机号、门店名称、服务项目、人数和预约时间。
必填参数:mobile、storeName、serviceName、count、bookTime
query_stores 2 个参数
查询蘭泰式按摩门店信息,支持按城市和关键词搜索。可获取门店地址、电话和交通指引。
该工具无需必填参数,直接调用即可
query_services 2 个参数
查询蘭泰式按摩服务项目,支持按关键词和时长筛选。可获取服务名称、描述和时长信息。
该工具无需必填参数,直接调用即可
服务介绍
蘭泰式按摩预约技能 (Lann Booking Skill)
简介
蘭泰式按摩预约技能是一个为 AI 助手设计的智能预约系统,支持查询和预约蘭泰式按摩(Lann Thai Massage)的门店和服务。
核心功能:
- 🏪 门店查询:覆盖全国 75+ 门店,支持按城市、地区、地铁站筛选
- 💆 服务查询:提供 28+ 专业泰式按摩与 SPA 服务项目
- 📅 在线预约:通过 MCP 协议或直接 API 调用完成预约
特色:
- ✅ 支持三种集成模式(MCP、远程 MCP、直连 API)
- ✅ 智能模糊匹配,容错率高
- ✅ 完善的参数校验和错误处理
- ✅ 详细的文档和测试脚本
快速开始
前置要求
- Python 3.8+ 或 Node.js 16+
- 网络连接(用于调用 API)
- (可选)MCP Client(如需使用 MCP 模式)
安装步骤
-
克隆或下载本项目
git clone <repository-url> cd lann-booking-skill -
查看数据结构
- 门店数据:
org_store.json(75 家门店) - 服务项目:
prod_service.json(28 项服务)
- 门店数据:
-
阅读技能文档
- 详细说明:
SKILL.md - API 参考:
references/api_reference.md
- 详细说明:
-
运行测试脚本(可选)
# Python 版本 pip install requests python scripts/test_booking.py # Shell 版本 chmod +x scripts/test_booking.sh ./scripts/test_booking.sh
使用方法
方式 1:作为 AI Assistant Skill 使用
将本 Skill 集成到您的 AI 助手中,用户可通过自然语言进行交互:
典型对话示例:
User: 上海有哪些蘭泰门店?
Assistant: 上海目前有 60+ 家蘭泰式按摩门店,以下是部分门店:
1. 淮海店
📍 上海市黄浦区进贤路216号(近陕西南路)
📞 021-62670235
🚇 地铁1号线陕西南路1号口出
2. 花木店
📍 上海市浦东新区梅花路1029号(近芳甸路)
📞 021-50806186
🚇 地铁7号线花木路站4号口出
...(共 60+ 家)
需要我帮您查询特定区域的门店吗?
User: 我想预约一个缓解肩颈疲劳的服务
Assistant: 针对肩颈疲劳,我为您推荐以下服务:
1. 泰式按摩(肩颈版)-Back 60
⏱ 时长:60分钟
📝 在泰式全身按摩的基础上针对肩颈进行重点加强
2. 传统古法卸负按摩-90分钟
⏱ 时长:90分钟
📝 着重针对肩、颈、腰、背等易疲劳区
3. 精准泰式古法
📝 结合国际主流徒手疼痛缓解技术,深度缓解慢性疼痛
您希望预约哪项服务?在哪家门店?
User: 我要预约淮海店的传统古法全身按摩,2人,明天下午2点,手机号13812345678
Assistant: 好的,让我为您确认预约信息:
━━━━━━━━━━━━━━━━━━━━━━━
👤 手机号:138****5678
🏪 门店:淮海店
地址:上海市黄浦区进贤路216号(近陕西南路)
💆 服务:传统古法全身按摩-90分钟
👥 人数:2 人
🕐 时间:2024年1月16日 14:00
━━━━━━━━━━━━━━━━━━━━━━━
确认无误吗?请回复"确认"以提交预约。
User: 确认
Assistant: ✅ 预约成功!
📋 预约详情
• 预约 ID:BOOK123456
• 门店:淮海店
• 服务:传统古法全身按摩-90分钟
• 时间:2024-01-16 14:00 - 15:30
• 人数:2 人
🚇 交通指引
地铁1号线陕西南路1号口出,沿陕西南路走到进贤路右转约100m
💡 温馨提示
• 请提前 10 分钟到店
• 如需取消或改期,请至少提前 1 小时联系门店
• 祝您享受愉快的按摩体验!
方式 2:直接调用 API
使用 curl 或其他 HTTP 客户端直接调用预约接口:
curl -X POST "https://open.lannlife.com/mcp/book/create" \
-H "Content-Type: application/json" \
-d '{
"mobile": "13812345678",
"storeName": "淮海店",
"serviceName": "传统古法全身按摩-90分钟",
"count": 2,
"bookTime": "2024-01-16T14:00:00"
}'
方式 3:使用 MCP 协议
配置 MCP Client 连接到 Lann MCP Server:
本地 stdio 模式(mcp-config.json):
{
"mcpServers": {
"lann-booking": {
"command": "npx",
"args": ["lann-mcp-server"]
}
}
}
远程 streamableHttp 模式:
{
"mcpServers": {
"lann-booking": {
"url": "https://open.lannlife.com/mcp",
"type": "streamableHttp"
}
}
}
配置说明
API Endpoint
默认 API 地址:https://open.lannlife.com/mcp/book/create
如需修改,请在以下位置更新:
- 测试脚本:
scripts/test_booking.py中的API_ENDPOINT变量 - MCP 配置:
mcp-config.json中的环境变量
数据文件
-
门店数据:
org_store.json- 包含 75 家门店的详细信息
- 字段:name, address, telephone, traffic, longitude, latitude
-
服务数据:
prod_service.json- 包含 28 项服务项目
- 字段:name, desc
重要:创建预约时,storeName 和 serviceName 必须与 JSON 文件中的 name 字段完全一致。
环境变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
API_ENDPOINT |
API 请求地址 | https://open.lannlife.com/mcp/book/create |
PORT |
HTTP 服务端口(MCP 模式) | 3000 |
HOST |
HTTP 服务主机(MCP 模式) | localhost |
项目结构
lann-booking-skill/
├── SKILL.md # 技能核心文档(元数据、能力定义、工作流)
├── README.md # 项目说明文档(本文件)
├── _meta.json # 元数据配置
├── org_store.json # 门店数据(75 家)
├── prod_service.json # 服务项目数据(28 项)
├── LICENSE # MIT 许可证
├── references/ # 参考文档
│ └── api_reference.md # API 详细文档
├── scripts/ # 脚本工具
│ ├── test_booking.py # Python 测试脚本
│ ├── test_booking.sh # Shell 测试脚本
│ └── start_mcp.sh # MCP Server 启动脚本
└── assets/ # 静态资源
└── booking_template.md # 预约消息模板
开发指南
添加新测试用例
编辑 scripts/test_booking.py,添加新的测试函数:
def test_custom_scenario():
"""自定义测试场景"""
print_separator("自定义测试")
create_booking(
mobile="13812345678",
store_name="淮海店",
service_name="传统古法全身按摩-90分钟",
count=1,
book_time="2024-01-16T10:00:00",
test_name="自定义测试"
)
然后在 main() 函数中调用:
test_custom_scenario()
扩展 MCP 工具
如需添加新的 MCP 工具(如取消预约、查询预约状态),请参考:
- 在
references/api_reference.md中定义工具接口 - 实现对应的业务逻辑
- 更新
SKILL.md中的能力定义
更新门店或服务数据
- 编辑
org_store.json或prod_service.json - 确保 JSON 格式正确
- 验证新增数据的
name字段唯一性 - 提交变更并通知相关人员
注意事项
数据隐私
- 手机号保护:Skill 仅在预约时临时使用手机号,不会持久化存储
- 日志脱敏:在日志和调试信息中,手机号中间 4 位会被替换为
**** - 最小化原则:只收集完成预约所必需的信息
预约政策
- 提前预约:建议至少提前 2 小时预约
- 取消政策:需至少提前 1 小时联系门店取消或改期
- 人数限制:单次预约最多 20 人
- 营业时间:各门店可能不同,请以门店实际为准
错误处理
遇到错误时,请参考:
SKILL.md中的"错误处理规范"章节references/api_reference.md中的"常见错误码"表格- 测试脚本的输出结果
常见问题
Q: 如何获取准确的门店名称?
A: 运行以下命令查看所有门店:
python -c "import json; data=json.load(open('org_store.json')); print('\n'.join([s['name'] for s in data]))"
或在对话中询问 AI:"有哪些门店?"
Q: 如何获取准确的服务名称?
A: 运行以下命令查看所有服务:
python -c "import json; data=json.load(open('prod_service.json')); print('\n'.join([s['name'] for s in data]))"
或在对话中询问 AI:"有哪些服务?"
Q: 预约时间格式应该如何填写?
A: 使用 ISO 8601 格式,例如:
2024-01-16T14:00:00表示 2024 年 1 月 16 日 14:00- 自然语言也可被 AI 解析,如"明天下午 2 点"
Q: 如何切换到不同的集成模式?
A: 根据您的运行环境选择:
- 有 MCP Client:配置 MCP 模式(推荐)
- 无 MCP 但有网络:使用直连 API 模式
- 远程部署:使用远程 MCP 模式
详见 SKILL.md 中的"集成模式"章节。
Q: API 调用失败怎么办?
A: 检查以下几点:
- 网络连接是否正常
- API Endpoint 是否正确
- 参数是否符合规范(手机号、门店名称、服务名称等)
- 查看错误响应中的具体提示信息
可运行测试脚本验证 API 连通性:
python scripts/test_booking.py
贡献指南
欢迎贡献代码、文档或建议!
提交问题
如发现 bug 或有改进建议,请:
- 检查是否已有类似的 issue
- 创建新的 issue,详细描述问题或建议
- 附上复现步骤或相关代码片段
提交代码
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
代码规范
- 遵循现有的代码风格
- 添加必要的注释和文档
- 确保测试通过
- 更新相关文档
版本历史
v2.0.0 (2026-04-09)
- ✨ 重构 Skill 架构,支持三种集成模式
- ✨ 优化意图识别和参数校验逻辑
- ✨ 完善错误处理和重试机制
- 📝 增加详细的工作流指南和最佳实践
- 🧪 新增测试脚本和 API 文档
v1.0.2 (2026-04-03)
- 🎉 初始版本发布
- 🏪 实现门店查询功能
- 💆 实现服务查询功能
- 📅 实现创建预约功能
许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件
联系方式
- 官方网站:建设中
- API 文档:
references/api_reference.md - 技能文档:
SKILL.md
致谢
感谢所有为蘭泰式按摩预约技能做出贡献的开发者和用户!
祝您享受愉快的按摩体验! 💆✨