MCP Gemini服务器-行星科学问答
📋 学术背景
容器设计和部署-(AL_KCNCM_9_1)29433\ 云原生计算软件设计理学硕士\ TUS-香农理工大学:中西部中部-2025\ 学生:韦弗顿·德·索萨·卡斯坦霍
🚀 项目概述
基于FastAPI的MCP(模型上下文协议)服务器,使用谷歌的Gemini AI生成有关彗星和行星元素的教育答案。该项目演示了具有全面配置管理、日志记录和监控功能的容器化应用程序部署。
🎯 学习目标
该项目解决了容器设计和部署中的关键概念:
- 容器化 使用Docker和Docker Compose
- 环境配置 管理
- API开发 使用FastAPI
- 测井系统 实施
- 健康监测 和指标
- CI/CD 准备就绪
- 微服务架构
📋 先决条件
- Python 3.8+
- Docker和Docker Compose
- Gemini API密钥来自 谷歌人工智能工作室
🛠 安装和设置
方法一:Docker(推荐)
- 克隆和配置:
git clone
cd mcp-gemini-server
cp .env.example .env
# Edit .env with your Gemini API key- 使用Docker Compose构建和运行:
docker-compose up --build方法二:地方发展
- 创建虚拟环境:
python -m venv venv
source venv/bin/activate # Linux/Mac
# OR
venv\Scripts\activate # Windows- 安装依赖项:
pip install -r requirements.txt- 配置环境:
cp .env.example .env
# Edit .env with your Gemini API key- 运行服务器:
python src/mcp_server.py🐳 容器架构
Dockerfile结构
# Multi-stage build for optimization
# Python 3.11 slim base image
# Dependency caching layer
# Health check implementation
# Log volume configurationDocker编写服务
mcp-server:
# Main application service
# Port mapping 8000:8000
# Environment variables
# Volume mounts for logs
# Health checks
redis:
# Optional caching layer
# For production scaling📖 API文档
生成行星科学答案
curl -X POST "http://localhost:8000/generate_answers" \
-H "Content-Type: application/json" \
-d '{
"description": "Explain the composition of comet 3I/ATLAS and its significance",
"max_tokens": 500
}'健康监测
curl "http://localhost:8000/health"服务元数据
curl "http://localhost:8000/metadata"交互式文档
访问 http://localhost:8000/docs Swagger UI文档。
🔧 配置管理
环境变量(.env)
# API Configuration
GEMINI_API_KEY=your_gemini_api_key_here
# Server Configuration
HOST=0.0.0.0
PORT=8000
DEBUG=false
# Logging Configuration
LOG_LEVEL=INFO
LOG_FILE=logs/app.log
# Application Settings
MAX_CONTENT_LENGTH=1048576
TIMEOUT=30📊 记录系统
原木结构
# Structured logging with rotation
# File: logs/app.log
# Format: timestamp - logger_name - level - message
# Rotation: 10MB max, 5 backup files日志级别
- 调试:详细的开发信息
- 信息:一般运营事件
- 警告:警告条件
- 错误:错误条件
🧪 测试与验证
健康检查
./scripts/health_check.sh客户端测试
./scripts/test_client.sh手动测试
from src.mcp_client import MCPClient
client = MCPClient()
answers = client.generate_answers(
"What Comet 3I/ATLAS Teaches Us About the Composition of Other Solar Systems"
)🎯 应用集装箱设计原则
1. 不可变基础设施
- Docker镜像作为不可变工件
- 环境特定配置
- 版本控制的Dockerfile
2. 配置管理
- 配置的环境变量
- 将配置与代码分开
- 安全的凭证管理
3. 健康监测
- HTTP健康检查
- 应用程序指标
- 日志聚合
4. 记录最佳实践
- 结构化日志记录
- 日志轮转
- 多级日志记录
5. 安全考虑
- 容器中的非root用户
- 安全环境变量
- 输入验证
📈 部署场景
发展
docker-compose up --build生产
docker-compose -f docker-compose.prod.yml up -dKubernetes(未来增强)
# Kubernetes deployment manifests
# Service definitions
# Ingress configuration🔍 监测和可观察性
健康终点
GET /health-应用程序运行状况GET /metadata-服务信息- 应用程序日志-运营见解
收集的指标
- 响应时间
- 错误率
- 请求数量
- 系统资源
🚀 性能注意事项
容器优化
- 多阶段构建
- 薄型基础图像
- 依赖缓存
- 资源限制
API性能
- 请求超时
- 有效载荷大小限制
- 连接池
- 错误处理
📚 学术学习成果
该项目展示了在以下方面的熟练程度:
- 集装箱设计
- Dockerfile最佳实践 - 图像优化 - 层缓存策略
- 部署策略
- Docker编写编排 - 环境管理 - 服务发现
- API开发
- RESTful设计原则 - 输入验证 - 错误处理
- 卓越运营
- 日志记录实施 - 健康监测 - 配置管理
🔮 未来的增强功能
- \[\]Kubernetes部署清单
- \[\]CI/CD管道集成
- \[\]数据库集成以实现持久性
- \[\]Redis缓存实现
- \[\]API速率限制
- \[\]身份验证和授权
- \[\]普罗米修斯指标集成
- \[\]Grafana仪表板
🤝 贡献
这是TUS Midlands硕士课程的一个学术项目。用于教育目的和学术合作。
📄 许可证
学术项目-TUS中部2025
👨🎓 学生信息
姓名: 韦弗顿 de Souza Castanho\ 程序: 云原生计算软件设计理学硕士\ 课程: 容器设计和部署(AL_KCNCM_9_1)29433\ 机构: TUS-香农理工大学:中西部 年份: 2025
______________________________________________________________________
*该项目代表了容器设计和部署原则在现代微服务架构中的实际应用。*
