预测存储MCP服务器
用于在Google Cloud SQL PostgreSQL中存储天气预报的模型上下文协议(MCP)服务器。
特性
- ✅ 二进制存储器 用于支持unicode的文本和音频
- ✅ 全面国际化 -支持所有语言(英语、西班牙语、中文、日语、阿拉伯语等)
- ✅ 基于TTL的缓存 自动过期
- ✅ 云SQL集成 具有安全连接
- ✅ 存储统计 按城市细分
- ✅ 自动编码检测 (utf-8、utf-16、utf-32)
设置
1.创建云SQL实例
# 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_PASSWORD2.应用数据库模式
# 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.sql3.配置环境
# Copy example environment file
cp .env.example .env
# Edit .env with your values
# GCP_PROJECT_ID=your-project-id
# CLOUD_SQL_PASSWORD=your-secure-password4.安装依赖项
pip install -r requirements.txt5.运行MCP服务器
python server.pyMCP工具
1.上传_预测
将完整的预测(文本+音频)上传到Cloud SQL。
{
"city": "chicago",
"forecast_text": "Weather in Chicago: Sunny, 75°F",
"audio_data": "",
"forecast_at": "2025-12-26T15:00:00Z",
"ttl_minutes": 30,
"language": "en",
"locale": "en-US"
}注: audio_data 应该是base64编码的WAV音频数据,而不是文件路径。这允许MCP服务器在远程/容器化环境中工作。
2.获取预测
检索缓存的预测(如果可用且未过期)。
{
"city": "chicago",
"language": "en"
}退货:
cached: true/falseforecast_text:解码的unicode文本audio_data:base64编码音频age_seconds:缓存预测的年龄
3.清理_预期_预测
从数据库中删除过期的预测。
{}4.获取存储状态
获取数据库存储统计信息。
{}退货:
- 预测总数
- 存储大小
- 使用的编码
- 使用的语言
- 按城市细分
5.列表_预测
列出预测历史记录。
{
"city": "chicago",
"limit": 10
}6.测试连接
测试数据库连接。
{}与Weather Agent集成
MCP服务器旨在与气象代理系统集成。有关集成的详细信息,请参阅主项目README。
数据库模式
这 forecasts 表存储:
- 二值文本 (BYTEA),带有编码元数据
- 二进制音频 (字节)
- Unicode支持 (utf-8、utf-16、utf-32)
- 国际化 (语言、地区)
- TTL管理 (预测日期、到期日期)
- 存储元数据 (大小、编码、元数据JSONB)
发展
测试连接
# Run test connection
python -c "from tools.connection import test_connection; import json; print(json.dumps(test_connection(), indent=2))"运行测试
# Add tests in tests/ directory
pytest tests/故障排除
连接问题
- 验证云SQL实例是否正在运行
- 检查防火墙规则是否允许连接
- 验证.env文件中的凭据
- 测试用
test_connection工具
编码问题
- 默认编码为utf-8(适用于大多数语言)
- 对于重型CJK(中文/日文/韩文)文本,请使用utf-16
- 如果未指定,则自动检测编码
成本估算
开发(db-f1-micro):
- 实例:约7美元/月(自动暂停:约3.50美元/月)
- 存储空间(10GB):约1.70美元/月
- 总计:约5-9美元/月
生产(db-cutom-2-7680):
- 实例:约130美元/月(自动暂停:约65美元/月)
- 存储空间(50GB):约8.50美元/月
- 总计:约70-140美元/月
许可证
气象实验室项目的一部分。
