LetsFG — Flights & Hotels
Search and book flights and hotels: hundreds of airlines, plus bookable hotel rates.
作者提供的说明(英文原文)
Global transit via Transitland v2 — operators, GTFS/GTFS-RT/GBFS feeds, routes, stops, departures.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
TRANSITLAND_API_KEY, TRANSITLAND_BASE_URL, MCP_LOG_LEVEL标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"transitland": {
"command": "npx",
"args": [
"-y",
"@cyanheads/transitland-mcp-server"
],
"env": {
"TRANSITLAND_API_KEY": "your-value",
"TRANSITLAND_BASE_URL": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add transitland --env TRANSITLAND_API_KEY=your-value --env TRANSITLAND_BASE_URL=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/transitland-mcp-server运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"transitland": {
"command": "npx",
"args": [
"-y",
"@cyanheads/transitland-mcp-server"
],
"env": {
"TRANSITLAND_API_KEY": "your-value",
"TRANSITLAND_BASE_URL": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"transitland": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/transitland-mcp-server"
],
"env": {
"TRANSITLAND_API_KEY": "your-value",
"TRANSITLAND_BASE_URL": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
TRANSITLAND_BASE_URL envMCP_LOG_LEVEL env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
依据这个服务器的连接方式和各应用自己的文档,检查于 2026年11月10日。
在你的电脑上运行,适用于
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月10日
注册名称已通过 GitHub 账户 cyanheads 验证,该账户拥有此仓库
代码最后更新于24天前
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 2 项适用的基础检查中通过了 2 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:TRANSITLAND_API_KEY
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于24天前,最新版本(0.2.0)于28天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:LetsFG — Flights & Hotels, Google Maps MCP Server, Mu
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Search and book flights and hotels: hundreds of airlines, plus bookable hotel rates.
18 Google Maps tools for AI agents — geocode, search, directions, weather, and more.
News, web search, mail, markets, weather, places, files, calendar, contacts. 67 tools, one endpoint.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
@cyanheads/transitland-mcp-server Global transit data from the Transitland v2 registry — operators, GTFS/GTFS-RT/GBFS feeds with license terms, routes, stops, and real-time-aware departures via MCP. STDIO or Streamable HTTP. 6 Tools • 2 Resources
Transit data for thousands of operators worldwide from Transitland, the open aggregator of GTFS, GTFS-Realtime, and GBFS feeds. Find operators and their feeds, and look up routes, stops, and real-time departures.
| Tool | Description |
|---|---|
transitland_find_operators | Find transit operators/agencies by name, point/radius, bounding box, country/region, or Onestop ID |
transitland_get_operator | Fetch the full operator record by Onestop ID — agencies, feeds, and source tags |
transitland_find_feeds | Discover GTFS, GTFS-Realtime, and GBFS feeds — fetch URLs, license terms, and freshness |
transitland_find_routes | Find routes by point/radius, bounding box, operator, Onestop ID, or GTFS mode |
transitland_find_stops | Find stops/stations by name, point/radius, bounding box, Onestop ID, or operator network |
transitland_get_departures | Departures from a stop, each flagged realtime true/false |
Transitland does not geocode place names — resolve a location to coordinates with a geocoding MCP server (e.g. openstreetmap-mcp-server's openstreetmap_geocode) before calling a geography-filtered tool.
| Resource | Description |
|---|---|
transitland://operator/{onestop_id} | Operator record by Onestop ID — agencies, places served, published feeds, and source tags |
transitland://feed/{onestop_id} | Feed record by Onestop ID — spec, fetch URL, license terms, and freshness |
All resource data is also reachable via tools (transitland_get_operator, transitland_find_feeds).
Page limits default to 20 and are capped at 100. A larger limit is clamped with a notice, and truncated, shown, and cap appear when a page hits the limit. Use the returned after cursor to continue.
transitland_find_operators toolsearch (name), lat+lon+radius (max 100,000m, default 1,000m), bbox, onestop_id, or adm0_name/adm1_name (country/region) — at least one required, or the call fails as no_filterlat requires lon and vice versa, or the call fails as incomplete_pointGTFS_RT entry signals real-time departures may be available), and Wikidata QIDtransitland_get_operator toolo-9q9-bart) or an internal integer IDoperator_not_found when the ID doesn't resolvetransitland_find_feeds tooloperator_onestop_id (from transitland_find_operators), spec (gtfs/gtfs-rt/gbfs/mds; case and underscore/hyphen variants such as GTFS_RT are accepted), search, or fetch_error — at least one requiredyes/no/unknown, never inferred from a blank field — plus SPDX identifier and attribution text where knownauthorizationRequired flags feeds whose download needs a separate key or registrationtransitland_find_routes toollat+lon+radius (max 50,000m, default 1,000m), bbox, operator_onestop_id, onestop_id, route_type (GTFS mode integer), or search — at least one requiredlat requires lon and vice versa, or the call fails as incomplete_pointnull with mode unknowntransitland_find_stops toollat+lon+radius (max 10,000m, default 500m), bbox, onestop_id, served_by_onestop_ids (comma-separated operator/route Onestop IDs), or stop-name search — at least one required. Name searches need no geocodingnull when missing upstream), location_type with a label (stop, station, entrance, node, boarding area), wheelchair accessibility, timezone, and the parent station's Onestop ID for child platformslocation_type 0) — a station may return none, so use its child platformstransitland_get_departures tooltransitland_find_stops first; stop_not_found when it doesn't resolve. next_seconds sets the look-ahead window: 60–86,400 (default 3,600) — widen it or set use_service_window: true when a stop returns nothingrealtime flag (true for a live GTFS-Realtime prediction, false for a scheduled time) and a scheduleRelationship (STATIC, SCHEDULED, ADDED, CANCELED, UNSCHEDULED, DUPLICATED)realtimeAvailable reports whether the stop's feed publishes GTFS-RT at alltransitland://operator/{onestop_id} resourcetransitland_get_operator — agencies, places served, published feeds, and source tagsonestop_id accepts an Onestop ID (e.g. o-9q9-bart) or internal integer ID; operator_not_found when it doesn't resolvetransitland://feed/{onestop_id} resourcetransitland_find_feeds — spec, fetch URL, real-time endpoints, license terms, and freshnessonestop_id accepts a feed Onestop ID (e.g. f-9q9-bart) or internal integer ID; feed_not_found when it doesn't resolveunknown/null, never inferred as permissiveBuilt on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.
Transitland-specific:
o-/f-/r-/s-) are the identifier spine — surfaced in every result, accepted on input alongside internal integer IDsAgent-friendly output:
realtime and scheduleRelationship, plus a top-level realtimeAvailableunknown/null, never inferred as permissive, and agents are told to confirm against the license URL before redistributingafter cursor is surfaced, so the key never reaches tool output or logsAdd the following to your MCP client configuration file. A Transitland API key is required — see Prerequisites for how to get one.
{
"mcpServers": { "transitland-mcp-server": { "type": "stdio", "command": "bunx", "args": ["@cyanheads/transitland-mcp-server@latest"], "env": { "MCP_TRANSPORT_TYPE": "stdio", "MCP_LOG_LEVEL": "info", "TRANSITLAND_API_KEY": "your-api-key" } } } }
Or with npx (no Bun required):
{
"mcpServers": { "transitland-mcp-server": { "type": "stdio", "command": "npx", "args": ["-y", "@cyanheads/transitland-mcp-server@latest"], "env": { "MCP_TRANSPORT_TYPE": "stdio", "MCP_LOG_LEVEL": "info", "TRANSITLAND_API_KEY": "your-api-key" } } } }
Or with Docker:
{
"mcpServers": { "transitland-mcp-server": { "type": "stdio", "command": "docker", "args": [ "run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "-e", "TRANSITLAND_API_KEY=your-api-key", "ghcr.io/cyanheads/transitland-mcp-server:latest" ] } } }
For Streamable HTTP, set the transport and start the server:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 TRANSITLAND_API_KEY=your-api-key bun run start:http
git clone https://github.com/cyanheads/transitland-mcp-server.git
cd transitland-mcp-server
bun install
cp .env.example .env
All configuration is validated at startup via Zod schemas in src/config/server-config.ts. A missing `TRANSITLAND_AP