Skip to main content
Glama

WeatherXM Pro MCP Server

by oharkins
README.md14.2 kB
# WeatherXM Pro MCP Server [![smithery badge](https://smithery.ai/badge/@oharkins/weatherxm-mcp-server)](https://smithery.ai/server/@oharkins/weatherxm-mcp-server) A Model Context Protocol (MCP) server that provides comprehensive access to real-time weather data from the WeatherXM decentralized weather network worldwide. ## Features - **Real-time Weather Data**: Get current weather conditions from any WeatherXM station - **Weather Forecasting**: Access hourly and daily weather forecasts - **Historical Data**: Retrieve historical weather data for trend analysis - **Weather Alerts**: Get active weather alerts and warnings - **Station Discovery**: Find weather stations near any location - **Advanced Search**: Search for stations by name or location - **Weather Cells**: Explore the decentralized weather network coverage - **Data Quality Assessment**: Check the reliability of weather data from specific stations - **Comprehensive Weather Metrics**: Temperature, humidity, wind, pressure, UV index, solar irradiance, and precipitation data - **Global Coverage**: Access weather data from WeatherXM stations around the world ## Prerequisites - Node.js 18 or higher - A WeatherXM Pro API key (get one at [pro.weatherxm.com](https://pro.weatherxm.com)) ## Configuration The server requires a WeatherXM Pro API key to function. You'll need to provide this when connecting to the server. ### Getting a WeatherXM Pro API Key 1. Visit [pro.weatherxm.com](https://pro.weatherxm.com) 2. Sign up for a Pro account 3. Navigate to the API section 4. Generate an API key ### Quick Fix for "Connection Failed" / "Load Failed" The most common cause of connection failures is a missing or invalid WeatherXM Pro API key. Follow these steps: #### 1. Test Your API Key Run this command to test your API key: ```bash # Set your API key export WEATHERXM_API_KEY="your_api_key_here" # Test the connection node test-api.js ``` #### 2. Configure Your MCP Client **Option A: Environment Variable (Recommended)** ```bash export WEATHERXM_API_KEY="your_api_key_here" ``` **Option B: MCP Client Configuration** For Claude Desktop or other MCP clients, add to your configuration: ```json { "mcpServers": { "weatherxm": { "command": "npx", "args": ["@oharkins/weatherxm-mcp-server"], "env": { "WEATHERXM_API_KEY": "your_api_key_here" } } } } ``` **Option C: Direct Server Configuration** If running the server directly: ```bash WEATHERXM_API_KEY="your_api_key_here" npm run dev ``` ### MCP Client Configuration Examples #### Using the Published NPM Package For most users, the recommended approach is to use the published npm package: ```json { "mcpServers": { "weatherxm": { "command": "npx", "args": ["@oharkins/weatherxm-mcp-server"], "env": { "WEATHERXM_API_KEY": "your_api_key_here" } } } } ``` #### Using Local Development Version For developers or users who want to run the latest development version: ```json { "mcpServers": { "weatherxm": { "command": "node", "args": ["/path/to/weatherxm-mcp-server/dist/index.js"], "env": { "WEATHERXM_API_KEY": "your_api_key_here" } } } } ``` **Note**: Replace `/path/to/weatherxm-mcp-server` with the actual path to your cloned repository. Make sure to run `npm run build:tsc` first to generate the `dist/index.js` file using the traditional TypeScript compiler. #### Using Local Development with TypeScript For active development with hot reloading: ```json { "mcpServers": { "weatherxm": { "command": "npm", "args": ["run", "dev"], "cwd": "/path/to/weatherxm-mcp-server", "env": { "WEATHERXM_API_KEY": "your_api_key_here" } } } } ``` **Note**: This requires the development dependencies to be installed (`npm install`) and is only recommended for development purposes. #### 3. Verify the Connection After configuration, the server should start successfully and you should be able to use weather tools like: - "What's the weather like at station WXM123456?" - "Find weather stations near New York City" - "Get weather alerts for 40.7128, -74.0060" ## Installation 1. Clone this repository: ```bash git clone <repository-url> cd weatherxm-mcp-server ``` 2. Install dependencies: ```bash npm install ``` 3. Build the server: **Option A: Using Smithery (Default)** ```bash npm run build ``` **Option B: Using Traditional TypeScript** ```bash npm run build:tsc ``` **Note**: The traditional TypeScript build creates a `dist/` directory with compiled JavaScript files. Use this option if you prefer not to use Smithery or need the compiled output for deployment. ## Development and Local Runner This server supports both Smithery and local runner capabilities for development and testing. ### Using Smithery (Recommended) Smithery provides a modern development experience with hot reloading and optimized builds. **Development mode:** ```bash npm run dev ``` **Build for production:** ```bash npm run build ``` ### Using Local Runner For local development and testing without Smithery: **Set your API key:** ```bash export WEATHERXM_API_KEY="your_api_key_here" ``` **Run the local runner:** ```bash npm run runner ``` **Or run directly with tsx:** ```bash tsx src/runner.ts ``` ### Development Scripts - `npm run dev` - Start Smithery development server - `npm run dev:tsc` - Start development with TypeScript compiler - `npm run runner` - Run local server for testing - `npm run build` - Build with Smithery - `npm run build:tsc` - Build with TypeScript compiler - `npm run clean` - Clean build artifacts - `npm start` - Run built server - `npm run start:dev` - Run development server - `npm test` - Test server creation ### Configuration Files The repository includes example configuration files for MCP clients: - `mcp-config-example.json` - Standard configuration using the published npm package - `mcp-config-local-dev.json` - Local development configuration Copy and modify these files as needed for your MCP client setup. ## Available Tools ### 1. Get Current Weather (`get_current_weather`) Retrieves the latest weather observation from a specific WeatherXM station. **Parameters:** - `station_id` (string): WeatherXM station ID (e.g., "station_123" or "WXM123456") **Returns:** - Temperature (Fahrenheit and Celsius) - Feels like temperature - Weather conditions - Humidity percentage - Dew point - Wind speed and direction - Wind gust (if available) - Barometric pressure - UV index - Solar irradiance - Precipitation rate and accumulated precipitation - Data quality score ### 2. Get Hourly Forecast (`get_hourly_forecast`) Retrieves detailed hourly weather forecasts for a specific WeatherXM station. **Parameters:** - `station_id` (string): WeatherXM station ID - `hours` (number, optional): Number of hours to forecast (1-48, default: 48) **Returns:** - Hourly temperature predictions - Precipitation probability - Wind conditions - Humidity and pressure forecasts - UV index predictions ### 3. Get Daily Forecast (`get_daily_forecast`) Retrieves daily weather forecasts including high/low temperatures and precipitation. **Parameters:** - `station_id` (string): WeatherXM station ID - `days` (number, optional): Number of days to forecast (1-7, default: 7) **Returns:** - Daily high and low temperatures - Precipitation probability and type - Wind conditions - Humidity and pressure forecasts - UV index predictions ### 4. Get Historical Weather Data (`get_historical_weather`) Retrieves historical weather data for trend analysis and pattern recognition. **Parameters:** - `station_id` (string): WeatherXM station ID - `start_date` (string): Start date in ISO format (YYYY-MM-DD) - `end_date` (string): End date in ISO format (YYYY-MM-DD) **Returns:** - Historical temperature data - Precipitation records - Wind and pressure history - Summary statistics - Recent observations ### 5. Get Weather Alerts (`get_weather_alerts`) Retrieves active weather alerts and warnings for a specific location. **Parameters:** - `latitude` (number): Latitude in decimal degrees - `longitude` (number): Longitude in decimal degrees **Returns:** - Active weather alerts - Alert severity and type - Effective and expiration times - Affected areas - Alert descriptions ### 6. Find Weather Stations (`find_weather_stations`) Discovers WeatherXM stations near a specified location. **Parameters:** - `latitude` (number): Latitude in decimal degrees - `longitude` (number): Longitude in decimal degrees - `radius` (number, optional): Search radius in kilometers (default: 50, max: 100) **Returns:** - List of nearby stations with their details - Station names, IDs, and locations - Station creation dates - Cell index information ### 7. Search Weather Stations (`search_weather_stations`) Searches for WeatherXM stations by name or location description. **Parameters:** - `query` (string): Search query (station name, city, or location) - `page` (number, optional): Page number for pagination (default: 1) - `limit` (number, optional): Results per page (1-50, default: 10) **Returns:** - Matching stations with details - Total result count - Pagination information ### 8. Get Weather Cells (`get_weather_cells`) Retrieves WeatherXM weather cells (geographic areas) near a location. **Parameters:** - `latitude` (number): Latitude in decimal degrees - `longitude` (number): Longitude in decimal degrees - `radius` (number, optional): Search radius in kilometers (default: 50, max: 100) **Returns:** - Weather cell information - Cell center coordinates - Station count per cell - Network coverage details ### 9. Get Station Health (`get_station_health`) Assesses the data quality and reliability of a specific WeatherXM station. **Parameters:** - `station_id` (string): WeatherXM station ID **Returns:** - Data quality score (0-100%) - Location quality score and reason - Overall assessment of data reliability - Health check timestamp ### 10. Get Station Local Time (`get_station_local_time`) Gets the current local time at a station's location. **Parameters:** - `station_id` (string): WeatherXM station ID **Returns:** - Current local time at the station's location ## Usage Examples ### Example 1: Get Current Weather ``` What's the weather like at station WXM123456? ``` ### Example 2: Get Weather Forecast ``` What's the hourly forecast for station WXM789012 for the next 24 hours? ``` ### Example 3: Get Historical Data ``` Show me the weather data for station WXM345678 from January 1st to January 7th, 2024 ``` ### Example 4: Check Weather Alerts ``` Are there any weather alerts for New York City (40.7128, -74.0060)? ``` ### Example 5: Find Stations Near a Location ``` Find weather stations within 25km of New York City (40.7128, -74.0060) ``` ### Example 6: Search for Stations ``` Search for weather stations in "San Francisco" ``` ### Example 7: Check Station Data Quality ``` How reliable is the weather data from station station_789? ``` ### Example 8: Get Local Time ``` What time is it at station WXM456789? ``` ## Data Units The server provides weather data in the following units: - **Temperature**: Celsius (with Fahrenheit conversion) - **Wind Speed**: m/s (with mph conversion) - **Pressure**: hPa (with inHg conversion) - **Precipitation**: mm (with inches conversion) - **Solar Irradiance**: W/m² - **UV Index**: dimensionless - **Humidity**: percentage ## Error Handling The server handles various error conditions: - **401 Unauthorized**: Invalid API key - **404 Not Found**: Station not found or no data available - **429 Too Many Requests**: API rate limit exceeded - **500 Internal Server Error**: WeatherXM service temporarily unavailable - **Network Errors**: Connection issues ## Troubleshooting ### Common Error Messages **Error: "Invalid API key"** - Double-check your API key from pro.weatherxm.com - Ensure the API key is properly set in your environment **Error: "Station not found"** - Try searching for stations first: "Find weather stations near [your location]" - Use the station IDs returned by the search **Error: "API rate limit exceeded"** - Wait a few minutes before trying again - Consider upgrading your WeatherXM Pro plan **Error: "WeatherXM service temporarily unavailable"** - The WeatherXM service may be experiencing issues - Try again later ### Common Issues 1. **Missing API Key**: The server requires a valid WeatherXM Pro API key 2. **Invalid API Key**: Double-check the key from your WeatherXM Pro account 3. **Network Issues**: Ensure you have internet connectivity 4. **Rate Limiting**: You may have exceeded your API quota ## Development ### Running in Development Mode **Option A: Using Smithery (Default)** ```bash npm run dev ``` **Option B: Using TypeScript with tsx** ```bash npm run dev:tsc ``` **Note**: The `dev:tsc` command uses `tsx` for fast TypeScript execution without compilation. Use this for development if you prefer not to use Smithery. ### Building for Production ```bash npm run build ``` ## API Reference This server uses the WeatherXM Pro API. For detailed API documentation, visit: - [WeatherXM Pro API Documentation](https://pro.weatherxm.com/documentation) ### Key Endpoints Used - `GET /stations/{station_id}/latest` - Get latest observation - `GET /stations/{station_id}/forecast/hourly` - Get hourly forecast - `GET /stations/{station_id}/forecast/daily` - Get daily forecast - `GET /stations/{station_id}/historical` - Get historical data - `GET /alerts` - Get weather alerts - `GET /stations` - Find nearby stations - `GET /stations/search` - Search for stations - `GET /cells` - Get weather cells ## License ISC ## Contributing 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Add tests if applicable 5. Submit a pull request ## Support For issues related to: - **WeatherXM Pro API**: Contact WeatherXM support at pro.weatherxm.com - **MCP Server Issues**: Check the main README.md for more details - **Weather Data**: Check the data quality scores provided by the server - **Configuration Issues**: Review the Configuration and Troubleshooting sections above

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/oharkins/weatherxm-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server