mcpField
M
MolTravel

MolTravel

远程服务
github.com/navifare地图与出行06 周前更新
代码仓库

关于 MolTravel

MolTravel 是面向旅行者和旅行规划 Agent 的 MCP 服务,整合旅行搜索与参考数据。它代理旅行服务商的工具,并提供机场、签证和旅行提示数据集。

主要功能

  1. 01航班搜索与价格比较
  2. 02活动和体验搜索
  3. 03机场与航空公司查询
  4. 04签证与国家信息
  5. 05旅行安全提示
  6. 06可选自然语言路由

适用场景

  1. 01比较不同预订网站的航班价格
  2. 02查找活动并查看日期可用性
  3. 03查询机场信息和签证要求
  4. 04查看目的地旅行提示

MCP 相关

通过单一 MCP 端点提供上游旅行 MCP 服务商的工具及原生工具。客户端可见上游工具的 Schema,参数会传递给上游服务验证。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.moltravel.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

56
参数类型必填说明
querystring是
fieldsany否
search_bystring否

详细介绍

MoltTravel

一个 MCP 服务。涵盖所有旅行工具。

搜索航班、比较价格、查询签证和机场信息,
获取旅行提示——只需一个端点。

MCP Protocol Python 3.12+ License: MIT


  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)

为什么选择 MoltTravel?

旅行数据分散在数十个 API 中,每个 API 都有自己的身份验证方式、格式和特性。MoltTravel 将它们整合到一个模型上下文协议端点后:

  • 21+ 个工具,来自 4 个上游 MCP 提供方和 6 个内置数据集
  • 静态数据无需配置——机场、航空公司和签证数据会在需要时加载,无需 API 密钥
  • 架构透明的代理——客户端可以看到真实的上游 JSON Schema;上游服务会验证自己的参数
  • 只需一行即可连接 Claude Desktop、Claude Code、Cursor 或任何 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

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "molttravel": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
Claude Code

添加到 .claude/settings.json:

{
  "mcpServers": {
    "molttravel": {
      "url": "http://localhost:8000/mcp"
    }
  }
}
Python(编程方式)
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_search-flightKiwi.com按航线、日期、乘客人数和舱位搜索航班
navifare_format_flight_pricecheck_requestNavifare将自然语言中的航班详情解析为结构化数据
navifare_flight_pricecheckNavifare比较同一航班在多个预订网站上的价格
体验与活动
工具提供方功能
peek_search_experiencesPeek.com搜索全球 300K+ 项经验证的活动
peek_experience_detailsPeek.com查看体验的完整详情、评价和照片
peek_experience_availabilityPeek.com查询指定日期的可用情况和价格
peek_search_regionsPeek.com按名称查找区域 ID
peek_list_tagsPeek.com浏览活动类别和标签
peek_render_activity_tilesPeek.com渲染可嵌入的活动小组件
参考数据 (内置,无需 API 密钥)
工具数据集功能
airports_lookupOurAirports按 IATA 或 ICAO 代码查询
airports_searchOurAirports按名称搜索,并按国家或类型筛选
airports_nearOurAirports查找任意坐标周围指定半径内的机场
airlines_lookupOpenFlights按 IATA 或 ICAO 代码查询
airlines_searchOpenFlights按名称搜索,并按国家或运营状态筛选
visa_checkPassport Index查询两个国家之间的签证要求
visa_summaryPassport Index查看护照免签、落地签和电子签证的完整分类
restcountries_country_infoREST Countries首都、货币、语言、时区和人口
fcdo_travel_adviceUK FCDO安全提示、入境要求和健康警告
fcdo_list_countriesUK FCDO列出所有发布旅行提示的国家
data_status—查看已加载的数据集及记录数量
自然语言 (可选)
工具功能
travel_agent提出任何旅行问题——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. 架构透明的代理

客户端看到的是每个工具的原始上游 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. 延迟加载数据

静态数据集(机场、航空公司、签证)会在首次使用时通过异步锁下载。不会增加启动开销;如果你只使用航班工具,也不会浪费带宽。


配置

变量默认值说明
PORT8000服务端口
GEMINI_API_KEY—启用 travel_agent 自然语言路由工具

部署

Docker
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
Render / Railway / Fly.io

服务会从环境中读取 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"

数据来源与许可证

数据集来源许可证
机场OurAirports公有领域
航空公司OpenFlightsODbL 1.0
签证要求Passport IndexMIT
国家信息REST CountriesMPL 2.0
旅行警示UK FCDOOGL v3.0

贡献

  1. Fork 此仓库
  2. 创建分支(git checkout -b feature/my-feature)
  3. 修改并测试(python molttravel_server.py)
  4. 发起拉取请求

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。