"""Resources for the ops MCP server.""" import json from mcp_servers.data.scenarios.manager import scenario_manager from mcp_servers.ops import server from mcp_servers.ops.server import mcp @mcp.resource("ops://crew/roster") def crew_roster() -> str: """Full crew roster for the current scenario. Returns per crew: crew_id, name, role, base_hub, duty status summary. """ roster = [] for c in scenario_manager.crew: hours_remaining = c.duty_hours_limit - c.duty_hours_elapsed roster.append({ "crew_id": c.crew_id, "name": c.name, "role": c.role.value, "base_hub": c.base_hub, "duty_status": "AT_RISK" if hours_remaining <= 2.0 else "OK", "hours_until_limit": round(hours_remaining, 2), "next_flight": c.next_scheduled_flight, }) return json.dumps(roster) @mcp.resource("ops://handover/latest") def latest_handover() -> str: """The most recently generated shift handover brief. Returns null if no brief has been generated yet. """ if server._last_handover is None: return json.dumps(None) return json.dumps(server._last_handover)