使用说明
RapidKL MCP服务器
基于FastMCP的MCP服务公开了RapidKL(MYRAPID)地理服务端点,用于票价、车站搜索、行程规划和全站资源。
特性
- 工具:
get_fare(frm: str, to: str)
返回两个车站标识符(成人、现金、无现金、优惠、标准)之间的票价。 - 工具:
get_stations(input: str)
按地点或车站名称搜索车站;返回格式化的名称、id、类别和坐标。 - 工具:
get_journey_planner(from_long: float, from_lat: float, to_long: float, to_lat: float, mode: str, journey_type: str, departure_datetime: str)
请求坐标之间的行程计划。接受出发时间为YYYY-MM-DD或YYYY-MM-DD HH:MM:SS. - 资源:
get_all_stations()
获取全站有效载荷,并返回人类可读的路线和站点列表(跳过空占位符)。
需求
- Python 3.10+
- 包装:
- httpx
- 主控程序
安装:
python -m pip install httpx mcp
使用的端点
基础MYRAPID地理服务:
https://jp.mapit.myrapid.com.my/endpoint/geoservice
服务使用的通用端点:
/geocode--被使用get_stations/fares--被使用get_fare/journeyPlanner--被使用get_journey_planner/stations--被使用get_all_stations
正在运行(Windows)
从存储库根目录:
python c:\Dev\RapidKL_MCP\server.py
该脚本运行FastMCP服务器 mcp.run(transport='stdio').使用MCP兼容客户端调用工具/资源。
用法说明
make_myrapid_request(url)执行超时30秒的HTTP GET请求,并返回解析后的JSON(或None错误)。- 处理程序接受已经解析为字典或JSON字符串的响应,并尝试对其进行规范化。
get_all_stations()细节:- 验证顶层结构(
success,message,data). - 将每条路线及其站点格式化为可读的多行字符串。
- 跳过中经常出现的空占位符对象
stops. - 使可访问性标准化(
isOKU)分为“可访问”/“不可访问”。 - 显示站点id、名称、坐标和行程计数(如果可用)。
- 验证顶层结构(
示例输出(截断)
get_fare:
Adult Fare: $2.40
Cash Fare: $2.40
Cashless Fare: $2.00
Concession Fare: $1.20
Standard Fare: $2.40
获取状态:
Station Name: Bandar Utama
Station ID: poi_12345
Category: MRT
Coordinates: (3.142857, 101.606666)
Latitude : 3.142857
Longitude: 101.606666
get_all_stations(路由摘录):
Route: MRT Putrajaya Line (PYL, MRT)
--------------------------------------------------
Stop: KWASA DAMANSARA (ID: PY01)
Coordinates: (3.1763324, 101.5721456)
Accessibility: Accessible
Trips known: 0
get_journey_planner(路线摘要摘录):
Journey from (3.142857, 101.606666) to (3.076, 101.607)
Departure: 2025-10-27 08:00:00
Route 1:
Estimated Arrival: 2025-10-27 09:00:00
Total Duration: 3600 seconds (60.0 minutes)
Fare (Adult/Cash/Cashless/Concession): RM2.4/RM2.4/RM2.0/RM1.2
Legs:
Leg 1 (Transit):
Route: MRT Putrajaya Line (PYL)
Departure: 2025-10-27 08:05:00
Arrival: 2025-10-27 08:45:00
Stops:
- Station A (ID: S123)
- Station B (ID: S124)
错误处理和日志记录
- 处理程序返回网络、解析或API错误的描述性错误字符串。
get_stations和get_journey_planner配置logging在DEBUG运行时诊断级别。
开发说明
- 代码使用Python 3.10+联合类型语法(
dict[str, Any] | None). - 添加测试以验证边缘情况的解析:缺少字段、坐标格式错误、
isOKU,占位符停止对象。 - 当MYRAPID API更改结构时,更新相应处理程序中的解析逻辑。
贡献
- 提高解析的健壮性,添加单元测试,或扩展格式以包含API返回的其他字段。