Files
nova/mcp_servers/ops/resources.py

40 lines
1.2 KiB
Python

"""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)