Skip to main content
Glama
nesirat

MCP Vulnerability Management System

by nesirat
health.py3.93 kB
from typing import Dict, Any from sqlalchemy import text from sqlalchemy.orm import Session from datetime import datetime import time from app.db.session import engine class DatabaseHealth: @staticmethod def check_connection(session: Session) -> Dict[str, Any]: """ Check database connection health. """ start_time = time.time() try: # Execute a simple query to check connection session.execute(text("SELECT 1")) connection_time = time.time() - start_time # Get connection pool stats pool = engine.pool return { "status": "healthy", "connection_time_ms": round(connection_time * 1000, 2), "pool_size": pool.size(), "checked_in": pool.checkedin(), "checked_out": pool.checkedout(), "overflow": pool.overflow(), "timestamp": datetime.utcnow().isoformat() } except Exception as e: return { "status": "unhealthy", "error": str(e), "timestamp": datetime.utcnow().isoformat() } @staticmethod def get_performance_metrics(session: Session) -> Dict[str, Any]: """ Get database performance metrics. """ try: # Get query execution time statistics result = session.execute(text(""" SELECT query, calls, total_time, mean_time, rows FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10 """)) slow_queries = [ { "query": row[0], "calls": row[1], "total_time_ms": round(row[2], 2), "mean_time_ms": round(row[3], 2), "rows": row[4] } for row in result ] # Get table statistics result = session.execute(text(""" SELECT schemaname, relname, n_live_tup, n_dead_tup, last_vacuum, last_analyze FROM pg_stat_user_tables ORDER BY n_live_tup DESC """)) table_stats = [ { "schema": row[0], "table": row[1], "live_rows": row[2], "dead_rows": row[3], "last_vacuum": row[4].isoformat() if row[4] else None, "last_analyze": row[5].isoformat() if row[5] else None } for row in result ] return { "status": "healthy", "slow_queries": slow_queries, "table_stats": table_stats, "timestamp": datetime.utcnow().isoformat() } except Exception as e: return { "status": "unhealthy", "error": str(e), "timestamp": datetime.utcnow().isoformat() } @staticmethod def get_connection_pool_stats() -> Dict[str, Any]: """ Get detailed connection pool statistics. """ pool = engine.pool return { "size": pool.size(), "checked_in": pool.checkedin(), "checked_out": pool.checkedout(), "overflow": pool.overflow(), "timeout": pool.timeout(), "recycle": pool._recycle, "max_overflow": pool._max_overflow, "pool_size": pool._pool.size, "timestamp": datetime.utcnow().isoformat() }

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/nesirat/MCP'

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