Waze MCP server

by amitbarkama

Not rated
GitHub

About

A minimal MCP server that exposes the OpenWeb Ninja Waze API's four endpoints: traffic alerts/jams, driving directions, venue search, and place autocomplete

Details

Author
amitbarkama
Categories
Other, API

Setup

Install Waze MCP server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/amitbarkama/WazeMCP

Follow the installation instructions in the repository README, then restart your MCP client.

AnMCP (Model Context Protocol)server that exposes the OpenWeb NinjaWaze APIto LLM hosts (Claude Desktop, Claude Code, Cursor, or any custom MCP client) as callable tools.

Each user suppliestheir ownWaze API key at runtime via theOPENWEB_NINJA_API_KEYenvironment variable — no key is bundled with the server.

All location inputs are plain latitude/longitudefloats. Rectangles are defined by abottom-left(south-west) corner and atop-right(north-east) corner — the bottom-left lat/lng must both besmallerthan the top-right values.

Sign up (free tier available) and create a key athttps://app.openwebninja.com/api/waze. The key is sent in thex-api-keyheader by the client; you provide it through theOPENWEB_NINJA_API_KEYenvironment variable.

You can supply it in either of two ways:

- .envfile(handy for local dev): copy.env.exampleto.envand paste your key. The server auto-loads a.envsitting next towaze_mcp_server.py.Never commit.env— it is already in.gitignore.
- Hostenvblock(recommended when connecting to a host): set it in the host config (see step 5). A key set in the host environmentoverridesthe.envfile.

RequiresPython 3.10+. Use an isolated environment so the dependencies don't conflict with system packages.

cd /path/to/WazeMCP python3 -m venv .venv . .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt # or: pip install "mcp[cli]" requests
cd /path/to/WazeMCP uv venv uv pip install -r requirements.txt # or: uv pip install "mcp[cli]" requests

Record theabsolute pathto the interpreter — you'll need it for the host config:

python3 -c "import sys; print(sys.executable)" # e.g. /path/to/WazeMCP/.venv/bin/python

openweb_ninja_waze.pyandwaze_mcp_server.pymust stay in thesame folder— the server imports the client.

Confirm the install works and all 4 tools register — no API key or network required:

python3 -c "import asyncio, waze_mcp_server as s; print(len(asyncio.run(s.mcp.list_tools())), 'tools registered')" # -> 4 tools registered

4. Try it live with the MCP Inspector (needs a real key)

export OPENWEB_NINJA_API_KEY="your_real_key" mcp dev waze_mcp_server.py

In the browser UI, openTools, pickget_traffic_alerts_and_jams, enter a small bounding box (e.g. bottom-left40.70, -74.02, top-right40.75, -73.96), and run it. An{"error": ...}object means something went wrong — read the message (commonly an invalid key → 401, or an inverted bounding box).

Each user putstheir ownkey in the host'senvblock — not in the code.

mcp install waze_mcp_server.py -v OPENWEB_NINJA_API_KEY=your_real_key

Manual— editclaude_desktop_config.jsonand use theabsolute path to the venv interpreterfrom step 2 (a barepythonwill likely fail):

{ "mcpServers": { "waze": { "command": "/path/to/WazeMCP/.venv/bin/python", "args": ["/path/to/WazeMCP/waze_mcp_server.py"], "env": { "OPENWEB_NINJA_API_KEY": "your_real_key" } } } }

- macOS:~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:%APPDATA%\Claude\claude_desktop_config.json

Restart Claude Desktop, confirm thewazetools appear, then try a prompt that forces a chain, e.g."Any accidents or police between Times Square and JFK right now?"— the model should callautocomplete_placesget_driving_directionsget_traffic_alerts_and_jams.

claude mcp add waze \ -e OPENWEB_NINJA_API_KEY=your_real_key \ -- /path/to/WazeMCP/.venv/bin/python /path/to/WazeMCP/waze_mcp_server.py

Or commit a project-scoped.mcp.jsonat the repo root:

{ "mcpServers": { "waze": { "command": "/path/to/WazeMCP/.venv/bin/python", "args": ["/path/to/WazeMCP/waze_mcp_server.py"], "env": { "OPENWEB_NINJA_API_KEY": "your_real_key" } } } }

- openweb_ninja_waze.py— thin HTTP client for the Waze REST API (auth, retries, coord formatting).
- waze_mcp_server.py— FastMCP server defining the 4 tools.
- requirements.txt— pinned runtime dependencies (mcp[cli],requests).
- .env.example— template; copy to.envand add your key.

Global postal code lookups, validation, and city search for 70+ countries. Sub-10ms responses.

Open MCP server providing real-time transit routing, open-source GIS / geographic intelligence, and specialized Slovenian geospatial lookup tools for AI agents and LLMs.

Provides geocoding, reverse geocoding, routing, and driving distance calculations for LLMs using pgGeocoder and pgrServer.

Query real-time fuel prices, find nearby stations, plan routes, and geocode locations across different countries

Public HTAG MCP connectors for Australian property intelligence, H3 spatial intelligence, and capability discovery — 70+ read-only tools over Streamable HTTP.

IP2Location.io API integration to retrieve the geolocation information for an IP address.

Unlock geospatial intelligence through Mapbox APIs like geocoding, POI search, directions, isochrones and more.

Geographic data, live exchange rates, and IP geolocation for Claude Desktop, Cursor, and any MCP-compatible AI assistant.

Free business data API and MCP server. Find restaurants, cafes, hotels, shops and 37+ business categories in any city worldwide. Uses OpenStreetMap data. No API key required. REST API + MCP Streamable HTTP endpoint.

Provides access to the Israeli transport API for geocoding and transit directions.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.