article
README
🚀 e代驾 MCP 服务
e代驾 MCP 服务基于 e 代驾开放 API,遵循 MCP(Model Context Protocol),为用户提供代驾服务的完整功能,覆盖从费用预估到订单创建的全流程。
✨ 主要特性
- 预估费用:依据起终点位置,精准预估代驾费用。
- 叫代驾下单:可创建代驾订单,且具备自动 token 管理功能。
- Token 管理:拥有智能的 token 获取、存储和刷新机制。
- 自动重试:当 token 过期时,系统会自动刷新并重新尝试操作。
- 参数验证:具备完善的输入参数验证和错误处理机制。
📦 安装指南
创建环境变量文件
复制 .env.example 文件为 .env:
cp .env.example .env
配置 API 密钥
在 .env 文件中设置您的 API 密钥:
APP_KEY=your_app_key_here
SECRET=your_secret_here
API_BASE_URL=https://openapi.d.edaijia.cn
⚠️ 重要提示
.env文件包含敏感信息,已被添加到.gitignore中,不会被提交到版本控制系统。
💻 使用示例
可用工具
estimate_cost
用于预估代驾费用。
- 参数:
start_address:起始地址start_longitude:起始经度start_latitude:起始纬度end_address:目的地地址end_longitude:目的地经度end_latitude:目的地纬度phone:用户手机号(11 位数字)
- 返回:预估费用信息,包含距离、时间和价格。
- 特性:自动检查和刷新 token,支持 token 过期重试。
call_driver
用于叫代驾下单。
- 参数:
start_address:起始地址start_longitude:起始经度start_latitude:起始纬度end_address:目的地地址end_longitude:目的地经度end_latitude:目的地纬度phone:用户手机号(11 位数字)contact_phone:联系电话(可选,代叫订单必传)
- 返回:下单结果,包含订单号和状态。
- 特性:自动生成唯一订单号,支持 token 校验失败重试。
refresh_token
用于刷新用户 token。
- 参数:
phone:用户手机号(11 位数字)
- 返回:token 刷新结果和状态。
- 特性:手动刷新指定手机号的认证 token。
使用流程
- 预估费用:使用
estimate_cost提供起终点信息和手机号,获取预估价格。 - 确认下单:使用
call_driver提供相同信息进行下单。 - Token 管理:如需要,使用
refresh_token手动刷新 token。
🔧 技术细节
Token 管理机制
- 自动检测:系统自动检查本地是否存在对应手机号的 token。
- 智能获取:若本地无 token,自动调用 API 获取新 token。
- 本地存储:token 自动保存到
edjserver/tokens/目录。 - 过期处理:当 API 返回 token 过期时,自动刷新并重试。
- 校验重试:token 校验失败时,自动刷新 token 并重新执行操作。
技术特性
- 智能重试:自动处理 token 相关错误,无需手动干预。
- 参数验证:完善的输入验证,确保数据格式正确。
- 错误处理:返回详细的错误信息,便于定位问题。
- 唯一订单号:基于时间戳和 UUID 生成唯一订单标识。
运行方式
python edaijiamcp.py
依赖项
- mcp:Model Context Protocol 库
- requests:HTTP 请求库
- python-dotenv:环境变量管理
- uuid:唯一标识符生成
- time:时间戳生成
- json:JSON 数据处理
- os:文件系统操作
项目结构
edaijiamcp/
├── edaijiamcp.py # MCP服务主文件
├── edjserver/ # e代驾API封装
│ ├── EdjApi.py # 主要API接口
│ ├── EdjSignUtils.py # 签名工具
│ ├── EdjSystemParams.py # 系统参数
│ └── tokens/ # token存储目录
├── README.md # 项目文档
└── pyproject.toml # 项目配置
微信扫一扫