@bryance/noaa-free-mcp
v1.0.7
Published
MCP Server for NOAA precipitation data with embedded Go binary
Maintainers
Readme
NOAA Free MCP Server
A Model Context Protocol (MCP) server that provides access to NOAA precipitation data through an embedded Go binary. This server allows AI assistants to retrieve and analyze daily and monthly precipitation data from the NOAA Climate Prediction Center.
Features
- Daily precipitation data with detailed statistics (mean, median, mode, quartiles, outliers)
- Monthly precipitation totals for any grid location
- Grid coordinate lookup - Find grid IDs by latitude/longitude coordinates
- Grid information - Get detailed geographic boundaries for any grid
- Grid validation - Validate grid IDs for CONUS coverage
- 13,626 valid grids across CONUS (Continental United States) at 0.25 degree resolution
- Historical data from 1947 to present
- High performance with optimized binary caching and concurrent data processing
- Real-time and historical data support
- Cross-platform support (Windows, macOS, Linux)
Installation
Global Installation (Recommended)
npm install -g @bryance/noaa-free-mcpLocal Installation
npm install @bryance/noaa-free-mcpConfiguration
Add the server to your MCP client configuration:
Claude Code
Add the server using the Claude Code CLI. Claude Code supports three different scopes for MCP servers:
Option 1: Local Scope (Default - Current Project Only)
If you installed globally:
claude mcp add noaa-free noaa-free-mcpIf you installed locally or want to use without global installation:
claude mcp add noaa-free npx @bryance/noaa-free-mcpThis adds the server with local scope (default), making it available only in the current project directory for the current user.
Option 2: User Scope (All Your Projects)
If you installed globally:
claude mcp add noaa-free -s user noaa-free-mcpIf you installed locally or want to use without global installation:
claude mcp add noaa-free -s user npx @bryance/noaa-free-mcpThis adds the server with user scope, making it available across all projects on your machine for your user account.
Option 3: Project Scope (Team Collaboration)
If you installed globally:
claude mcp add noaa-free -s project noaa-free-mcpIf you installed locally or want to use without global installation:
claude mcp add noaa-free -s project npx @bryance/noaa-free-mcpThis adds the server with project scope, creating a .mcp.json file in your project that can be committed to version control, making the server available to all team members working on the project.
Managing Your MCP Servers
# List all configured servers
claude mcp list
# Get details for a specific server
claude mcp get noaa-free
# Remove a server
claude mcp remove noaa-freeClaude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"noaa-free": {
"command": "noaa-free-mcp"
}
}
}Other MCP Clients
Use the command noaa-free-mcp or the full path to the installed binary.
Note: After installing the package @bryance/noaa-free-mcp, the executable is available as noaa-free-mcp (npm automatically strips the scope from executable names).
Usage
The server provides five main tools:
1. Get Daily Rain Data (get_daily_rain_for_month)
Retrieves daily precipitation measurements for a specific grid, year, and month with detailed statistics.
Parameters:
grid_id(1-36000, CONUS: 6196-34941): NOAA grid identifieryear(1947-present): Year for data requestmonth(1-12): Month for data request
Returns:
- Daily measurements for each day in the month
- Statistical analysis (mean, median, mode, quartiles, outliers)
- Data completeness indicators
2. Get Monthly Rain Total (get_monthly_rain_total)
Retrieves total precipitation for a specific grid, year, and month.
Parameters:
grid_id(1-36000, CONUS: 6196-34941): NOAA grid identifieryear(1947-present): Year for data requestmonth(1-12): Month for data request
Returns:
- Total precipitation for the month
- Last update timestamp
3. Find Grid by Coordinates (find_grid_by_coordinates)
Find the NOAA grid ID for given latitude and longitude coordinates.
Parameters:
latitude(20-50): Latitude in decimal degrees Northlongitude(-130 to -55): Longitude in decimal degrees West
Returns:
- Grid ID for the location
- Coordinate validation
- Usage instructions for precipitation tools
4. Get Grid Information (get_grid_info)
Get detailed geographic boundaries and information for a specific grid.
Parameters:
grid_id(1-36000): NOAA grid identifier
Returns:
- Geographic boundaries (min/max lat/lon)
- Center coordinates
- Grid resolution and coverage information
5. Validate Grid (validate_grid)
Validate that a grid ID is within the valid range for CONUS precipitation data.
Parameters:
grid_id: Grid ID to validate
Returns:
- Validation status
- Valid range information
- Coverage details
Performance Optimizations
This MCP server includes several performance optimizations for fast data retrieval:
Binary Caching
- Go binaries are extracted once to a persistent
.cachedirectory - No repeated extraction overhead on subsequent requests
- Platform-specific binaries embedded as base64 for distribution
Memory Optimization
- Targeted grid filtering creates only necessary objects
- ~36x reduction in memory usage (1 vs 36,000 objects per request)
- Eliminates O(n) filtering loops after data creation
Concurrent Processing
- Daily and monthly requests use Go goroutines for parallel data fetching
- Multiple days processed simultaneously for faster month-level aggregations
- Retry logic with exponential backoff for network reliability
Fast Grid Lookups
- Binary Math Search algorithm for coordinate-to-grid lookups
- O(log N) performance vs previous O(n) implementations
- ~35x faster grid coordinate resolution
