Query WA highway conditions, ferry schedules, vessel locations, toll rates, border waits, and alerts via MCP. STDIO or Streamable HTTP.
- ✓Open-source license (Apache-2.0)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
git clone https://github.com/cyanheads/wsdot-mcp-server{
"mcpServers": {
"wsdot": {
"command": "node",
"args": ["/path/to/wsdot-mcp-server/dist/index.js"]
}
}
}MCP Servers overview
<div align="center"> <h1>@cyanheads/wsdot-mcp-server</h1> <p><b>Query WA highway conditions, ferry schedules, vessel locations, toll rates, border waits, and alerts via MCP. STDIO or Streamable HTTP.</b> <div>12 Tools</div> </p> </div> <div align="center"> [](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/wsdot-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/wsdot-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/) </div> <div align="center"> [](https://github.com/cyanheads/wsdot-mcp-server/releases/latest/download/wsdot-mcp-server.mcpb) [](https://cursor.com/en/install-mcp?name=wsdot-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvd3Nkb3QtbWNwLXNlcnZlciJdLCJlbnYiOnsiV1NET1RfQUNDRVNTX0NPREUiOiJ5b3VyLWFjY2Vzcy1jb2RlIn19) [](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22wsdot-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads%2Fwsdot-mcp-server%22%5D%2C%22env%22%3A%7B%22WSDOT_ACCESS_CODE%22%3A%22your-access-code%22%7D%7D) [](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) **Public Hosted Server:** [https://wsdot.caseyjhand.com/mcp](https://wsdot.caseyjhand.com/mcp) </div> --- ## Overview Washington State transportation data from the WSDOT Traveler API and the WSF Ferry API. Query mountain pass and highway conditions, search alerts and cameras, and track ferry schedules, vessel locations, and terminal space from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above. ### Tools | Tool | Description | |:---|:---| | `wsdot_get_mountain_passes` | Current conditions for all WA mountain passes: status, road condition, traction laws, temperature, elevation. | | `wsdot_search_alerts` | Active highway alerts — incidents, construction, closures — filterable by state route, WSDOT region, and milepost range. | | `wsdot_get_travel_times` | Current vs. average travel times for named WA highway corridors (I-5, I-90, SR 520, etc.) with congestion delay. | | `wsdot_get_toll_rates` | Dynamic toll rates for WA express lanes and tolled facilities: SR 99, SR 167 HOT, I-405 Express, SR 509, SR 520. | | `wsdot_get_border_waits` | Current vehicle wait times at all WA/Canada land border crossings. | | `wsdot_search_cameras` | Highway camera metadata and image URLs, filterable by state route, region, and milepost range. | | `wsdot_get_ferry_terminals` | All WSF ferry terminals with numeric IDs needed for schedule and space lookups. | | `wsdot_get_ferry_routes` | WSF routes operating on a given date — route ID, abbreviation, and description for each, for route discovery and ferry-alert cross-reference. | | `wsdot_get_ferry_schedule` | Departure times for a specific WSF route — today-remaining or full-day future mode. | | `wsdot_get_vessel_locations` | Real-time AIS positions, speed, heading, ETA, and dock status for all active WSF vessels. | | `wsdot_get_terminal_space` | Drive-up and reservable vehicle space available at WSF terminals for upcoming sailings. | | `wsdot_get_ferry_alerts` | Active WSF service disruptions and bulletins with impacted route IDs. | ## Capability reference ### `wsdot_get_mountain_passes` <sub>tool</sub> - No input parameters — returns current conditions for all 16 WA mountain passes (Snoqualmie, Stevens, White, Blewett, Cayuse, and others) in one call - Fields include road condition, weather, temperature, elevation, and up to two directional traction/travel restrictions - Use for "is the pass open?", traction-law checks, or winter driving planning --- ### `wsdot_search_alerts` <sub>tool</sub> - Filter by state route — natural forms all work: `"I-90"`, `"90"`, `"090"`, or `"SR 520"` / `"520"` - Filter by WSDOT region: Northwest, Olympic, Southwest, South Central, North Central, Eastern - Filter by milepost range to scope to a corridor — an alert matches when its extent overlaps the range, so a closure that spans the boundary is returned - Omit all filters to return all current statewide alerts - Descriptions are normalized to plain text; a link renders inline as `link text (url)` - Results ordered by `alertId` and paged (default 50, max 500) — pass `offset`/`limit`; the notice reports the next offset --- ### `wsdot_get_travel_times` <sub>tool</sub> - Covers I-5, I-90, SR 520, SR 99, I-405, SR 167, and others - Filter by route (`"I-5"`, `"5"`, `"SR 520"`) to get every corridor measured on it, or by any text to match corridor names (`"Everett"`) - When current time exceeds average, the corridor is congested; the delta is the delay - Reversible express-lane corridors report no travel time while closed in the queried direction — those figures are omitted rather than reported as zero minutes - Results are paged (default 50, max 500) — pass `offset`/`limit`; the notice reports the next offset --- ### `wsdot_get_toll_rates` <sub>tool</sub> - Covers SR 99 (WSDOT Tunnel), SR 167 HOT Lanes, I-405 Express Lanes, the SR 509 tolled segment, and the SR 520 Bridge - Rates are time-banded and change dynamically based on traffic conditions - `stateRoute` is a bare, zero-padded route number (`"099"`, `"405"`) with no route type; the rendered text resolves the posted designation, so I-405 reads as `I-405` rather than `SR 405` - Each entry leads with its readable `startLocationName → endLocationName` segment; the opaque upstream trip key stays available as `tripName` - Results are paged (default 50, max 500) — pass `offset`/`limit`; the notice reports the next offset --- ### `wsdot_get_border_waits` <sub>tool</sub> - No input parameters — covers I-5 (Peace Arch, Blaine), SR 543 (Pacific Highway, Blaine), SR 539 (Lynden), and SR 9 (Sumas) - Each crossing reports a general-purpose lane and a Nexus lane; SR 539 adds a truck lane and SR 543 adds truck and FAST truck lanes — eleven entries in `crossings[]`, one per lane - `crossingName` is a route code (e.g. `I5`, `SR543Trucks`); `location.description` holds the readable name - Wait times in minutes; `updateTime` is ISO 8601. A crossing reporting no current data is still returned — only `waitTimeInMinutes` is omitted, and the rendered text reads `Not available` --- ### `wsdot_search_cameras` <sub>tool</sub> - Filter by state route (`"I-90"`, `"90"`, `"SR 520"`, or `"520"` all work), WSDOT region, or milepost range - Camera road names carry a route-type prefix, so `"SR 26"` excludes US 26 and `"US 97"` excludes US 97A; a bare `"26"` returns both - Returns metadata and image URLs — camera images are copyright WSDOT, not fetched as bytes - Results are ordered by `cameraId` and paged (default 50, max 500) — pass `offset`/`limit`; the notice reports the next offset --- ### `wsdot_get_ferry_terminals` <sub>tool</sub> - No input parameters — returns all 20 WSF ferry terminals; the list rarely changes - Call this first to resolve human-readable names (e.g. "Bainbridge Island", "Seattle", "Kingston") to the numeric IDs required by `wsdot_get_ferry_schedule` and `wsdot_get_terminal_space` - Each terminal also carries an abbreviation and coordinates when reported --- ### `wsdot_get_ferry_routes` <sub>tool</sub> - Optional `tripDate` (ISO 8601 `YYYY-MM-DD`); defaults to today - Returns each route's ID, abbreviation, and description - Route IDs correspond to `impactedRouteIds` in `wsdot_get_ferry_alerts` — use this tool to resolve alert route IDs to route names - Use to discover which routes are running; for the numeric terminal IDs that schedule and space lookups need, call `wsdot_get_ferry_terminals` --- ### `wsdot_get_ferry_schedule` <sub>tool</sub> - Requires numeric `departingTerminalId` and `arrivingTerminalId` — use `wsdot_get_ferry_terminals` first - Optional `tripDate` (defaults to today) and `remainingOnly: true` (only future departures for today; ignored for future dates) - `departureTime` and `arrivalTime` are ISO 8601 **UTC**, while `tripDate` is the Pacific service day — an evening sailing therefore carries the following UTC calendar date and will not match `tripDate`. Convert to `America/Los_Angeles` before quoting a clock time - `arrivalTime` is populated on some routes and absent on others - No cancellation status — WSF drops a cancelled sailing from the schedule rather than flagging it, so a listed sailing is not confirmation it will run; check `wsdot_get_ferry_alerts`, which reports disruptions at route level - An invalid or non-through terminal pair returns a typed `invalid_terminal_pair` error rather than an empty schedule --- ### `wsdot_get_vessel_locations` <sub>tool</sub> - No input parameters — fields include position, speed, heading, ETA, and dock status for every active WSF vessel - Use for "where is the ferry now?" or checking if a specific vessel is in service - Position data may lag 30–60 second
What people ask about wsdot-mcp-server
What is cyanheads/wsdot-mcp-server?
+
cyanheads/wsdot-mcp-server is mcp servers for the Claude AI ecosystem. Query WA highway conditions, ferry schedules, vessel locations, toll rates, border waits, and alerts via MCP. STDIO or Streamable HTTP. It has 1 GitHub stars and its last recorded update is dated 2026-09-20.
How do I install wsdot-mcp-server?
+
You can install wsdot-mcp-server by cloning the repository (https://github.com/cyanheads/wsdot-mcp-server) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is cyanheads/wsdot-mcp-server safe to use?
+
Our security agent has analyzed cyanheads/wsdot-mcp-server and assigned a Trust Score of 95/100 (tier: Verified). See the full breakdown of passed checks and flags on this page.
Who maintains cyanheads/wsdot-mcp-server?
+
cyanheads/wsdot-mcp-server is maintained by cyanheads. The last recorded GitHub activity is dated 2026-09-20, with 8 open issues.
Are there alternatives to wsdot-mcp-server?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy wsdot-mcp-server to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/cyanheads-wsdot-mcp-server)<a href="https://claudewave.com/repo/cyanheads-wsdot-mcp-server"><img src="https://claudewave.com/api/badge/cyanheads-wsdot-mcp-server" alt="Featured on ClaudeWave: cyanheads/wsdot-mcp-server" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ
The fastest path to AI-powered full stack observability, even for lean teams.