乐天旅游MCP服务器
模型上下文协议(MCP)服务器,为乐天旅行API提供接口,用于酒店搜索和可用性检查。
特性
- 酒店搜索:按位置、酒店编号或区号搜索酒店
- 可用性搜索:查找实时可用的空置酒店
- 区号资源:访问分层日语位置数据
- 类型安全:具有Zod验证的全面TypeScript类型
- 符合MCP标准:适用于任何兼容MCP的客户端
先决条件
安装
- 克隆存储库:
git clone https://github.com/yourusername/rakuten_travel_mcp.git
cd rakuten_travel_mcp用法
运行服务器
- 配置您的MCP客户端。(以下示例适用于
Claude Desktop)
{ "mcpServers": { "rakuten_travel_mcp": { "command": "deno", "args": [ "run", "--allow-net=app.rakuten.co.jp", "--allow-env=APPLICATION_ID", "/path/to/rakuten_travel_mcp/serve.ts" ], "env": { "APPLICATION_ID": "" } } } }
### 可用工具
#### 1.酒店搜索(`hotel-search`)
使用各种条件搜索酒店:
**按酒店编号搜索:**
{ "hotelNo": ["123456", "789012"] }
**按坐标搜索:**
{ "latitude": 35.6762, "longitude": 139.6503, "searchRadius": 3, "datumType": 1 }
**按区号搜索:**
{ "largeClassCode": "japan", "middleClassCode": "tokyo", "smallClassCode": "shibuya" }
#### 2.寻找空置酒店(`vacant-hotel-search`)
搜索可用酒店:
{ "checkinDate": "2024-03-15", "checkoutDate": "2024-03-17", "rooms": 1, "adultNum": 2, "largeClassCode": "japan", "middleClassCode": "tokyo" }
### 可用资源
#### 区号资源(`config://area_code`)
访问日本的分层位置数据:
- 国家一级(例如“日本”)
- 县一级(例如“东京”、“大阪”)
- 市级(如“涩谷”、“新宿”)
- 区域级别(详细地区)
## 发展
### 运行测试
Run all tests
deno task test
Run tests in watch mode
deno task test:watch
### 项目结构
rakuten_travel_mcp/ ├── serve.ts # Main MCP server implementation ├── types.ts # TypeScript types and Zod schemas ├── area_code.json # Hierarchical location data ├── *.test.ts # Test files ├── deno.json # Deno configuration └── .env # Environment variables (create this)
## API参数
### 公共参数
- `hits`:每页结果数(1-30,默认值:30)
- `page`:分页页码
- `sort`:排序顺序(提供各种选项)
### 酒店搜索特定
- `hotelNo`:酒店编号数组
- `latitude`/`longitude`:地理搜索坐标
- `searchRadius`:搜索半径,单位为公里(1-3)
- `squeezeCondition`:筛选有/没有空缺的酒店
- `hotelType`:按酒店类型筛选(0-3)
### 特定空置酒店搜索
- `checkinDate`/`checkoutDate`:必填日期(YYYY-MM-DD)
- `rooms`:房间数量(1-5)
- `adultNum`:每间客房的成人人数(1-5)
- `minCharge`/`maxCharge`:价格范围过滤器
## 测试
该项目包括以下方面的综合测试:
- 架构验证
- API参数构建
- 响应处理
- 错误处理
- 网络超时
## 错误处理
服务器处理各种错误情况:
- 缺少必要参数
- 日期格式无效
- API费率限制
- 网络超时
- API响应无效
## 贡献
1. 分叉存储库
1. 创建功能分支(`git checkout -b feature/amazing-feature`)
1. 提交您的更改(`git commit -m 'Add some amazing feature'`)
1. 推到分支(`git push origin feature/amazing-feature`)
1. 打开拉取请求
## 许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
## 致谢
- 内置于 [模型上下文协议SDK](https://github.com/modelcontextprotocol/sdk)
- 由...驱动 [乐天 旅游 API](https://webservice.rakuten.co.jp/)