Live intercity bus-trip search across Ukraine and Europe as a remote MCP server. Read-only, no API key, no auth. Powered by soloway.com.ua — bookings are completed there, not through the tools.
Remote endpoint: https://mcp.soloway.com.ua/mcp (streamable HTTP, stateless)
| Tool | What it does |
|---|---|
search_trips |
Trips between two cities on a date — live prices, free seats, carriers, duration, transfers, passenger discounts, and a booking deep-link. City names resolve automatically (uk/en), with disambiguation when several cities match. |
get_calendar_prices |
Cheapest price for each day of a month on a route — find the cheapest day to travel. |
get_trip_details |
Full details of one trip from search results — stops, carrier discounts, seat info. |
ping |
Liveness check. |
All tools declare outputSchema, readOnlyHint: true and openWorldHint: false.
Works with any MCP client that speaks streamable HTTP. Step-by-step instructions for Claude, ChatGPT and others: soloway.com.ua/connect.
Claude Code:
claude mcp add --transport http soloway https://mcp.soloway.com.ua/mcpThe server is a thin, cache-friendly proxy over the public SoloWay API — the Docker image works out of the box:
docker build -t soloway-mcp .
docker run -p 8088:8088 soloway-mcp
# then point your MCP client at http://localhost:8088/mcpAll settings are env vars with sane defaults — see .env.example. The ones you may care about:
| Var | Default | Notes |
|---|---|---|
PORT |
8088 |
HTTP port |
BACKEND_BASE_URL |
https://soloway.com.ua (image) |
SoloWay API origin |
EXPECTED_HOST |
* (image) |
CSV of accepted Host values for no-Origin requests. * accepts any host and disables the SDK DNS-rebinding belt — fine for local/sandbox runs; pin your public hostname in production (our prod sets mcp.soloway.com.ua). |
ALLOWED_ORIGINS |
claude.ai / openai.com / soloway.com.ua | CSV, suffix wildcards supported (https://*.claude.ai) |
DEFAULT_LOCALE |
uk |
uk or en |
SEARCH_MAX_RESULTS |
40 |
Cap on trips returned per search |
npm install
npm run dev # tsx watch
npm test # vitest
npm run typecheckserver.json is the MCP registry manifest; eval/evals.xml holds stable-answer evaluations in mcp-builder format.