Skip to main content
Glama
jaredlang
by jaredlang
README.md4.36 kB
# Forecast Storage MCP Server A Model Context Protocol (MCP) server for storing weather forecasts in Google Cloud SQL PostgreSQL. ## Features - ✅ **Binary storage** for text and audio with unicode support - ✅ **Full internationalization** - supports all languages (English, Spanish, Chinese, Japanese, Arabic, etc.) - ✅ **TTL-based caching** with automatic expiration - ✅ **Cloud SQL integration** with secure connections - ✅ **Storage statistics** and per-city breakdown - ✅ **Automatic encoding detection** (utf-8, utf-16, utf-32) ## Setup ### 1. Create Cloud SQL Instance ```bash # Create PostgreSQL instance gcloud sql instances create weather-forecasts \ --database-version=POSTGRES_17 \ --tier=db-f1-micro \ --region=us-central1 \ --enable-auto-scaling \ --auto-scaling-min-cpu=1 \ --auto-scaling-max-cpu=2 # Create database gcloud sql databases create weather \ --instance=weather-forecasts # Set password for postgres user gcloud sql users set-password postgres \ --instance=weather-forecasts \ --password=YOUR_SECURE_PASSWORD ``` ### 2. Apply Database Schema ```bash # Get the instance IP (or use Cloud SQL Proxy) gcloud sql instances describe weather-forecasts --format="value(ipAddresses[0].ipAddress)" # Apply schema psql -h INSTANCE_IP -U postgres -d weather -f schema.sql ``` ### 3. Configure Environment ```bash # Copy example environment file cp .env.example .env # Edit .env with your values # GCP_PROJECT_ID=your-project-id # CLOUD_SQL_PASSWORD=your-secure-password ``` ### 4. Install Dependencies ```bash pip install -r requirements.txt ``` ### 5. Run MCP Server ```bash python server.py ``` ## MCP Tools ### 1. upload_forecast Upload a complete forecast (text + audio) to Cloud SQL. ```json { "city": "chicago", "forecast_text": "Weather in Chicago: Sunny, 75°F", "audio_data": "<base64-encoded-wav-audio-data>", "forecast_at": "2025-12-26T15:00:00Z", "ttl_minutes": 30, "language": "en", "locale": "en-US" } ``` **Note:** `audio_data` should be base64-encoded WAV audio data, not a file path. This allows the MCP server to work in remote/containerized environments. ### 2. get_cached_forecast Retrieve cached forecast if available and not expired. ```json { "city": "chicago", "language": "en" } ``` Returns: - `cached: true/false` - `forecast_text`: decoded unicode text - `audio_data`: base64-encoded audio - `age_seconds`: age of cached forecast ### 3. cleanup_expired_forecasts Remove expired forecasts from database. ```json {} ``` ### 4. get_storage_stats Get database storage statistics. ```json {} ``` Returns: - Total forecasts - Storage sizes - Encodings used - Languages used - Per-city breakdown ### 5. list_forecasts List forecast history. ```json { "city": "chicago", "limit": 10 } ``` ### 6. test_connection Test database connection. ```json {} ``` ## Integration with Weather Agent The MCP server is designed to integrate with the weather agent system. See the main project README for integration details. ## Database Schema The `forecasts` table stores: - **Binary text** (BYTEA) with encoding metadata - **Binary audio** (BYTEA) - **Unicode support** (utf-8, utf-16, utf-32) - **Internationalization** (language, locale) - **TTL management** (forecast_at, expires_at) - **Storage metadata** (sizes, encoding, metadata JSONB) ## Development ### Testing Connection ```bash # Run test connection python -c "from tools.connection import test_connection; import json; print(json.dumps(test_connection(), indent=2))" ``` ### Running Tests ```bash # Add tests in tests/ directory pytest tests/ ``` ## Troubleshooting ### Connection Issues 1. Verify Cloud SQL instance is running 2. Check firewall rules allow connections 3. Verify credentials in .env file 4. Test with `test_connection` tool ### Encoding Issues - Default encoding is utf-8 (works for most languages) - Use utf-16 for heavy CJK (Chinese/Japanese/Korean) text - Encoding is auto-detected if not specified ## Cost Estimation **Development (db-f1-micro)**: - Instance: ~$7/month (with auto-pause: ~$3.50/month) - Storage (10GB): ~$1.70/month - Total: ~$5-9/month **Production (db-custom-2-7680)**: - Instance: ~$130/month (with auto-pause: ~$65/month) - Storage (50GB): ~$8.50/month - Total: ~$70-140/month ## License Part of the weather-lab project.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jaredlang/forecast_storage_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server