Weather App
БесплатноНе проверенAn MCP server that provides current weather, hourly and 7-day forecasts, and air quality data for any city or zip code, with an interactive React UI and support
Описание
An MCP server that provides current weather, hourly and 7-day forecasts, and air quality data for any city or zip code, with an interactive React UI and support for both stdio and HTTP transports.
README
A Model Context Protocol (MCP) server with an interactive React UI for fetching weather data. Works with Claude Desktop, ChatGPT, and any MCP-compatible client.
Features
- Current Weather - Real-time temperature, feels-like, humidity, wind speed/direction
- Hourly Forecast - 24-hour forecast with weather icons
- 7-Day Forecast - Daily high/low temperatures and conditions
- Air Quality - US AQI, PM2.5, PM10, and ozone levels
- Unit Toggle - Switch between Celsius and Fahrenheit
- Dual Transport - Works with stdio (Claude Desktop) and HTTP (ChatGPT)
- Rate Limiting - 100/hour, 1000/day, 30000/month
Installation
# Clone the repository
git clone <repository-url>
cd weather-mcp-app
# Install dependencies
npm install
# Build the project
npm run build
Quick Start
Claude Desktop (Stdio)
# Run with stdio transport
npm run start:stdio
ChatGPT (HTTP)
# Run HTTP server (listens on http://localhost:3001/mcp)
npm run start
# Or in development with hot reload
npm run dev
Configuration
Claude Desktop
Add to your Claude Desktop settings (~/Library/Application Support/Claude/settings.json):
{
"mcpServers": {
"weather-mcp-app": {
"command": "npx",
"args": ["-y", "weather-mcp-app", "--stdio"]
}
}
}
Or if running locally:
{
"mcpServers": {
"weather-mcp-app": {
"command": "node",
"args": ["path/to/weather-mcp-app/dist/main.js", "--stdio"]
}
}
}
ChatGPT
Use the HTTP endpoint: http://localhost:3001/mcp
Usage
Tool: get_weather
name: get_weather
description: Get current weather, hourly forecast, 7-day forecast, and air quality for a city name or zip code.
Input Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
location |
string | Yes | City name (e.g., "London") or zip code (e.g., "10001,US") |
unit |
string | No | "celsius" or "fahrenheit" (default: "celsius") |
Example Request
{
"name": "get_weather",
"arguments": {
"location": "San Francisco, CA",
"unit": "celsius"
}
}
Example Response
{
"content": [
{
"type": "text",
"text": "Weather in San Francisco:\nMainly clear, 18°C\nFeels like 17°C\nHumidity: 65%\nWind: WNW 15 km/h\nAir Quality: Good (AQI: 35)\n\nHourly Forecast:\nNow: 18°C ☀️\n1PM: 19°C 🌤️\n...\n\n7-Day Forecast:\nToday: 15° - 20°, Mainly clear\nTue: 14° - 19°, Partly cloudy\n..."
}
],
"structuredContent": {
"current": { ... },
"hourly": [ ... ],
"daily": [ ... ],
"location": { ... },
"airQuality": { ... }
}
}
Project Structure
weather-mcp-app/
├── src/
│ ├── api/
│ │ └── weather-client.ts # Open-Meteo API client
│ ├── constants/
│ │ └── weather.ts # Weather codes & utilities
│ ├── handlers/
│ │ └── weather-handler.ts # MCP tool handler
│ ├── services/
│ │ └── weather-formatter.ts # Text formatting
│ ├── types/
│ │ └── weather.ts # Zod schemas & types
│ ├── errors/
│ │ └── index.ts # Custom errors
│ ├── utils/
│ │ └── logger.ts # Logging utilities
│ ├── components/ui/ # shadcn/ui components
│ ├── App.tsx # Main React UI
│ ├── server.ts # MCP server setup
│ ├── main.ts # Entry point
│ └── config.ts # Configuration
├── dist/ # Built output
│ ├── main.js # Compiled server
│ └── mcp-app.html # Compiled UI
├── package.json
├── tsconfig.json
├── vite.config.ts
└── README.md
Environment Variables
| Variable | Description | Default |
|---|---|---|
PORT |
HTTP server port | 3001 |
NODE_ENV |
Environment mode | development |
ALLOWED_ORIGINS |
CORS origins (production) | - |
Development Commands
# Build the project
npm run build
# Build server only
npm run build:server
# Run with stdio transport
npm run start:stdio
# Run with HTTP server
npm run start
# Development mode with watch
npm run dev
# Type checking
npm run typecheck
# Run tests
npm run test
# Run unit tests
npm run test:unit
# Run e2e tests
npm run test:e2e
API Reference
Uses free Open-Meteo APIs (no API key required):
- Geocoding:
https://geocoding-api.open-meteo.com/v1/search - Weather:
https://api.open-meteo.com/v1/forecast - Air Quality:
https://air-quality-api.open-meteo.com/v1/air-quality
Security
- HSTS headers enabled in production
- CORS restricted to localhost in development
- Request body limit: 10KB
- Input validation with Zod schemas
- Rate limiting on all requests
- Structured logging with Pino
Changelog
See CHANGELOG.md for detailed changes.
Acknowledgments
- Open-Meteo API - Free weather and air quality data API. This project uses their Geocoding, Weather Forecast, and Air Quality APIs.
- MCP Apps SDK - For enabling interactive UI capabilities in MCP servers.
- shadcn/ui - For the beautiful and accessible React components.
- Lucide - For the icon library.
License
MIT
Установка Weather App
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/amrahman90/weather-mcp-appFAQ
Weather App MCP бесплатный?
Да, Weather App MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Weather App?
Нет, Weather App работает без API-ключей и переменных окружения.
Weather App — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Weather App в Claude Desktop, Claude Code или Cursor?
Открой Weather App на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Weather App with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
