{"_id":"@bryance/noaa-free-mcp","_rev":"10-6ba20a3eaf37746832a51de83b566837","name":"@bryance/noaa-free-mcp","dist-tags":{"latest":"1.0.7"},"versions":{"1.0.3":{"name":"@bryance/noaa-free-mcp","version":"1.0.3","keywords":["mcp","noaa-free","precipitation","noaa","weather","model-context-protocol"],"_id":"@bryance/noaa-free-mcp@1.0.3","maintainers":[{"name":"bryance","email":"bryanedman86@gmail.com"}],"os":["darwin","linux","win32"],"bin":{"noaa-free-mcp":"dist/index.js"},"dist":{"shasum":"0c8ab69e5e9387d469757f1bfd5dd4824bbc5485","tarball":"https://registry.npmjs.org/@bryance/noaa-free-mcp/-/noaa-free-mcp-1.0.3.tgz","fileCount":3,"integrity":"sha512-woqF3XrSDqHIoNuHeU7vr1XTmVWI/SwjZZoLcY5m0B7VfWiXYMIVBkkBljbGigcbi78436D5ee5WD3rS/MqkOg==","signatures":[{"sig":"MEQCIFWrdyyDO0fgA+3fkzaNe+V0K71a7rEUaC2M+PtV+PT1AiA1vQgGXINr54Tmxu3lGhCOaYhyYAgKqunE4xp0pnpibg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30150219},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"957061251d2449efcc6c0cf4ca349e23bf284c4b","scripts":{"dev":"bun run dist/index.js","build":"bun scripts/build.js","clean":"bun x rimraf dist go-src/bin src/binaries.ts","start":"node dist/index.js","inspect":"mcp-inspector node dist/index.js","prepare":"bun run build","build:go":"bun scripts/build.js","build:ts":"bun build src/index.ts --outdir dist --target node --external @modelcontextprotocol/sdk","embed:binaries":"bun scripts/embed-binaries.js"},"_npmUser":{"name":"bryance","email":"bryanedman86@gmail.com"},"_npmVersion":"11.4.2","description":"MCP Server for NOAA precipitation data with embedded Go binary","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.22.0","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","bun-types":"latest","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/noaa-free-mcp_1.0.3_1754114580573_0.10564203161477903","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@bryance/noaa-free-mcp","version":"1.0.4","keywords":["mcp","noaa-free","precipitation","noaa","weather","model-context-protocol"],"_id":"@bryance/noaa-free-mcp@1.0.4","maintainers":[{"name":"bryance","email":"bryanedman86@gmail.com"}],"os":["darwin","linux","win32"],"bin":{"noaa-free-mcp":"dist/index.js"},"dist":{"shasum":"5cb902dc6ddccff30edfeeaaf24048025fbc58fa","tarball":"https://registry.npmjs.org/@bryance/noaa-free-mcp/-/noaa-free-mcp-1.0.4.tgz","fileCount":3,"integrity":"sha512-9uM4SZsbjkVptizb677Cc1okk+G7n3+Iye7bPu5UV8VEXS7foWzIGciPJGDJnr8tA8c88MqRANr/+gURoMS6XA==","signatures":[{"sig":"MEUCIC1pBmiVNUvhE9LrLRPguOBO1otQqus4snXsGY7grfM4AiEA+w+mR89bKDc96sYv94MafK53vHntbnmPSqSzHDZPUe0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30149891},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"e7446012267c628daa894a1e21f610f2685c2ee4","scripts":{"dev":"bun run dist/index.js","build":"bun scripts/build.js","clean":"bun x rimraf dist go-src/bin src/binaries.ts","start":"node dist/index.js","inspect":"mcp-inspector node dist/index.js","prepare":"bun run build","build:go":"bun scripts/build.js","build:ts":"bun build src/index.ts --outdir dist --target node --external @modelcontextprotocol/sdk","embed:binaries":"bun scripts/embed-binaries.js"},"_npmUser":{"name":"bryance","email":"bryanedman86@gmail.com"},"_npmVersion":"11.4.2","description":"MCP Server for NOAA precipitation data with embedded Go binary","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.22.0","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","bun-types":"latest","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/noaa-free-mcp_1.0.4_1754164217440_0.6326943993120153","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bryance/noaa-free-mcp","version":"1.0.5","keywords":["mcp","noaa-free","precipitation","noaa","weather","model-context-protocol"],"_id":"@bryance/noaa-free-mcp@1.0.5","maintainers":[{"name":"bryance","email":"bryanedman86@gmail.com"}],"os":["darwin","linux","win32"],"bin":{"noaa-free-mcp":"dist/index.js"},"dist":{"shasum":"7dcb8589b4fcb497b8558560471fa9be87c8ea03","tarball":"https://registry.npmjs.org/@bryance/noaa-free-mcp/-/noaa-free-mcp-1.0.5.tgz","fileCount":3,"integrity":"sha512-d6aoJlkkPOvabKW5NbytW90qztCYXK/kPAw8JuLIY3Uqfwx8trXoNkmRugwFVeBRauaYTv5j4AYWuM27mJ993A==","signatures":[{"sig":"MEYCIQCjNOwzSZqOhg84rrPqCSoNQvEUOGB4XnSJkOa8JUdkWQIhAL+NdbSrH9fBiCj669ZIeQF87oaV6z0s9GATBYKCOoJQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30150039},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"e7446012267c628daa894a1e21f610f2685c2ee4","scripts":{"dev":"bun run dist/index.js","build":"bun scripts/build.js","clean":"bun x rimraf dist go-src/bin src/binaries.ts","start":"node dist/index.js","inspect":"mcp-inspector node dist/index.js","prepare":"bun run build","build:go":"bun scripts/build.js","build:ts":"bun build src/index.ts --outdir dist --target node --external @modelcontextprotocol/sdk","embed:binaries":"bun scripts/embed-binaries.js"},"_npmUser":{"name":"bryance","email":"bryanedman86@gmail.com"},"_npmVersion":"11.4.2","description":"MCP Server for NOAA precipitation data with embedded Go binary","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.22.0","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","bun-types":"latest","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/noaa-free-mcp_1.0.5_1754710831172_0.969121931567198","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bryance/noaa-free-mcp","version":"1.0.6","keywords":["mcp","noaa-free","precipitation","noaa","weather","model-context-protocol"],"_id":"@bryance/noaa-free-mcp@1.0.6","maintainers":[{"name":"bryance","email":"bryanedman86@gmail.com"}],"os":["darwin","linux","win32"],"bin":{"noaa-free-mcp":"dist/index.js"},"dist":{"shasum":"15fb612dd3b2e6f800ae317015e43439b3f13931","tarball":"https://registry.npmjs.org/@bryance/noaa-free-mcp/-/noaa-free-mcp-1.0.6.tgz","fileCount":3,"integrity":"sha512-Rswe80SIMvPQW9/JxhQen2H6lbs7VipCBAe2PhOe8j0sHztfEwgJDcyylsSpIESAYed381PCUd9djO2ay1mnkQ==","signatures":[{"sig":"MEQCIG0YFoE1JsSKfior7kfd3VhX7RYmEGcZxLeuYuiyjs3HAiAVMknCLbCHGkq9HASX6YhqTA4/6r0G64ZOFtLzSicb/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30149043},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"gitHead":"68108108d6d59a1f1f79226faecac479da0809b7","scripts":{"dev":"bun run dist/index.js","build":"bun scripts/build.js","clean":"bun x rimraf dist go-src/bin src/binaries.ts","start":"node dist/index.js","inspect":"mcp-inspector node dist/index.js","prepare":"bun run build","build:go":"bun scripts/build.js","build:ts":"bun build src/index.ts --outdir dist --target node --external @modelcontextprotocol/sdk","embed:binaries":"bun scripts/embed-binaries.js"},"_npmUser":{"name":"bryance","email":"bryanedman86@gmail.com"},"_npmVersion":"11.4.2","description":"MCP Server for NOAA precipitation data with embedded Go binary","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"^3.22.0","@modelcontextprotocol/sdk":"^0.5.0"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^5.0.0","bun-types":"latest","typescript":"^5.0.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/noaa-free-mcp_1.0.6_1754711847826_0.00436102716216924","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@bryance/noaa-free-mcp","version":"1.0.7","description":"MCP Server for NOAA precipitation data with embedded Go binary","main":"dist/index.js","type":"module","bin":{"noaa-free-mcp":"dist/index.js"},"scripts":{"build:go":"bun scripts/build.js","embed:binaries":"bun scripts/embed-binaries.js","build:ts":"bun build src/index.ts --outdir dist --target node --external @modelcontextprotocol/sdk","build":"bun scripts/build.js","dev":"bun run dist/index.js","start":"node dist/index.js","clean":"bun x rimraf dist go-src/bin src/binaries.ts","prepare":"bun run build","inspect":"mcp-inspector node dist/index.js","test":"cd go-src && go test ./tests/... ./grid/...","test:verbose":"cd go-src && go test -v ./tests/... ./grid/...","test:lookup":"cd go-src && go test -v ./tests/lookup_test.go","test:grid-tools":"cd go-src && go test -v ./tests/coordinate_grid_test.go","test:bands":"cd go-src && go test -v ./grid -run TestBandSizeComparison","test:simple":"cd go-src && go test -v ./tests/simple_test.go"},"dependencies":{"@modelcontextprotocol/sdk":"^0.5.0","zod":"^3.22.0"},"devDependencies":{"bun-types":"latest","@types/node":"^20.0.0","typescript":"^5.0.0","rimraf":"^5.0.0"},"os":["darwin","linux","win32"],"engines":{"node":">=18.0.0"},"keywords":["mcp","noaa-free","precipitation","noaa","weather","model-context-protocol"],"_id":"@bryance/noaa-free-mcp@1.0.7","gitHead":"2b9ae89bdb2d06c5f07356a49153e0dbf0511126","_nodeVersion":"22.17.0","_npmVersion":"11.4.2","dist":{"integrity":"sha512-pI5VHfFLK9Ch2po7yKhLxt0b0MwaDKAjPG0U4PSIRBaPX+bkuEI4blLVvPqicvqUzrR3tqWHW5QuhQ67MIwsog==","shasum":"c0aac25754e55f6699f96fa70e86523698782cb9","tarball":"https://registry.npmjs.org/@bryance/noaa-free-mcp/-/noaa-free-mcp-1.0.7.tgz","fileCount":4,"unpackedSize":31095791,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC/d4SHLntyoG/3lPp3qInhzsvA7cIGBLjvlgGECSsD9QIgAj8nqID2HfpeX08+TW05CFdEXXuwtGFI78yc+Hkza7g="}]},"_npmUser":{"name":"bryance","email":"bryanedman86@gmail.com"},"directories":{},"maintainers":[{"name":"bryance","email":"bryanedman86@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/noaa-free-mcp_1.0.7_1755061728413_0.07224630788921571"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-02T06:03:00.499Z","modified":"2025-08-13T05:08:48.990Z","1.0.0":"2025-08-02T02:55:47.385Z","1.0.1":"2025-08-02T03:01:08.403Z","1.0.2":"2025-08-02T03:06:29.531Z","1.0.3":"2025-08-02T06:03:00.942Z","1.0.4":"2025-08-02T19:50:17.860Z","1.0.5":"2025-08-09T03:40:31.542Z","1.0.6":"2025-08-09T03:57:28.216Z","1.0.7":"2025-08-13T05:08:48.788Z"},"keywords":["mcp","noaa-free","precipitation","noaa","weather","model-context-protocol"],"description":"MCP Server for NOAA precipitation data with embedded Go binary","maintainers":[{"name":"bryance","email":"bryanedman86@gmail.com"}],"readme":"# NOAA Free MCP Server\r\n\r\nA 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.\r\n\r\n## Features\r\n\r\n- **Daily precipitation data** with detailed statistics (mean, median, mode, quartiles, outliers)\r\n- **Monthly precipitation totals** for any grid location\r\n- **Grid coordinate lookup** - Find grid IDs by latitude/longitude coordinates\r\n- **Grid information** - Get detailed geographic boundaries for any grid\r\n- **Grid validation** - Validate grid IDs for CONUS coverage\r\n- **13,626 valid grids** across CONUS (Continental United States) at 0.25 degree resolution\r\n- **Historical data** from 1947 to present\r\n- **High performance** with optimized binary caching and concurrent data processing\r\n- **Real-time and historical** data support\r\n- **Cross-platform** support (Windows, macOS, Linux)\r\n\r\n## Installation\r\n\r\n### Global Installation (Recommended)\r\n\r\n```bash\r\nnpm install -g @bryance/noaa-free-mcp\r\n```\r\n\r\n### Local Installation\r\n\r\n```bash\r\nnpm install @bryance/noaa-free-mcp\r\n```\r\n\r\n## Configuration\r\n\r\nAdd the server to your MCP client configuration:\r\n\r\n### Claude Code\r\n\r\nAdd the server using the Claude Code CLI. Claude Code supports three different scopes for MCP servers:\r\n\r\n#### Option 1: Local Scope (Default - Current Project Only)\r\n**If you installed globally:**\r\n```bash\r\nclaude mcp add noaa-free noaa-free-mcp\r\n```\r\n\r\n**If you installed locally or want to use without global installation:**\r\n```bash\r\nclaude mcp add noaa-free npx @bryance/noaa-free-mcp\r\n```\r\n\r\nThis adds the server with **local scope** (default), making it available only in the current project directory for the current user.\r\n\r\n#### Option 2: User Scope (All Your Projects)\r\n**If you installed globally:**\r\n```bash\r\nclaude mcp add noaa-free -s user noaa-free-mcp\r\n```\r\n\r\n**If you installed locally or want to use without global installation:**\r\n```bash\r\nclaude mcp add noaa-free -s user npx @bryance/noaa-free-mcp\r\n```\r\n\r\nThis adds the server with **user scope**, making it available across all projects on your machine for your user account.\r\n\r\n#### Option 3: Project Scope (Team Collaboration)\r\n**If you installed globally:**\r\n```bash\r\nclaude mcp add noaa-free -s project noaa-free-mcp\r\n```\r\n\r\n**If you installed locally or want to use without global installation:**\r\n```bash\r\nclaude mcp add noaa-free -s project npx @bryance/noaa-free-mcp\r\n```\r\n\r\nThis 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.\r\n\r\n#### Managing Your MCP Servers\r\n```bash\r\n# List all configured servers\r\nclaude mcp list\r\n\r\n# Get details for a specific server\r\nclaude mcp get noaa-free\r\n\r\n# Remove a server\r\nclaude mcp remove noaa-free\r\n```\r\n\r\n### Claude Desktop\r\n\r\nAdd to your `claude_desktop_config.json`:\r\n\r\n```json\r\n{\r\n  \"mcpServers\": {\r\n    \"noaa-free\": {\r\n      \"command\": \"noaa-free-mcp\"\r\n    }\r\n  }\r\n}\r\n```\r\n\r\n### Other MCP Clients\r\n\r\nUse the command `noaa-free-mcp` or the full path to the installed binary.\r\n\r\n**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).\r\n\r\n## Usage\r\n\r\nThe server provides five main tools:\r\n\r\n### 1. Get Daily Rain Data (`get_daily_rain_for_month`)\r\n\r\nRetrieves daily precipitation measurements for a specific grid, year, and month with detailed statistics.\r\n\r\n**Parameters:**\r\n- `grid_id` (1-36000, CONUS: 6196-34941): NOAA grid identifier\r\n- `year` (1947-present): Year for data request\r\n- `month` (1-12): Month for data request\r\n\r\n**Returns:**\r\n- Daily measurements for each day in the month\r\n- Statistical analysis (mean, median, mode, quartiles, outliers)\r\n- Data completeness indicators\r\n\r\n### 2. Get Monthly Rain Total (`get_monthly_rain_total`)\r\n\r\nRetrieves total precipitation for a specific grid, year, and month.\r\n\r\n**Parameters:**\r\n- `grid_id` (1-36000, CONUS: 6196-34941): NOAA grid identifier\r\n- `year` (1947-present): Year for data request\r\n- `month` (1-12): Month for data request\r\n\r\n**Returns:**\r\n- Total precipitation for the month\r\n- Last update timestamp\r\n\r\n### 3. Find Grid by Coordinates (`find_grid_by_coordinates`)\r\n\r\nFind the NOAA grid ID for given latitude and longitude coordinates.\r\n\r\n**Parameters:**\r\n- `latitude` (20-50): Latitude in decimal degrees North\r\n- `longitude` (-130 to -55): Longitude in decimal degrees West\r\n\r\n**Returns:**\r\n- Grid ID for the location\r\n- Coordinate validation\r\n- Usage instructions for precipitation tools\r\n\r\n### 4. Get Grid Information (`get_grid_info`)\r\n\r\nGet detailed geographic boundaries and information for a specific grid.\r\n\r\n**Parameters:**\r\n- `grid_id` (1-36000): NOAA grid identifier\r\n\r\n**Returns:**\r\n- Geographic boundaries (min/max lat/lon)\r\n- Center coordinates\r\n- Grid resolution and coverage information\r\n\r\n### 5. Validate Grid (`validate_grid`)\r\n\r\nValidate that a grid ID is within the valid range for CONUS precipitation data.\r\n\r\n**Parameters:**\r\n- `grid_id`: Grid ID to validate\r\n\r\n**Returns:**\r\n- Validation status\r\n- Valid range information\r\n- Coverage details\r\n\r\n## Performance Optimizations\r\n\r\nThis MCP server includes several performance optimizations for fast data retrieval:\r\n\r\n### Binary Caching\r\n- Go binaries are extracted once to a persistent `.cache` directory\r\n- No repeated extraction overhead on subsequent requests\r\n- Platform-specific binaries embedded as base64 for distribution\r\n\r\n### Memory Optimization\r\n- Targeted grid filtering creates only necessary objects\r\n- ~36x reduction in memory usage (1 vs 36,000 objects per request)\r\n- Eliminates O(n) filtering loops after data creation\r\n\r\n### Concurrent Processing\r\n- Daily and monthly requests use Go goroutines for parallel data fetching\r\n- Multiple days processed simultaneously for faster month-level aggregations\r\n- Retry logic with exponential backoff for network reliability\r\n\r\n### Fast Grid Lookups\r\n- Binary Math Search algorithm for coordinate-to-grid lookups\r\n- O(log N) performance vs previous O(n) implementations\r\n- ~35x faster grid coordinate resolution\r\n","readmeFilename":"README.md"}