TMD Weather MCP Server
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**
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues