MoltTravel
MoltTravel
一个 MCP 服务器。涵盖所有旅行工具。
搜索航班、比较价格、查询签证、查找机场、 获取旅行建议——全部通过一个端点完成。
Kiwi.com Navifare Peek.com LastMinute
(flights) (prices) (experiences) (flights)
\ | | /
\ | | /
+--------+-----------+--------+
| |
| MoltTravel MCP Server |
| |
| Airports Airlines Visas |
| Countries FCDO Gemini AI |
| |
+-------------|---------------+
|
MCP over HTTP
|
Any MCP Client
(Claude, Cursor, your app)为什么?
旅行数据分散在数十个 API 中,每个 API 都有自己的认证方式、格式和怪癖。MoltTravel 将它们聚合到一个 Model Context Protocol 端点之后:
21+ 个工具,来自 4 个上游 MCP 提供商 + 6 个内置数据集
静态数据零配置——机场、航空公司和签证通过懒加载方式加载,无需 API 密钥
Schema 透明代理——客户端看到真实的上游 JSON Schema;上游服务器自行验证其参数
一行连接——从 Claude Desktop、Claude Code、Cursor 或任何 MCP 客户端
Related MCP server: orizn-visa-mcp
快速开始
git clone https://github.com/navifare/moltravel-mcp.git
cd moltravel-mcp
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
python molttravel_server.py服务器启动于 http://localhost:8000/mcp。就这样。
连接你的客户端
添加到 claude_desktop_config.json:
{
"mcpServers": {
"molttravel": {
"url": "http://localhost:8000/mcp"
}
}
}添加到 .claude/settings.json:
{
"mcpServers": {
"molttravel": {
"url": "http://localhost:8000/mcp"
}
}
}from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async with streamablehttp_client("http://localhost:8000/mcp") as (r, w, _):
async with ClientSession(r, w) as session:
await session.initialize()
tools = await session.list_tools()
result = await session.call_tool("airports_lookup", {"code": "ZRH"})工具
航班与价格
工具 | 提供商 | 功能 |
| Kiwi.com | 按航线、日期、乘客数、舱位等级搜索航班 |
| Navifare | 将自然语言中的航班信息解析为结构化数据 |
| Navifare | 在多个预订网站之间比较航班价格 |
体验与活动
工具 | 提供商 | 功能 |
| Peek.com | 搜索全球 30 万+ 已验证活动 |
| Peek.com | 体验的完整详情、评价和照片 |
| Peek.com | 查看特定日期的可用性和价格 |
| Peek.com | 按名称查找地区 ID |
| Peek.com | 浏览活动分类和标签 |
| Peek.com | 渲染可嵌入的活动组件 |
参考数据 (内置,无需 API 密钥)
工具 | 数据集 | 功能 |
| OurAirports | 按 IATA 或 ICAO 代码查询 |
| OurAirports | 按名称搜索,可按国家或类型筛选 |
| OurAirports | 查找任意坐标半径内的机场 |
| OpenFlights | 按 IATA 或 ICAO 代码查询 |
| OpenFlights | 按名称搜索,可按国家或运营状态筛选 |
| Passport Index | 查询两国之间的签证要求 |
| Passport Index | 某本护照的完整免签/落地签/电子签明细 |
| REST Countries | 首都、货币、语言、时区、人口 |
| UK FCDO | 安全建议、入境要求、健康警告 |
| UK FCDO | 列出所有有旅行建议的国家 |
| — | 检查哪些数据集已加载及记录数量 |
自然语言 (可选)
工具 | 功能 |
| 提出任何旅行问题——Gemini 会路由到合适的工具并返回综合答案 |
需要
GEMINI_API_KEY。示例:"下周从苏黎世到罗马最便宜的航班,我需要签证吗?"
工作原理
1. 工具发现
启动时,MoltTravel 连接到每个上游 MCP 服务器,调用 tools/list,并以 {provider}_{tool_name} 前缀注册所有发现的工具:
kiwi → kiwi_search-flight, kiwi_feedback-to-devs
navifare → navifare_flight_pricecheck, navifare_format_flight_pricecheck_request
peek → peek_search_experiences, peek_experience_details, ...
lastminute → (discovered at runtime)原生工具(机场、航空公司、签证、国家、FCDO)直接注册。
2. Schema 透明代理
客户端看到每个工具的原始上游 JSON Schema——枚举、嵌套对象、$ref,全部保留。在内部,MoltTravel 使用宽松的 Pydantic 模型(所有字段均为 Any),使参数无损通过。上游 MCP 服务器自行验证其参数。
# Client sees the real schema
parameters = input_schema # original from upstream
# Server doesn't re-validate types — just passes through
fields[prop_name] = (Any, Field(default=None))3. 数据懒加载
静态数据集(机场、航空公司、签证)在首次使用时通过异步锁下载。无启动开销,如果只使用航班工具也不会浪费带宽。
配置
变量 | 默认值 | 说明 |
|
| 服务器端口 |
| — | 启用 |
部署
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
EXPOSE 8000
CMD ["python", "molttravel_server.py"]docker build -t molttravel .
docker run -p 8000:8000 molttravel服务器从环境变量读取 PORT 并绑定到 0.0.0.0——在任何容器平台上开箱即用。只需将启动命令指向 python molttravel_server.py。
项目结构
moltravel-mcp/
├── molttravel_server.py # Server core — proxy logic, native tools, routing
├── requirements.txt # mcp[cli], httpx
├── test_search.py # Integration test client
└── providers/
├── __init__.py # MCP_PROVIDERS registry + exports
├── mcp_client.py # Generic HTTP client for upstream MCP servers
├── data_loader.py # CSV downloader + haversine distance
├── airports.py # 45K airports from OurAirports
├── airlines.py # 7K airlines from OpenFlights
├── visas.py # Visa requirements from Passport Index
├── restcountries.py # REST Countries API
├── fcdo.py # UK FCDO travel advisories
└── gemini.py # Gemini Flash tool router扩展
添加 MCP 提供商
在 providers/__init__.py 中添加一行并重启:
MCP_PROVIDERS = {
"kiwi": McpClient("https://mcp.kiwi.com/mcp"),
"navifare": McpClient("https://mcp.navifare.com/mcp"),
"peek": McpClient("https://mcp.peek.com/mcp"),
"your_provider": McpClient("https://mcp.example.com/mcp"), # new
}工具会自动以 your_provider_{tool_name} 的形式被发现和注册。
添加原生工具
@server.tool(name="my_tool")
async def my_tool(query: str) -> str:
"""Description shown to MCP clients."""
return "result"数据来源与许可证
数据集 | 来源 | 许可证 |
机场 | 公有领域 | |
航空公司 | ODbL 1.0 | |
签证要求 | MIT | |
国家信息 | MPL 2.0 | |
旅行建议 | OGL v3.0 |
贡献
Fork 本仓库
创建分支(
git checkout -b feature/my-feature)进行修改并测试(
python molttravel_server.py)提交 Pull Request
许可证
This server cannot be deployed
Maintenance
Related MCP Connectors
Your personal AI travel concierge — flights, hotels, 116M+ POIs, visas, weather & more
Search and explore a global travel points-of-interest catalog (cities, countries, POIs).
Search ~300 airlines and book flights with a checkout link. OAuth sign-in by email code.
AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.
Related MCP Servers
- FlicenseCqualityCmaintenanceEnables searching for flights (one-way, round-trip, multi-city) and hotels using the Duffel API, with support for filtering by cabin class, passengers, dates, and viewing accommodation reviews.5-
- AlicenseAqualityCmaintenanceCheck visa requirements for 39,585 passport-destination pairs in 15 languages. Returns visa type, required documents, application process, and travel tips from 136 official government sources. Free quick checks without API key.567 npm1MIT
- AlicenseAqualityAmaintenanceEnables travel search workflows including airport lookup, route comparison, travel timing guidance, and external booking links with commission-eligible links.5582 npm1MIT
- AlicenseNot gradedqualityCmaintenanceProvides real-time flight status, airport weather, delays, cheap flight deals, and TSA wait times without requiring an API key.8 npmMIT