split each MCP server into tools/resources/prompts modules
This commit is contained in:
39
mcp_servers/ops/resources.py
Normal file
39
mcp_servers/ops/resources.py
Normal file
@@ -0,0 +1,39 @@
|
||||
"""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)
|
||||
Reference in New Issue
Block a user