mcp-weather
by Kaushik2105
README.md
# š¤ļø Kaushik's Weather MCP Server
[](https://www.typescriptlang.org/)
[](https://modelcontextprotocol.io/)
[](https://nodejs.org/)
[](./TESTING.md)
[](https://claude.ai/share/b1029a6b-545e-4f19-9fe5-11ba489192b5)
[](https://opensource.org/licenses/ISC)
A production-ready **Model Context Protocol (MCP)** server built in TypeScript, connecting LLMs (such as Claude Desktop, Cursor, and custom AI agents) to real-time National Weather Service (NWS / NOAA) meteorological data.
---
## š Live Proof of Integration
> š **Verified Working with Claude Desktop**: Check out the live chat session demonstrating real-time forecast retrieval, alerts, and health diagnostics:
> š **[View Live Claude AI Chat Proof](https://claude.ai/share/b1029a6b-545e-4f19-9fe5-11ba489192b5)**
---
## ⨠Architectural Highlights
- šļø **Modular Clean Architecture**: Decoupled into dedicated service layers (`CacheService`, `RateLimiterService`, `NwsClient`, `Logger`, `Formatter`).
- š” **Official Meteorological Bulletins**: Structured weather reports with standardized metadata and provider attribution.
- ā” **In-Memory Caching (5-Min TTL)**: Thread-safe in-memory cache reducing upstream API traffic by up to 80%.
- š”ļø **Zero-Vibe Security Layer**: Strict input sanitization, XSS entity escaping, and client-isolated rate limiting (100 req/min).
- š **Resilience & Fault Tolerance**: Automated exponential backoff retries for HTTP `5xx` / `429` errors and request timeout guards.
- 𩺠**Observability & Diagnostics**: Built-in `health_check`, `get_metrics`, and `clear_cache` tools with structured JSON logging.
---
## š Project Structure
```
weather/
āāā src/
ā āāā config/ # Central configuration & runtime constants
ā āāā services/ # Core business logic (Cache, RateLimiter, NwsClient, Formatter, Logger)
ā āāā tools/ # MCP Tool handlers (alerts, forecast, diagnostics)
ā āāā types/ # Strongly typed TypeScript interfaces
ā āāā utils/ # Input sanitization and security helpers
ā āāā index.ts # Server bootstrap, transport initialization & graceful shutdown
āāā tests/
ā āāā unit/ # Unit test suites (utils, sanitizer, cache)
ā āāā integration/ # Upstream NWS API integration & retry tests
ā āāā performance/ # Cache throughput & rate-limiting load tests
ā āāā security/ # XSS, injection prevention & boundary tests
ā āāā basic.test.ts # Comprehensive test runner
āāā build/ # Compiled ES module JavaScript distribution
āāā package.json
āāā tsconfig.json
```
---
## š ļø MCP Tools
| Tool | Parameters | Description |
| :--- | :--- | :--- |
| `get_forecast` | `latitude` (number), `longitude` (number) | Retrieves real-time period forecasts (temperatures, winds, conditions) for US coordinates. |
| `get_alerts` | `state` (2-letter US code, e.g. `CA`, `NY`, `TX`) | Fetches active severe weather alerts, warnings, and meteorological advisories. |
| `health_check` | *None* | Returns runtime health, uptime, heap memory usage, cache size, and API connection status. |
| `get_metrics` | *None* | Outputs performance diagnostics and active rate-limit client buckets. |
| `clear_cache` | *None* | Flushes the in-memory cache and returns the number of purged entries. |
---
## š Getting Started
### 1. Clone & Install
```bash
git clone https://github.com/Kaushik2105/mcp-weather.git
cd mcp-weather
npm install
```
### 2. Build
```bash
npm run build
```
### 3. Run Test Suite
```bash
npm test
```
---
## š Connecting to Claude Desktop
Add this configuration to your Claude Desktop configuration file:
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"kaushik-weather": {
"command": "node",
"args": [
"c:/Workholic/LawSikho/POCs/weather/weather/build/index.js"
]
}
}
}
```
> **Note**: Restart Claude Desktop after saving the configuration.
---
## š¬ Sample Prompts for Claude
- *"Show me the official forecast bulletin from Kaushik's weather tool for Los Angeles (Lat: 34.0522, Lon: -118.2437)"*
- *"Are there any active weather alerts for Florida (FL)?"*
- *"Run a health check diagnostic on Kaushik's weather MCP server."*
---
## šØāš» Author
**Kaushik Karmakar**
- GitHub: [@Kaushik2105](https://github.com/Kaushik2105)
- Live Integration Proof: [Claude AI Chat](https://claude.ai/share/b1029a6b-545e-4f19-9fe5-11ba489192b5)
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues