Time-series database on PostgreSQL
## TimescaleDB MCP Server: Time-Series PostgreSQL The **TimescaleDB MCP Server** integrates TimescaleDB into Google Antigravity, enabling time-series data operations with hypertables, continuous aggregates, and compression directly from your development environment. ### Why TimescaleDB MCP? - **PostgreSQL Based**: Full PostgreSQL compatibility - **Hypertables**: Automatic time-based partitioning - **Continuous Aggregates**: Real-time materialized views - **Compression**: Up to 95% storage savings - **SQL Interface**: Standard SQL for time-series ### Key Features #### 1. Time-Series Queries ```python # Query time-series data result = await mcp.query(""" SELECT time_bucket('5 minutes', time) AS bucket, device_id, AVG(temperature) as avg_temp, MAX(temperature) as max_temp FROM sensor_data WHERE time > NOW() - INTERVAL '1 hour' GROUP BY bucket, device_id ORDER BY bucket DESC """) for row in result: print(f"{row['bucket']}: Device {row['device_id']} - {row['avg_temp']}°C") ``` #### 2. Hypertable Operations ```python # Create hypertable await mcp.execute(""" SELECT create_hypertable( 'sensor_data', 'time', chunk_time_interval => INTERVAL '1 day' ) """) # Add compression await mcp.execute(""" ALTER TABLE sensor_data SET ( timescaledb.compress, timescaledb.compress_segmentby = 'device_id' ) """) # Add compression policy await mcp.execute(""" SELECT add_compression_policy('sensor_data', INTERVAL '7 days') """) ``` #### 3. Continuous Aggregates ```python # Create continuous aggregate await mcp.execute(""" CREATE MATERIALIZED VIEW hourly_stats WITH (timescaledb.continuous) AS SELECT time_bucket('1 hour', time) AS hour, device_id, AVG(temperature) as avg_temp, COUNT(*) as reading_count FROM sensor_data GROUP BY hour, device_id """) # Add refresh policy await mcp.execute(""" SELECT add_continuous_aggregate_policy('hourly_stats', start_offset => INTERVAL '3 hours', end_offset => INTERVAL '1 hour', schedule_interval => INTERVAL '1 hour' ) """) ``` #### 4. Data Retention ```python # Add retention policy await mcp.execute(""" SELECT add_retention_policy('sensor_data', INTERVAL '30 days') """) # Get chunk info chunks = await mcp.query(""" SELECT chunk_name, range_start, range_end, is_compressed FROM timescaledb_information.chunks WHERE hypertable_name = 'sensor_data' ORDER BY range_start DESC LIMIT 10 """) ``` ### Configuration ```json { "mcpServers": { "timescaledb": { "command": "npx", "args": ["-y", "@anthropic/mcp-timescaledb"], "env": { "TIMESCALE_URL": "postgresql://user:pass@host:5432/tsdb" } } } } ``` ### Use Cases **IoT Monitoring**: Store and analyze sensor data. **DevOps Metrics**: Application and infrastructure metrics. **Financial Data**: Time-series financial analysis. **Energy Monitoring**: Smart grid and energy data. The TimescaleDB MCP enables time-series operations within your development environment.
{
"mcpServers": {
"timescaledb": {
"mcpServers": {
"timescaledb": {
"env": {
"TIMESCALE_URL": "postgresql://user:pass@host:5432/db"
},
"args": [
"-y",
"timescaledb-mcp-server"
],
"command": "npx"
}
}
}
}
}