mcpField
V
Vancam

Vancam

Local
vancam.aiMaps & Travel0Updated 13w ago

About Vancam

Vancam is an MCP server for AI agents to search traffic cameras worldwide and retrieve live frames for road-condition checks. Searches can use map bounds, a radius, a route corridor, or distance from a point.

Key features

  1. 01Search cameras by bounding box
  2. 02Search within a radius of a point
  3. 03Find cameras along a straight-line corridor
  4. 04Find cameras nearest to a point
  5. 05Fetch live frames by asset ID

Use cases

  1. 01Check road cameras near a starting point
  2. 02Locate cameras along a route
  3. 03Retrieve a live frame to assess road conditions

MCP support

The MCP server provides compatible clients with spatial camera search, nearest-camera lookup, live-frame retrieval, and API documentation tools. Requests can use a shared rate-limited key or a personal API key.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"shughestr-vancam": {
"command": "uvx",
"args": [
"vancam-mcp"
],
"env": {
"VANCAM_API_KEY": "<VANCAM_API_KEY>"
}
}
}
}
Run commanduvx vancam-mcp
Environment variables to set
VANCAM_API_KEYSecretPersonal Vancam.ai API key for higher rate limits. Optional — falls back to a shared, low-limit key if unset.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
pypivancam-mcp0.1.0

Tools

6

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
limitintegerNo
max_latnumberYes
max_lonnumberYes
min_latnumberYes
min_lonnumberYes
active_onlybooleanNo

Details

From the project README

Vancam MCP Server

Vancam.ai — Traffic Cameras & Road Conditions — as an MCP (Model Context Protocol) server. Gives AI agents live access to the same camera network behind Vancam's road-condition data: over 1 million traffic cameras worldwide, searchable by map bounds, radius, route, or nearest point.

  • 🔍 Search cameras by bounding box, radius, route corridor, or nearest-to-point
  • 📸 Fetch live frames by camera asset ID, returned directly in the tool result
  • 🌐 Real-time data from the same backend that powers the Vancam.ai map
  • 🤖 AI-ready — built with FastMCP, works with Claude Desktop, Claude Code, and any MCP-compatible client

Quick Start

Option A: Install from PyPI

uvx vancam-mcp   # or: pip install vancam-mcp

Option B: Clone and install dependencies

git clone https://github.com/shughestr/vancam-mcp.git
cd vancam-mcp
pip install -r requirements.txt

2. (Optional) Set up an API key

Requests work out of the box using a shared, rate-limited key (1 req/s, 500/month, pooled across all anonymous users). For higher limits, grab a free personal key from your Vancam.ai account page and set it as an environment variable:

cp .env.example .env   # then edit .env
# .env
VANCAM_API_KEY=your_personal_key_here

3. Register the server with your MCP client

For Claude Desktop or Claude Code, add to your MCP config. If installed from PyPI (Option A):

{
  "mcpServers": {
    "vancam": {
      "command": "uvx",
      "args": ["vancam-mcp"],
      "env": {
        "VANCAM_API_KEY": ""
      }
    }
  }
}

If running from a local clone (Option B, see .mcp.json in this repo):

{
  "mcpServers": {
    "vancam": {
      "command": "python3",
      "args": ["/absolute/path/to/vancam-mcp/vancam_mcp/server.py"],
      "env": {
        "VANCAM_API_KEY": ""
      }
    }
  }
}

VANCAM_API_KEY is optional — leave it blank to use the shared, rate-limited key.

Restart your client, and the tools below become available.

Available Tools

list_cameras

List cameras within a bounding box — the same query the VanCam map runs on pan/zoom.

list_cameras(min_lat=49.2, min_lon=-123.2, max_lat=49.3, max_lon=-123.0, limit=50)
ParameterTypeDescription
min_lat, min_lon, max_lat, max_lonfloatBounding box (WGS84)
limitint, optionalMax results, 1–100 (default 100)
active_onlybool, optionalOnly camera_class=open live feeds (default false)
get_cameras_by_radius

Get cameras within a radius of a point.

get_cameras_by_radius(lat=49.28, lon=-123.12, radius=1.0, limit=20)
ParameterTypeDescription
lat, lonfloatCenter point (WGS84)
radiusfloat, optionalRadius in km (default 1.0)
limitint, optionalMax results (default 50)
active_onlybool, optionalOnly open/live cameras
get_cameras_along_route

Get cameras along a straight-line corridor between two points.

get_cameras_along_route(
    origin_lat=49.2827, origin_lon=-123.1207,
    dest_lat=49.1666, dest_lon=-123.1367,
    buffer=200.0, limit=50
)
ParameterTypeDescription
origin_lat, origin_lon, dest_lat, dest_lonfloatRoute endpoints
bufferfloat, optionalCorridor width in meters (default 100.0)
limitint, optionalMax results (default 50)
active_onlybool, optionalOnly open/live cameras

Results are sorted by route_fraction (0 = origin, 1 = destination). Note: this is a straight line between the two points, not a driving route.

get_nearest_cameras

Get the closest cameras to a point.

get_nearest_cameras(lat=49.2827, lon=-123.1207, limit=5)
ParameterTypeDescription
lat, lonfloatQuery point (WGS84)
limitint, optionalNumber of cameras (default 5)
active_onlybool, optionalOnly open/live cameras
get_camera_image

Fetch a camera's live frame by asset ID, returned as image data in the tool result (not just a URL — the image endpoint requires an API key header that most MCP clients can't attach themselves).

get_camera_image(asset_id="30145")
describe_camera_api

Returns documentation for all search modes, camera fields, and image URL patterns. Call this first if you're unsure which tool to use.

API Reference

Every search tool queries the same spatial API that backs the Vancam.ai map:

PurposeURL
Spatial searchhttps://api.vancam.ai/cameras/cameras
Live imagehttps://api.vancam.ai/api?asset_id={id}

Each camera includes asset_id, latitude, longitude, street_address, direction, camera_class (open/premium), level1/level2/level3 (country/state/city), distance_meters (radius/nearest searches), route_fraction (route search), and image_url/image_urls.

Full schema: openapi.yaml.

Environment overrides: VANCAM_API_KEY, VANCAM_CAMERAS_SEARCH_URL, VANCAM_API_IMAGE_URL

Project Structure

vancam-mcp/
├── vancam_mcp/
│   ├── server.py      # MCP server — registers the tools above
│   └── camera_api.py  # api.vancam.ai client
├── openapi.yaml       # API specification
├── pyproject.toml     # Package metadata (PyPI: vancam-mcp)
├── requirements.txt   # Python dependencies
└── .mcp.json          # Example MCP client config

Related Projects

Contributing

Contributions are welcome — feel free to open an issue or submit a pull request.

License

MIT — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.