Skip to main content
Glama
controller_advanced_analytics.py6.54 kB
#!/usr/bin/env python3 """ AAP Controller Advanced Analytics & Reporting Tool """ from typing import Any, Dict, Optional, Union from fastmcp import FastMCP from pydantic import Field from connectors.aap_connector import get_aap_connector def register_advanced_analytics_tools(mcp: FastMCP): """Register advanced analytics and reporting tools with the MCP server""" @mcp.tool() def advanced_analytics_management( action: str = Field(description="Action: job_explorer, host_explorer, event_explorer, adoption_rate, roi_analysis, custom_reports, probe_templates, get_report, dashboard_data, host_metrics"), report_slug: Optional[str] = Field(None, description="Report slug for get_report action"), time_period: Optional[str] = Field(None, description="Time period: day, week, month, quarter, year"), filters: Optional[Dict[str, Any]] = Field(None, description="Filters for analytics queries"), params: Optional[Dict[str, Any]] = Field(None, description="Additional parameters for analytics"), host_id: Optional[Union[int, float]] = Field(None, description="Host ID for host-specific metrics"), template_id: Optional[Union[int, float]] = Field(None, description="Template ID for analysis") ) -> Dict[str, Any]: """ Advanced analytics and reporting management tool. Handles job analytics, host analysis, adoption metrics, ROI analysis, and custom reports. """ try: # Job Analytics if action == "job_explorer": params_dict = filters or {} if time_period: params_dict["period"] = time_period if params: params_dict.update(params) return get_aap_connector().get("analytics/job_explorer/", params_dict) elif action == "job_explorer_options": return get_aap_connector().get("analytics/job_explorer_options/") # Host Analytics elif action == "host_explorer": params_dict = filters or {} if time_period: params_dict["period"] = time_period if params: params_dict.update(params) return get_aap_connector().get("analytics/host_explorer/", params_dict) elif action == "host_explorer_options": return get_aap_connector().get("analytics/host_explorer_options/") elif action == "host_metrics": if host_id: params_dict = filters or {} return get_aap_connector().get(f"hosts/{host_id}/ansible_facts/", params_dict) else: params_dict = filters or {} return get_aap_connector().get("host_metrics/", params_dict) elif action == "host_metric_summary": params_dict = filters or {} return get_aap_connector().get("host_metric_summary_monthly/", params_dict) # Event Analytics elif action == "event_explorer": params_dict = filters or {} if time_period: params_dict["period"] = time_period if params: params_dict.update(params) return get_aap_connector().get("analytics/event_explorer/", params_dict) elif action == "event_explorer_options": return get_aap_connector().get("analytics/event_explorer_options/") # Adoption Rate Analysis elif action == "adoption_rate": params_dict = filters or {} if time_period: params_dict["period"] = time_period return get_aap_connector().get("analytics/adoption_rate/", params_dict) elif action == "adoption_rate_options": return get_aap_connector().get("analytics/adoption_rate_options/") # ROI Analysis elif action == "roi_analysis": params_dict = filters or {} if time_period: params_dict["period"] = time_period return get_aap_connector().get("analytics/roi_templates/", params_dict) elif action == "roi_options": return get_aap_connector().get("analytics/roi_templates_options/") # Probe Templates elif action == "probe_templates": params_dict = filters or {} return get_aap_connector().get("analytics/probe_templates/", params_dict) elif action == "probe_templates_options": return get_aap_connector().get("analytics/probe_templates_options/") elif action == "probe_template_for_hosts": params_dict = filters or {} if template_id: params_dict["template"] = template_id return get_aap_connector().get("analytics/probe_template_for_hosts/", params_dict) elif action == "probe_template_for_hosts_options": return get_aap_connector().get("analytics/probe_template_for_hosts_options/") # Custom Reports elif action == "custom_reports": params_dict = filters or {} return get_aap_connector().get("analytics/reports/", params_dict) elif action == "get_report": if not report_slug: return {"error": "report_slug is required for get_report action"} params_dict = filters or {} return get_aap_connector().get(f"analytics/report/{report_slug}/", params_dict) elif action == "report_options": return get_aap_connector().get("analytics/report_options/") # Dashboard Data elif action == "dashboard_data": return get_aap_connector().get("analytics/") elif action == "analytics_authorized": return get_aap_connector().get("analytics/authorized/") else: return {"error": f"Unknown action: {action}"} except Exception as e: return {"error": f"Advanced analytics management failed: {str(e)}"}

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/anshulbehl/aap-mcp-pilot'

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