Skip to main content
Glama

MCP Agent Tracker

by Big0290
diagnose_interaction_tracking.pyโ€ข12.4 kB
#!/usr/bin/env python3 """ Diagnose Interaction Tracking System This script identifies why your interaction tracking system is broken and provides solutions to fix it. """ import os import sqlite3 from datetime import datetime, timedelta import json def check_database_connection(): """Check database connection and basic functionality.""" print("=== DATABASE CONNECTION DIAGNOSIS ===\n") # Check database files db_paths = [ "./data/agent_tracker.db", "./data/agent_tracker_local.db" ] for db_path in db_paths: if os.path.exists(db_path): print(f"โœ… Database found: {db_path}") print(f" Size: {os.path.getsize(db_path)} bytes") print(f" Modified: {datetime.fromtimestamp(os.path.getmtime(db_path))}") # Try to connect try: conn = sqlite3.connect(db_path) cursor = conn.cursor() # Check tables cursor.execute("SELECT name FROM sqlite_master WHERE type='table';") tables = cursor.fetchall() print(f" Tables: {[table[0] for table in tables]}") # Check interaction count if 'interactions' in [table[0] for table in tables]: cursor.execute("SELECT COUNT(*) FROM interactions;") count = cursor.fetchone()[0] print(f" Total interactions: {count}") # Check recent interactions cursor.execute("SELECT MAX(timestamp) FROM interactions;") latest = cursor.fetchone()[0] if latest: print(f" Latest interaction: {latest}") else: print(" โš ๏ธ No interactions found") conn.close() except Exception as e: print(f" โŒ Database error: {e}") else: print(f"โŒ Database not found: {db_path}") print() def check_interaction_logger(): """Check if the interaction logger is working.""" print("=== INTERACTION LOGGER DIAGNOSIS ===\n") try: from interaction_logger import logger logger = InteractionLogger() print("โœ… InteractionLogger imported successfully") # Check if we can log a test interaction try: test_interaction = logger.log_interaction( interaction_type="test", client_request="Test request", agent_response="Test response", status="success" ) print("โœ… Test interaction logged successfully") # Check if we can retrieve it recent = logger.get_context_for_injection("test_user") if recent: print("โœ… Recent interactions retrieved") else: print("โš ๏ธ No recent interactions retrieved") except Exception as e: print(f"โŒ Test interaction failed: {e}") except ImportError as e: print(f"โŒ InteractionLogger import failed: {e}") except Exception as e: print(f"โŒ InteractionLogger error: {e}") print() def check_session_manager(): """Check if the session manager is working.""" print("=== SESSION MANAGER DIAGNOSIS ===\n") try: from session_manager import SessionManager manager = SessionManager() print("โœ… SessionManager imported successfully") # Check active sessions try: active_sessions = manager.list_active_sessions() print(f"โœ… Active sessions: {len(active_sessions)}") for session in active_sessions[:3]: # Show first 3 print(f" Session: {session.get('session_id', 'N/A')[:8]}...") print(f" User: {session.get('user_id', 'N/A')}") print(f" Interactions: {session.get('interaction_count', 0)}") print(f" Last Activity: {session.get('last_activity', 'N/A')}") except Exception as e: print(f"โŒ Session listing failed: {e}") except ImportError as e: print(f"โŒ SessionManager import failed: {e}") except Exception as e: print(f"โŒ SessionManager error: {e}") print() def check_models_unified(): """Check if the unified models are working.""" print("=== UNIFIED MODELS DIAGNOSIS ===\n") try: from models_unified import get_local_interactions, get_local_sessions print("โœ… Unified models imported successfully") # Check local interactions try: interactions = get_local_interactions(10) print(f"โœ… Local interactions: {len(interactions)}") if interactions: latest = max(interactions, key=lambda x: getattr(x, 'timestamp', datetime.min)) print(f" Latest interaction: {getattr(latest, 'timestamp', 'N/A')}") print(f" Type: {getattr(latest, 'interaction_type', 'N/A')}") else: print(" โš ๏ธ No local interactions found") except Exception as e: print(f"โŒ Local interactions failed: {e}") # Check local sessions try: sessions = get_local_sessions() print(f"โœ… Local sessions: {len(sessions)}") except Exception as e: print(f"โŒ Local sessions failed: {e}") except ImportError as e: print(f"โŒ Unified models import failed: {e}") except Exception as e: print(f"โŒ Unified models error: {e}") print() def check_mcp_server_status(): """Check MCP server status.""" print("=== MCP SERVER STATUS DIAGNOSIS ===\n") try: from main import get_system_status status = get_system_status() print("โœ… MCP server status retrieved") # Check key components if 'database' in status: db_status = status['database'] print(f" Database: {db_status.get('status', 'unknown')}") print(f" Connection: {db_status.get('connection_status', 'unknown')}") if 'logging' in status: logging_status = status['logging'] print(f" Logging: {logging_status.get('status', 'unknown')}") if 'sessions' in status: sessions_status = status['sessions'] print(f" Sessions: {sessions_status.get('status', 'unknown')}") print(f" Active: {sessions_status.get('active_count', 0)}") except ImportError as e: print(f"โŒ MCP server import failed: {e}") except Exception as e: print(f"โŒ MCP server status failed: {e}") print() def check_data_directory(): """Check data directory structure.""" print("=== DATA DIRECTORY DIAGNOSIS ===\n") data_dir = "./data" if os.path.exists(data_dir): print(f"โœ… Data directory exists: {data_dir}") # List contents contents = os.listdir(data_dir) print(f" Contents: {contents}") # Check sessions directory sessions_dir = os.path.join(data_dir, "sessions") if os.path.exists(sessions_dir): session_files = os.listdir(sessions_dir) print(f" Session files: {len(session_files)}") # Check recent session files recent_files = sorted(session_files, key=lambda x: os.path.getmtime(os.path.join(sessions_dir, x)), reverse=True)[:5] for file in recent_files: file_path = os.path.join(sessions_dir, file) mtime = datetime.fromtimestamp(os.path.getmtime(file_path)) size = os.path.getsize(file_path) print(f" {file}: {size} bytes, modified {mtime}") else: print(" โš ๏ธ Sessions directory not found") else: print(f"โŒ Data directory not found: {data_dir}") print() def test_interaction_logging(): """Test if we can actually log interactions.""" print("=== INTERACTION LOGGING TEST ===\n") try: from interaction_logger import logger logger = InteractionLogger() # Test logging a conversation turn print("๐Ÿ”„ Testing conversation turn logging...") result = logger.log_conversation_turn( client_request="This is a test request to check if logging works", agent_response="This is a test response to verify the system", metadata={"test": True, "timestamp": datetime.now().isoformat()} ) if result: print("โœ… Conversation turn logged successfully") # Try to retrieve it print("๐Ÿ”„ Testing interaction retrieval...") recent = logger.get_context_for_injection("test_user") if recent: print("โœ… Recent interactions retrieved successfully") print(f" Context length: {len(recent)} characters") else: print("โš ๏ธ Recent interactions not retrieved") else: print("โŒ Conversation turn logging failed") except Exception as e: print(f"โŒ Interaction logging test failed: {e}") print() def provide_solutions(): """Provide solutions based on the diagnosis.""" print("=== SOLUTIONS & NEXT STEPS ===\n") print("๐Ÿ”ง **Immediate Actions:**") print("1. Check database permissions and file locks") print("2. Verify the MCP server is running properly") print("3. Check if background monitoring is active") print("4. Verify session persistence is working") print("\n๐Ÿ”„ **System Restart Steps:**") print("1. Stop any running MCP servers") print("2. Clear any lock files in ./data/") print("3. Restart the MCP server") print("4. Test interaction logging") print("\n๐Ÿ“Š **Monitoring Setup:**") print("1. Enable background monitoring") print("2. Set up interaction logging alerts") print("3. Monitor database growth") print("4. Check session persistence") print("\n๐Ÿงช **Testing Commands:**") print("python test_conversation_tracking.py") print("python diagnose_interaction_tracking.py") print("python -c \"from main import test_conversation_tracking; test_conversation_tracking('test')\"") def main(): """Main diagnostic function.""" print("๐Ÿ” INTERACTION TRACKING SYSTEM DIAGNOSIS\n") print("This script will identify why your interaction tracking system") print("isn't working and provide solutions to fix it.\n") # Run all diagnostics diagnostics = [ ("Database Connection", check_database_connection), ("Interaction Logger", check_interaction_logger), ("Session Manager", check_session_manager), ("Unified Models", check_models_unified), ("MCP Server Status", check_mcp_server_status), ("Data Directory", check_data_directory), ("Interaction Logging Test", test_interaction_logging) ] for name, func in diagnostics: try: print(f"๐Ÿงช Running: {name}") func() except Exception as e: print(f"โŒ {name} failed: {e}") print() # Provide solutions provide_solutions() print("\n" + "="*60) print("๐ŸŽฏ DIAGNOSIS COMPLETE!") print("="*60) print("\n๐Ÿ’ก **Next Steps:**") print("1. Review the diagnostic output above") print("2. Identify the specific component that's failing") print("3. Apply the recommended solutions") print("4. Test the system again") print("5. Monitor for recurring issues") print("\n๐Ÿšจ **If issues persist:**") print("โ€ข Check system logs for errors") print("โ€ข Verify database integrity") print("โ€ข Test individual components") print("โ€ข Consider database migration if needed") if __name__ == "__main__": main()

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

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