Skip to main content
Glama
Peemwsr
by Peemwsr

TMD Weather MCP Server

🌤️ Model Context Protocol Server สำหรับข้อมูลสภาพอากาศจากกรมอุตุนิยมวิทยา (TMD)

✨ Features

  • 🔧 5 MCP Tools สำหรับค้นหาข้อมูลสภาพอากาศ

  • 🌐 HTTP API พร้อม FastAPI documentation

  • 🐳 Docker Support พร้อม production-ready setup

  • 📊 Monitoring ด้วย Prometheus และ health checks

  • 🔒 Security พร้อม rate limiting และ SSL support

  • 🚀 Easy Deployment scripts สำหรับทุก platform

Related MCP server: Agentic MCP Weather System

🛠️ MCP Tools

  1. get_all_stations - รายชื่อสถานีตรวจวัดอากาศทั้งหมด

  2. get_weather_by_province - ค้นหาข้อมูลตามจังหวัด

  3. get_weather_by_station - ค้นหาตามชื่อสถานี/รหัสสถานี

  4. get_stations_near_location - หาสถานีใกล้เคียงจากพิกัด

  5. get_weather_summary - สรุปสภาพอากาศทั่วประเทศ

🚀 Quick Start

Claude Desktop (Local)

# 1. Clone repository
git clone https://github.com/yourusername/tmd-weather-mcp.git
cd tmd-weather-mcp

# 2. Install dependencies
python quick_setup.py

# 3. Update Claude Desktop config
cp claude_desktop_config_fixed.json "%APPDATA%\Claude\claude_desktop_config.json"

# 4. Restart Claude Desktop

Docker (Local/Remote)

# Development
docker-compose up --build

# Production
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

Remote Deployment

# Deploy to remote server
./deploy.sh --host YOUR_SERVER_IP --method files --prod

# Test deployment
./test-remote.sh YOUR_SERVER_IP

📡 API Endpoints

  • Health Check: GET /health

  • API Docs: GET /docs

  • MCP Tools: GET /mcp/tools

  • Weather Summary: POST /api/weather/summary

🌐 Live Demo

หลังจาก deploy แล้ว:

🔧 Configuration

Environment Variables

MCP_TRANSPORT=http          # http or stdio
HOST=0.0.0.0               # Server host
PORT=8000                  # Server port
CACHE_DURATION=300         # Cache duration (seconds)
LOG_LEVEL=INFO            # Logging level

Claude Desktop HTTP Config

{
  "mcpServers": {
    "tmd-weather-remote": {
      "command": "curl",
      "args": ["-s", "http://YOUR_SERVER/mcp/tools"],
      "description": "Remote TMD Weather MCP Server"
    }
  }
}

📊 Data Source

ข้อมูลสภาพอากาศจาก กรมอุตุนิยมวิทยา (TMD)

  • Real-time weather data

  • 100+ monitoring stations

  • Temperature, humidity, pressure, wind, rainfall

  • Updated every hour

🐳 Docker Deployment

Development

docker-compose up --build

Production

# Full stack with nginx, monitoring
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

Management Commands

./docker-manage.sh up      # Start services
./docker-manage.sh down    # Stop services  
./docker-manage.sh logs    # View logs
./docker-manage.sh health  # Health check
./docker-manage.sh status  # Service status

🌍 Remote Deployment

Prerequisites

# Run on target server
curl -fsSL https://raw.githubusercontent.com/yourusername/tmd-weather-mcp/main/setup-target-server.sh | bash

Deploy Methods

./deploy.sh --host 192.168.1.100 --method files --prod

2. Docker Registry

./deploy.sh --host my-server.com --method docker --registry docker.io/myuser

3. Git Clone

./deploy.sh --host 10.0.0.50 --method git

📱 Management Scripts

  • deploy.sh / deploy.bat - Automated deployment

  • docker-manage.sh / docker-manage.bat - Container management

  • test-remote.sh - Remote server testing

  • setup-target-server.sh - Target server preparation

🔒 Security Features

  • Rate limiting (10 req/s)

  • CORS protection

  • Security headers

  • SSL/TLS support

  • Container security (non-root user)

  • Network isolation

📊 Monitoring

  • Health Checks: /health endpoint

  • Prometheus Metrics: Port 9090 (production)

  • Log Aggregation: ./logs/ directory

  • Resource Monitoring: Docker stats

  • Alert Scripts: Custom health checks

🚨 Troubleshooting

Common Issues

# Check service status
./docker-manage.sh status

# View logs
./docker-manage.sh logs

# Health check
curl http://localhost/health

# Test API
curl http://localhost/mcp/tools

Debug Commands

# Container logs
docker-compose logs tmd-weather-mcp

# Execute inside container  
docker-compose exec tmd-weather-mcp bash

# Network connectivity
curl -I http://localhost:8000/health

📄 File Structure

tmd-weather-mcp/
├── 🐍 Python Core
│   ├── tmd_weather_server.py      # MCP Server (stdio)
│   ├── tmd_weather_http_server.py # HTTP Server  
│   ├── weather_api.py             # TMD API client
│   ├── weather_models.py          # Data models
│   └── requirements.txt           # Dependencies
├── 🐳 Docker
│   ├── Dockerfile                 # Container definition
│   ├── docker-compose.yml         # Development setup
│   ├── docker-compose.prod.yml    # Production setup
│   ├── nginx.conf                 # Nginx config
│   └── .dockerignore             # Docker ignore
├── 🚀 Deployment  
│   ├── deploy.sh                  # Linux/macOS deploy
│   ├── deploy.bat                 # Windows deploy
│   ├── setup-target-server.sh     # Server setup
│   └── test-remote.sh             # Remote testing
├── 🔧 Management
│   ├── docker-manage.sh           # Container management
│   ├── quick_setup.py             # Local setup
│   └── test_quick.py              # Local testing
└── 📚 Documentation
    ├── README.md                  # This file
    ├── DEPLOYMENT_GUIDE.md        # Deployment guide
    └── DOCKER_README.md           # Docker guide

🤝 Contributing

  1. Fork the repository

  2. Create feature branch (git checkout -b feature/amazing-feature)

  3. Commit changes (git commit -m 'Add amazing feature')

  4. Push to branch (git push origin feature/amazing-feature)

  5. Open Pull Request

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • กรมอุตุนิยมวิทยา (TMD) - Weather data provider

  • Anthropic - Model Context Protocol

  • FastAPI - Web framework

  • Docker - Containerization platform

📞 Support


🌤️ Made with ❤️ for the Claude MCP ecosystem

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Docker-based MCP server that provides current weather information for cities worldwide. Enables AI assistants like Claude to fetch temperature, weather conditions, and humidity data through a standardized interface.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides weather information tools based on the National Weather Service APIs through an SSE-based MCP server that can run as a standalone process or Docker container.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A cross-platform MCP server that provides weather forecasts by coordinates, location name, or IP address without requiring API keys. It leverages Open Meteo and OpenStreetMap to deliver fast, single-query weather lookups.
    MIT