技能潮 SkillTide 提交收录
官方说明7 个来源MCP 服务8 天前
vbhjckfd/timetable-api-node

vbhjckfd/timetable-api-node

NodeJS version of lad.lviv.ua API
在 GitHub 查看 ↗直链 · 无中转页
配置模板(请按你的客户端调整)
claude mcp add timetable-api-node -- npx -y timetable-api-node
这是根据仓库名生成的可粘贴骨架,命令行参数与包名请以该项目 README 为准。
★ 数取值
3 ★ · vbhjckfd/timetable-api-node · 取自该仓库的 GitHub 页面 · (2026-10-16 20:00:20 核对)
来源明细
收录自 punkpeye/awesome-mcp-servers 榜单(我们从中收集的条目之一) · 条目类型:MCP 服务
收录与活跃
收录于 2026-10-09 · 最近见到 2026-10-16 · 共见到 32 次 · 被 7 个来源列出
评分构成
综合分 703 · 3 ★ · 7 个来源 · mcp
常见问题(答案都来自我们的记录)
怎么安装?
我们【没有】从该仓库取到安装命令(我们的 install 覆盖率只有约 4%)。请看它的 README 或 releases 页。
它适合谁 / 用来做什么?
我们把它归在这些标签下: MCP 服务。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
仓库 vbhjckfd/timetable-api-node;我们收录于 2026-10-09;最近见到 2026-10-16。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。
第三方质量标记

Timetable API Node

以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →

Express-based API for Lviv transport timetable data with a read-only MCP endpoint.
Requirements
- Node.js 26 (see .nvmrc)
Run locally
make import downloads the static GTFS feed (gtfs-import-config.json) and
writes the two stores the server reads: database/Timetable (LokiJS: stops,
routes, shapes, first-stop schedules) and database/gtfs (SQLite: trips and
calendars). Both are gitignored, so a fresh clone has no data until it runs.
make import-slim re-imports only the light tables into SQLite and leaves
database/Timetable alone.
Configuration
All variables are optional; see .env.dist.
| Variable | Default | Purpose |
|----------|---------|---------|
| PORT | 8080 | HTTP port. |
| VEHICLES_LOCATION_URL | https://track.ua-gis.com/gtfs/lviv/vehicle_position | GTFS-RT vehicle positions feed. |
| TRIP_UDPDATES_URL | https://track.ua-gis.com/gtfs/lviv/trip_updates | GTFS-RT trip updates feed (the misspelling is the real name). |
| MCP_PUBLIC_BASE_URL | https://api.lad.lviv.ua | Base URL used in MCP metadata (icon URL). |
| NEW_RELIC_LICENSE_KEY | — | Enables New Relic APM (see Monitoring). |
| NEW_RELIC_APP_NAME, NEW_RELIC_LOG_LEVEL | timetable-api-node, info | New Relic agent settings. |
| PULSE_WORKER_URL, PULSE_SIGNAL_SECRET | — | Signal a Pulse worker on each /stops/:code/timetable request; both must be set. |
| MCP_URL | https://api.lad.lviv.ua/mcp | Only for the timetable-mcp stdio proxy: the remote endpoint it forwards to. |
Test
TypeScript
The code is TypeScript and runs straight from the .ts sources under Node's
built-in type stripping — there is no build step for the server, the GTFS
import or the scripts. That means only erasable syntax (no enum,
namespace or parameter properties), import type for type-only imports, and
relative imports that name the .ts file; tsconfig.json enforces all three.
npm run build emits just mcp/stdio.js, the published bin: Node does not
strip types inside node_modules, so the npm package has to ship JavaScript.
It runs on npm pack/npm publish; the output is not committed.
public/stopOverrides.js is served to browsers as-is, so it stays JavaScript
and is type-checked from its JSDoc.
Monitoring
New Relic APM, off unless NEW_RELIC_LICENSE_KEY is set. It also carries
errors and the custom metrics recorded through utils/metrics.ts.
New Relic runs as a preloaded agent, so npm start carries the flags:
dotenv/config is preloaded first so .env is populated before the agent
reads its configuration. The config file is newrelic.cjs (the agent is
CommonJS and this project is ESM) and holds no secrets — the key comes from the
environment. /health is excluded from transactions via rules.ignore.
The account is in the **EU** region; its license key starts with eu01xx and
the agent picks the collector from that prefix. Use the 40-character ingest
license key, not an NRAK-... user API key.
Cloud Run reads the key from Secret Manager:
MCP Server
This service exposes a public read-only MCP endpoint over Streamable HTTP.
- MCP endpoint: /mcp
- Server card: /.well-known/mcp/server-card.json
- Discovery hint: /robots.txt (non-standard comment hint)
Production deployment (see cloudbuild.yaml for Cloud Run) serves **REST and MCP** from **api.lad.lviv.ua**. The main site **lad.lviv.ua** is the public transport website (this repo still links there in HTML sitemap and tables for people, not for the API host). Use your own origin when running locally.
LLM and /mcp flow
An MCP client (Claude, Cursor, or the MCP SDK) talks JSON-RPC over **Streamable HTTP** to POST /mcp. Tool handlers reuse the same Express actions as the REST API, backed by **LokiJS** timetable data, **GTFS** SQLite (via gtfs), and **live GTFS-RT** feeds (for example track.ua-gis.com).
Try the live API
**MCP Inspector (local):** run npx @modelcontextprotocol/inspector, then open the UI with transport and server URL prefilled (from the inspector README):
http://localhost:6274/?transport=streamable-http&serverUrl=https%3A%2F%2Fapi.lad.lviv.ua%2Fmcp
Postman / curl: call a tool on production
POST https://api.lad.lviv.ua/mcp with Content-Type: application/json **and** Accept: application/json, text/event-stream — the Streamable HTTP transport rejects a request that does not accept both. The server is stateless: there is no session, so tools/call works on its own without an initialize first. The response arrives as a single SSE event: message frame carrying the JSON-RPC result.
来源
awesome · https://github.com/vbhjckfd/timetable-api-node
按领域浏览
MCP 服务
Traction
3 ★
收录于
昨天

更多MCP 服务

查看MCP 服务全部 5,525 条 →

所属领域与标签

每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。

浏览全部领域 →

← 返回索引