Skip to main content
Glama
Peemwsr
by Peemwsr
README.md
# 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

## 🛠️ 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)
```bash
# 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)
```bash
# Development
docker-compose up --build

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

### Remote Deployment
```bash
# 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 แล้ว:
- **API Documentation**: http://your-server/docs
- **Health Status**: http://your-server/health
- **MCP Tools List**: http://your-server/mcp/tools

## 🔧 Configuration

### Environment Variables
```bash
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
```json
{
  "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
```bash
docker-compose up --build
```

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

### Management Commands
```bash
./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
```bash
# Run on target server
curl -fsSL https://raw.githubusercontent.com/yourusername/tmd-weather-mcp/main/setup-target-server.sh | bash
```

### Deploy Methods

#### 1. File Transfer (Recommended)
```bash
./deploy.sh --host 192.168.1.100 --method files --prod
```

#### 2. Docker Registry
```bash
./deploy.sh --host my-server.com --method docker --registry docker.io/myuser
```

#### 3. Git Clone
```bash
./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
```bash
# 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
```bash
# 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](LICENSE) file for details.

## 🙏 Acknowledgments

- **กรมอุตุนิยมวิทยา (TMD)** - Weather data provider
- **Anthropic** - Model Context Protocol
- **FastAPI** - Web framework
- **Docker** - Containerization platform

## 📞 Support

- **Issues**: [GitHub Issues](https://github.com/yourusername/tmd-weather-mcp/issues)
- **Documentation**: [Deployment Guide](DEPLOYMENT_GUIDE.md)
- **API Docs**: http://your-server/docs (after deployment)

---

🌤️ **Made with ❤️ for the Claude MCP ecosystem**