Add get_host_status tool for memory-based server selection
Reports hostname, free memory, and Vivado session state. Suggests using vivado-snoke when free memory is below 64GB. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
c019e32ed8
commit
bfe6ce2a9f
1 changed files with 33 additions and 0 deletions
33
server.py
33
server.py
|
|
@ -627,6 +627,15 @@ async def list_tools() -> list[Tool]:
|
||||||
"required": []
|
"required": []
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
|
Tool(
|
||||||
|
name="get_host_status",
|
||||||
|
description="Get status of this Vivado MCP server host including hostname, free memory, and session state. If free memory is below 64GB, use vivado-snoke instead.",
|
||||||
|
inputSchema={
|
||||||
|
"type": "object",
|
||||||
|
"properties": {},
|
||||||
|
"required": []
|
||||||
|
}
|
||||||
|
),
|
||||||
|
|
||||||
# =====================================================================
|
# =====================================================================
|
||||||
# PROJECT MANAGEMENT TOOLS
|
# PROJECT MANAGEMENT TOOLS
|
||||||
|
|
@ -1357,6 +1366,30 @@ async def call_tool(name: str, arguments: dict) -> list[TextContent]:
|
||||||
"message": "Session is unresponsive (auto_recover=false)"
|
"message": "Session is unresponsive (auto_recover=false)"
|
||||||
}, indent=2))]
|
}, indent=2))]
|
||||||
|
|
||||||
|
elif name == "get_host_status":
|
||||||
|
# Get host system status for memory-based server selection
|
||||||
|
import socket
|
||||||
|
import psutil
|
||||||
|
|
||||||
|
hostname = socket.gethostname()
|
||||||
|
mem = psutil.virtual_memory()
|
||||||
|
mem_free_gb = mem.available / (1024 ** 3)
|
||||||
|
mem_total_gb = mem.total / (1024 ** 3)
|
||||||
|
|
||||||
|
# Build suggestion based on free memory (64GB threshold)
|
||||||
|
suggestion = None
|
||||||
|
if mem_free_gb < 64:
|
||||||
|
suggestion = f"Low memory ({mem_free_gb:.1f}GB free). Use vivado-snoke instead."
|
||||||
|
|
||||||
|
return [TextContent(type="text", text=json.dumps({
|
||||||
|
"hostname": hostname,
|
||||||
|
"memory_free_gb": round(mem_free_gb, 1),
|
||||||
|
"memory_total_gb": round(mem_total_gb, 1),
|
||||||
|
"memory_percent_used": mem.percent,
|
||||||
|
"vivado_session_active": session.is_running,
|
||||||
|
"suggestion": suggestion
|
||||||
|
}, indent=2))]
|
||||||
|
|
||||||
# =========================================================================
|
# =========================================================================
|
||||||
# SESSION CHECK
|
# SESSION CHECK
|
||||||
# =========================================================================
|
# =========================================================================
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue