Kaštan is an open-source companion for occasional personal IDOS searches. Use it as a native macOS app or from a terminal, or integrate its search engine as a Swift library or local or remote MCP server.
Kaštan reads publicly reachable IDOS web pages. It is intended for personal, low-frequency use rather than as a stable or guaranteed data API.
- macOS app — search connections, station boards, and MHD station timetables in a native app.
- CLI — run the same searches on macOS, Windows, or Linux and choose human-readable or structured output.
- Swift library — build IDOS search features into a Swift project.
- MCP server — give local or OAuth-protected remote MCP clients read-only access to Kaštan searches.
Run the prebuilt Linux CLI image with Docker:
docker run --rm ghcr.io/glutexo/kastan-cli:latest Praha Brno --time 12:00The container guide covers stable image tags, persistent CLI aliases, and the separate MCP image.
For a native command-line build, install Git and Swift 6.3 or newer:
git clone https://github.com/Glutexo/kastan.git
cd kastan
swift test
swift run kastan Praha Brno --time 12:00To try the native app, open the Xcode project and run the shared KastanApp scheme:
open KastanApp/KastanApp.xcodeprojREADME stays focused on getting started. The complete documentation contains platform setup, full feature descriptions, every CLI command, the Swift API, and MCP configuration and tool behavior.
On macOS, the Makefile provides the common build, test, and packaging workflow for the Swift package, MCP server, and app:
make build
make test
makemake writes a universal macOS DMG and a ZIP of the committed buildable sources to dist/. Run make help
to list the individual build, test, and archive targets. The CLI and MCP guides retain their platform-specific
commands for contributors working without Xcode. GitHub Actions runs all three test suites for changes to main
and for pull requests. The macOS guide documents archive contents and
the signing limitation of locally generated builds.
Kaštan means chestnut in Czech. In Czech public-transport slang, the same word is also used for a passenger.