OpenWeatherMap MCP Server

OpenWeatherMap MCP Server

Provides weather data, forecasts, air quality, and location services via OpenWeatherMap API integration.

Category
访问服务器

README

OpenWeatherMap MCP Server

A comprehensive Model Context Protocol (MCP) server for OpenWeatherMap API integration, providing weather data, forecasts, air quality information, and location services.

Features

  • 🌤️ Current Weather - Real-time weather data for any location
  • 📅 5-Day Forecast - Detailed weather predictions with 3-hour intervals
  • 🌍 Location Search - Find coordinates for any city name
  • 📮 ZIP Code Support - Weather lookup by postal codes
  • 💨 Air Quality - Pollution data and AQI levels
  • 💾 Smart Caching - Reduce API calls with intelligent caching
  • 🔄 Unit Conversion - Support for metric, imperial, and standard units

Quick Start

Prerequisites

  • Python 3.8+
  • OpenWeatherMap API key (included in .env)
  • pip or uv package manager

Installation

  1. Clone or navigate to the project:
cd /home/jez/Documents/fastmcp/weather-mcp-server
  1. Install dependencies:
pip install -r requirements.txt
  1. The .env file is pre-configured with the API key

Running the Server

# Run with default STDIO transport
python weather_server.py

# Run with HTTP transport
TRANSPORT=http PORT=8000 python weather_server.py

# Run with FastMCP CLI
fastmcp run weather_server.py

# Development mode with inspector
fastmcp dev weather_server.py

# Test mode
python weather_server.py --test

Available Tools

1. get_current_weather

Get current weather conditions for any location.

Parameters:

  • location (str): City name (e.g., "London") or coordinates ("51.5,-0.1")
  • units (str): "metric" (°C), "imperial" (°F), or "standard" (K)
  • include_details (bool): Include extended information

Example:

{
    "location": "London",
    "units": "metric",
    "include_details": true
}

2. get_forecast

Get 5-day weather forecast with 3-hour intervals.

Parameters:

  • location (str): City name or coordinates
  • days (int): Number of days (1-5)
  • units (str): Temperature units

Example:

{
    "location": "New York",
    "days": 3,
    "units": "imperial"
}

3. search_location

Find locations and their coordinates by name.

Parameters:

  • query (str): Location name to search
  • limit (int): Maximum results (1-5)

Example:

{
    "query": "Paris",
    "limit": 3
}

4. get_weather_by_zip

Get weather by ZIP/postal code.

Parameters:

  • zip_code (str): ZIP or postal code
  • country_code (str): ISO country code (e.g., "US", "GB")
  • units (str): Temperature units

Example:

{
    "zip_code": "10001",
    "country_code": "US",
    "units": "imperial"
}

5. get_air_quality

Get air pollution data and AQI for a location.

Parameters:

  • location (str): Coordinates ("lat,lon") or city name

Example:

{
    "location": "Beijing"
}

AQI Levels:

  • 1 = Good (green)
  • 2 = Fair (yellow)
  • 3 = Moderate (orange)
  • 4 = Poor (red)
  • 5 = Very Poor (purple)

Resources

weather://api/status

Get API status, usage statistics, and cache information.

weather://cache/stats

Get detailed cache statistics.

weather://units/info

Information about available unit systems.

Prompts

weather_analysis

Generate comprehensive weather analysis for a location.

travel_weather

Create travel weather comparison for multiple destinations.

Configuration

Edit .env file to customize:

# API Configuration
API_KEY=your_api_key_here
DEFAULT_UNITS=metric      # metric, imperial, or standard
DEFAULT_LANG=en          # Language code

# Cache Settings
CACHE_TTL=600           # Cache duration in seconds

# Server Settings
LOG_LEVEL=INFO          # DEBUG, INFO, WARNING, ERROR
MAX_DAILY_CALLS=1000    # API rate limit

Deployment

Local Installation (Claude Desktop)

fastmcp install claude-desktop weather_server.py

FastMCP Cloud Deployment

  1. Push to GitHub:
git init
git add .
git commit -m "OpenWeatherMap MCP Server"
gh repo create weather-mcp-server --public
git push -u origin main
  1. Deploy on fastmcp.cloud:

    • Sign in with GitHub
    • Create new project
    • Select repository
    • Set entrypoint: weather_server.py
    • Add environment variables from .env
    • Deploy
  2. Connect to Claude:

{
  "mcpServers": {
    "weather": {
      "url": "https://your-project.fastmcp.app/mcp",
      "transport": "http"
    }
  }
}

Usage Examples

Get Weather for Multiple Cities

"What's the weather like in London? And what about Paris and Berlin?"

Plan a Trip

"Compare the 5-day forecast for Rome, Barcelona, and Athens. Which has the best weather for tourism?"

Check Air Quality

"Check the air quality in Beijing and let me know if it's safe for outdoor activities."

Find a Location

"Find all cities named Springfield and show me their coordinates."

API Limitations

  • Free Tier: 1,000 API calls per day
  • Rate Limit: 60 calls per minute
  • Forecast: Maximum 5 days (3-hour intervals)
  • Caching: 10-minute default TTL to minimize API usage

Error Handling

The server handles common errors gracefully:

  • Invalid location names
  • API rate limiting
  • Network timeouts
  • Invalid API responses

All errors are logged and returned with descriptive messages.

Development

Testing

# Run test mode
python weather_server.py --test

# Test with FastMCP client
python -c "
import asyncio
from fastmcp import Client

async def test():
    async with Client('weather_server.py') as client:
        result = await client.call_tool(
            'get_current_weather',
            {'location': 'London'}
        )
        print(result.data)

asyncio.run(test())
"

Logging

Enable debug logging by setting in .env:

LOG_LEVEL=DEBUG

License

MIT

Support

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选