windy-webcams-mcp-server
Windy Webcam MCP Server
A Model Context Protocol (MCP) server that provides access to the Windy Webcam Public API, enabling AI agents to search and retrieve information about live webcams from around the world.
Features
π Global Webcam Access
Search webcams by location, category, and other criteria
Get detailed webcam information including images, timelapses, and live players
Find nearby webcams using geographic coordinates
Browse webcams by category (beaches, mountains, cities, etc.)
πΊοΈ Geographic Filtering
Filter by country, region, or continent
Bounding box searches for specific geographic areas
Map clustering optimized for map display applications
Coordinate-based proximity searches
π Comprehensive Data
Live webcam feeds and preview images
Location information with detailed geographic data
Category classification for easy filtering
Player embeds for live streaming integration
Export functionality for bulk webcam data
π Performance Features
Intelligent caching with configurable TTL
Rate limiting to respect API quotas
Retry logic with exponential backoff
Error handling with detailed error messages
Related MCP server: windscout-mcp
Installation
Prerequisites
Node.js 18 or higher
Windy API key (get one at https://api.windy.com/keys)
npm Installation
npm install windy-webcam-mcp-serverFrom Source
git clone <repository-url>
cd windy-webcam-mcp-server
npm install
npm run buildConfiguration
Environment Variables
Set your Windy API key as an environment variable:
export WINDY_API_KEY="your-api-key-here"Or create a .env file:
WINDY_API_KEY=your-api-key-hereAPI Key
You can obtain a free API key from Windy API. The API has rate limits but provides access to a comprehensive database of worldwide webcams.
Usage
Command Line
# Using npm
npx windy-webcam-mcp-server
# Using node directly
node build/index.jsMCP Client Integration
Add to your MCP client configuration:
{
"mcpServers": {
"windy-webcam": {
"command": "npx",
"args": ["windy-webcam-mcp-server"],
"env": {
"WINDY_API_KEY": "your-api-key-here"
}
}
}
}Available Tools
π search_webcams
Search for webcams with various filters including location, category, and geographic criteria.
Parameters:
country- Country code (e.g., "US", "DE", "FR")region- Region code within a countrycontinent- Continent code (e.g., "NA", "EU", "AS")category- Category ID or comma-separated listnearby- Coordinates for proximity search ("lat,lng")bbox- Bounding box ("sw_lat,sw_lng,ne_lat,ne_lng")limit- Number of results (1-50, default: 10)offset- Result offset for paginationorder- Sort order (hotness, new, recent, random)lang- Language code (default: "en")
πΉ get_webcam
Get detailed information about a specific webcam by ID.
Parameters:
webcam_id- Webcam identifier (required)include- Additional data to includelang- Language code (default: "en")
π get_webcams_by_location
Get webcams from a specific geographic location.
Parameters:
location_type- Type of location (country, region, continent)location_code- Location code (required)limit- Number of results (1-50, default: 20)order- Sort order
π·οΈ get_webcams_by_category
Get webcams from specific categories.
Parameters:
categories- Category ID or comma-separated list (required)limit- Number of results (1-50, default: 20)order- Sort order
π get_nearby_webcams
Find webcams near specific coordinates.
Parameters:
latitude- Latitude coordinate (required)longitude- Longitude coordinate (required)radius- Search radius in kilometerslimit- Number of results (1-50, default: 10)
πΊοΈ get_map_clusters
Get webcam clusters optimized for map display.
Parameters:
ne_lat,ne_lng- Northeast corner coordinates (required)sw_lat,sw_lng- Southwest corner coordinates (required)zoom- Map zoom level (1-18)cluster- Enable clustering (default: true)
π get_categories
Get available webcam categories for filtering.
Parameters:
lang- Language code (default: "en")
π get_countries
Get available countries with webcams.
Parameters:
lang- Language code (default: "en")
ποΈ get_regions
Get available regions with webcams.
Parameters:
lang- Language code (default: "en")
π get_continents
Get available continents with webcams.
Parameters:
lang- Language code (default: "en")
π¦ export_all_webcams
Get basic information about all available webcams.
Parameters:
format- Export format (json)
Example Usage
Finding Beach Webcams in California
// Search for beach webcams in California
await use_mcp_tool({
server_name: "windy-webcam",
tool_name: "search_webcams",
arguments: {
country: "US",
region: "US-CA",
category: "beach",
limit: 10
}
});Getting Webcams Near a Location
// Find webcams near San Francisco
await use_mcp_tool({
server_name: "windy-webcam",
tool_name: "get_nearby_webcams",
arguments: {
latitude: 37.7749,
longitude: -122.4194,
limit: 5
}
});Getting Available Categories
// Get all available categories
await use_mcp_tool({
server_name: "windy-webcam",
tool_name: "get_categories",
arguments: {
lang: "en"
}
});API Response Format
All tools return responses in the following format:
{
"success": true,
"summary": "Found 150 webcams (10 returned)",
"data": {
"offset": 0,
"limit": 10,
"total": 150,
"webcams": [...]
},
"cached": false,
"api_info": {
"cache_hit": false,
"response_time_ms": 245
}
}Rate Limiting and Caching
Rate Limiting: 1 second delay between API requests
Caching: 5-minute TTL for most endpoints
Retry Logic: 3 attempts with exponential backoff
Error Handling: Comprehensive error messages with status codes
Error Handling
The server handles various error scenarios:
Invalid API Key: Returns authentication error
Rate Limiting: Automatic retry with backoff
Not Found: Clear error messages for missing resources
Network Issues: Retry logic with timeout handling
Development
Building
npm run buildTesting
npm testDevelopment Mode
npm run devAPI Documentation
For detailed API documentation, visit: https://api.windy.com/webcams/docs
License
MIT License - see LICENSE file for details.
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
Support
For issues and questions:
Check the API documentation
Review the error messages for troubleshooting
Ensure your API key is valid and properly configured
Built with β€οΈ for the Model Context Protocol ecosystem.
Available Tools
11 toolsexport_all_webcamsARead-only
Get basic information about all available webcams
Inputs: format. Returns: data, cached, success, summary, +1 more
get_categoriesARead-only
Get available webcam categories for filtering
Inputs: lang. Returns: data, cached, success, summary, +1 more
get_continentsBRead-only
Get available continents with webcams
Inputs: lang. Returns: data, cached, success, summary, +1 more
get_countriesBRead-only
Get available countries with webcams
Inputs: lang. Returns: data, cached, success, summary, +1 more
get_map_clustersARead-only
Get webcam clusters optimized for map display
Inputs: ne_lat (required), ne_lng (required), sw_lat (required), sw_lng (required), +2 more. Returns: data, cached, success, summary, +1 more
get_nearby_webcamsBRead-only
Find webcams near specific coordinates
Inputs: latitude (required), longitude (required), limit, radius, +1 more. Returns: data, cached, success, summary, +1 more
get_regionsARead-only
Get available regions with webcams
Inputs: lang. Returns: data, cached, success, summary, +1 more
get_webcamARead-only
Get detailed information about a specific webcam by ID
Inputs: webcam_id (required), lang, include. Returns: data, cached, success, summary, +1 more
get_webcams_by_categoryBRead-only
Get webcams from specific categories
Inputs: categories (required), limit, include, sortKey, +2 more. Returns: data, cached, success, summary, +1 more
get_webcams_by_locationARead-only
Get webcams from a specific location (country, region, continent, or city)
Inputs: location_code (required), location_type (required), limit, include, +2 more. Returns: data, cached, success, summary, +1 more
search_webcamsCRead-only
Search for webcams with various filters (location, category, etc.)
Inputs: bbox, lang, limit, cities, +11 more. Returns: data, cached, success, summary, +1 more
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 11 tools
Most tools target distinct query types (by ID, by location, by category, nearby, map clusters, reference lists), but search_webcams with filters overlaps conceptually with the dedicated by_location/by_category/nearby tools, creating mild ambiguity. The reference-list tools (regions, continents, countries, categories) are clearly distinct.
The dominant pattern is get_webcams_by_* and get_<reference-entity>, which is consistent and predictable. Two exceptions, search_webcams and export_all_webcams, break the pattern but are still clear and understandable.
With 11 tools, the server is well-scoped for a read-only webcam data API. Each tool serves a clear purpose, and the count is within the ideal 3-15 range without feeling bloated.
The surface covers the full range of likely queries: reference data, search, detail lookup, filtered listing by location/category, proximity search, map-friendly clusters, and bulk export. For a read-only public webcam API, there are no obvious dead ends or missing operations.
Maintenance
Related MCP Connectors
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
Open-Meteo MCP β weather forecast + historical reanalysis + sister APIs
An MCP server for weather information by @kulybaba
An MCP server for weather information by @kulybaba
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP Server for global weather, forecasts, air quality, and climate data using Open-Meteo, no API key required.10 PyPIMIT
- AlicenseAqualityDmaintenanceMCP server for wind forecasts, live measurements, wave forecasts, and tides, enabling kite and surf spot checks via AI assistants.57 npmMIT
- AlicenseAqualityCmaintenanceMCP server for weather forecasts via Open-Meteo (no API key needed), providing current weather, hourly, and daily forecasts with geocoding support.3MIT
- FlicenseNot gradedqualityCmaintenanceAn MCP server providing worldwide weather via the free Open-Meteo APIs (no API key needed). Runs fully self-contained in Docker as a streamable-HTTP MCP service.-