Skip to main content
Glama
README.md7.5 kB
# USGS Water MCP [![smithery badge](https://smithery.ai/badge/@pgiffy/usgs-water-mcp)](https://smithery.ai/server/@pgiffy/usgs-water-mcp) ## Overview This MCP server provides comprehensive access to USGS water data through three APIs: 1. **USGS Water Services API** - Real-time water measurements (stream flow, gage height, temperature, etc.) 2. **Real-Time Flood Impacts API** - Current flooding conditions and reference points 3. **OGC API** - Monitoring location metadata, agency codes, and geological information The server is modularly designed with separate API handlers unified through a single entry point. ## Project Structure ``` usgs-water-mcp/ ├── main.py # Unified entry point ├── water_data_api.py # USGS Water Services API tools ├── flood_impact_api.py # Real-Time Flood Impacts API tools ├── ogc_api.py # OGC API tools ├── current_water_levels.py # Legacy combined file (deprecated) ├── Dockerfile # Docker configuration ├── pyproject.toml # Project dependencies └── README.md # This file ``` ## Service If you want a clean web interface that utilizes these tools visit https://aqua-node.onrender.com/landing and help me do some testing! ## Sample Output Here's an example of fetching stream flow data for the Potomac River: ```json { "name": "USGS:01646500:00060:00000", "sourceInfo": { "siteName": "POTOMAC RIVER NEAR WASHINGTON, DC", "siteCode": [ { "value": "01646500", "network": "NWIS", "agencyCode": "USGS" } ] }, "variable": { "variableCode": [ { "value": "00060", "network": "NWIS", "vocabulary": "NWIS:UnitValues", "variableName": "Streamflow, ft�/s", "variableDescription": "Discharge, cubic feet per second" } ] }, "values": [ { "value": [ { "value": "6420", "qualifiers": ["A"], "dateTime": "2023-10-01T12:00:00.000" } ] } ] } ``` ## Installation ### Installing via pip ```bash pip install -e . ``` ### Manual Installation 1. Clone this repository 2. Install dependencies: ```bash pip install httpx mcp ``` ## Connecting with Claude Desktop 1. Edit your Claude Desktop configuration file: - **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` - **Windows**: `%APPDATA%/Claude/claude_desktop_config.json` 2. Add the server configuration: ```json { "mcpServers": { "usgs-water": { "command": "python", "args": ["/path/to/usgs-water-mcp/main.py"] } } } ``` 3. Restart Claude Desktop ## Available Tools ### Water Data Tools #### fetch_usgs_data Fetch instantaneous water data from USGS monitoring stations. **Parameters:** - `sites` (required): Comma-separated site numbers (e.g., "01646500" or "01646500,01647000") - `parameter_codes` (optional): Comma-separated parameter codes (e.g., "00060,00065") - `start_date` (optional): Start date in ISO format (YYYY-MM-DD or YYYY-MM-DDTHH:MM) - `end_date` (optional): End date in ISO format - `period` (optional): Period code (e.g., "P7D" for 7 days) **Common Parameter Codes:** - `00060`: Discharge (stream flow) - `00065`: Gage height - `00010`: Temperature, water - `00300`: Dissolved oxygen - `00400`: pH **Example Usage:** ``` Get current stream flow for the Potomac River near Washington, DC: sites: "01646500" parameter_codes: "00060" ``` ### Real-Time Flood Impact Tools #### get_flooding_reference_points Get currently flooding reference points (updated every 30 minutes). #### get_reference_points Get paginated list of reference points. **Parameters:** - `page` (optional): Page number (default: 1) - `limit` (optional): Number of results per page (default: 100) #### get_reference_point_by_id Get specific reference point by ID. **Parameters:** - `reference_point_id` (required): The reference point ID #### get_reference_points_by_state Get reference points for a specific state. **Parameters:** - `state_id` (required): State ID (e.g., "CA", "TX") #### get_reference_point_by_nwis_id Get reference point by USGS gage ID. **Parameters:** - `nwis_id` (required): USGS National Water Information System site ID #### get_reference_points_by_nws_id Get reference points by National Weather Service ID. **Parameters:** - `nws_id` (required): National Weather Service location ID #### get_inactive_reference_points Get inactive reference points. #### get_states Get list of states. #### get_state_by_id Get specific state information. **Parameters:** - `state_id` (required): State ID (e.g., "CA", "TX") #### get_counties Get list of counties. #### get_counties_by_state Get counties for a specific state. **Parameters:** - `state_id` (required): State ID (e.g., "CA", "TX") #### get_nws_usgs_crosswalk Get NWS/USGS crosswalk data. ### OGC API Tools #### get_monitoring_locations Get monitoring locations with extensive filtering options. **Parameters:** - `bbox` (optional): Bounding box as "minx,miny,maxx,maxy" - `limit` (optional): Maximum number of results (default: 100) - `offset` (optional): Starting offset for pagination (default: 0) - `agency_code` (optional): Filter by agency code (e.g., "USGS") - `state_code` (optional): Filter by state code (e.g., "CA") - `county_code` (optional): Filter by county code - `site_type_code` (optional): Filter by site type code - `monitoring_location_number` (optional): Specific monitoring location number #### get_monitoring_location_by_id Get specific monitoring location by ID. **Parameters:** - `location_id` (required): The monitoring location ID #### get_agency_codes Get agency identification codes. **Parameters:** - `limit` (optional): Maximum number of results (default: 100) - `offset` (optional): Starting offset for pagination (default: 0) #### get_altitude_datums Get vertical datum information (recommended: NAVD88). **Parameters:** - `limit` (optional): Maximum number of results (default: 100) - `offset` (optional): Starting offset for pagination (default: 0) #### get_aquifer_codes Get aquifer identification information. **Parameters:** - `limit` (optional): Maximum number of results (default: 100) - `offset` (optional): Starting offset for pagination (default: 0) #### get_aquifer_types Get aquifer type information (confined vs unconfined). **Parameters:** - `limit` (optional): Maximum number of results (default: 100) - `offset` (optional): Starting offset for pagination (default: 0) #### get_coordinate_accuracy_codes Get coordinate accuracy codes for latitude-longitude values. **Parameters:** - `limit` (optional): Maximum number of results (default: 100) - `offset` (optional): Starting offset for pagination (default: 0) ## Troubleshooting ### Common Issues 1. **API Connection Errors**: Ensure you have an active internet connection and the USGS API is accessible 2. **Invalid Site Numbers**: Verify site numbers exist using the USGS Water Data for the Nation website 3. **No Data Available**: Some sites may not have data for the requested time period or parameters 4. **Rate Limiting**: The USGS API has usage limits; avoid making too many requests in quick succession ### Finding Site Numbers Use the [USGS Water Data for the Nation](https://waterdata.usgs.gov/nwis) website to find monitoring station site numbers in your area of interest.

Latest Blog Posts

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/pgiffy/usgs-water-mcp'

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