fix(mcp): Add HTTP /health endpoint for frontend health checks
Some checks are pending
Build Images / build-server-docker (push) Waiting to run
Build Images / build-mcp-docker (push) Blocked by required conditions
Build Images / build-agents-docker (push) Blocked by required conditions
Build Images / build-frontend-docker (push) Blocked by required conditions
Build Images / build-server-k8s (push) Blocked by required conditions
Build Images / build-mcp-k8s (push) Blocked by required conditions
Build Images / build-agents-k8s (push) Blocked by required conditions
Build Images / build-frontend-k8s (push) Blocked by required conditions
Some checks are pending
Build Images / build-server-docker (push) Waiting to run
Build Images / build-mcp-docker (push) Blocked by required conditions
Build Images / build-agents-docker (push) Blocked by required conditions
Build Images / build-frontend-docker (push) Blocked by required conditions
Build Images / build-server-k8s (push) Blocked by required conditions
Build Images / build-mcp-k8s (push) Blocked by required conditions
Build Images / build-agents-k8s (push) Blocked by required conditions
Build Images / build-frontend-k8s (push) Blocked by required conditions
The MCP only had health_check as an MCP tool, not as an HTTP endpoint. Frontend was getting 404 when trying GET /health. Added FastAPI route /health that returns: - 200 when healthy with full health status - 503 when starting/degraded with status message Fixes frontend MCP status dashboard showing 'unhealthy'
This commit is contained in:
parent
4d1cee05ba
commit
c581c8a9bb
@ -559,6 +559,46 @@ def main():
|
|||||||
mcp_logger.info("🔥 Logfire initialized for MCP server")
|
mcp_logger.info("🔥 Logfire initialized for MCP server")
|
||||||
mcp_logger.info(f"🌟 Starting MCP server - host={server_host}, port={server_port}")
|
mcp_logger.info(f"🌟 Starting MCP server - host={server_host}, port={server_port}")
|
||||||
|
|
||||||
|
# Get the FastAPI app from FastMCP
|
||||||
|
app = mcp.create_app()
|
||||||
|
|
||||||
|
# Add HTTP /health endpoint for frontend health checks
|
||||||
|
from fastapi import Response
|
||||||
|
|
||||||
|
@app.get("/health")
|
||||||
|
async def http_health_endpoint():
|
||||||
|
"""HTTP health endpoint for frontend/monitoring."""
|
||||||
|
global _shared_context
|
||||||
|
|
||||||
|
if _shared_context and hasattr(_shared_context, "health_status"):
|
||||||
|
# Server is ready with health status
|
||||||
|
health_data = {
|
||||||
|
"status": _shared_context.health_status.get("status", "unknown"),
|
||||||
|
"api_service": _shared_context.health_status.get("api_service", False),
|
||||||
|
"agents_service": _shared_context.health_status.get("agents_service", False),
|
||||||
|
"uptime_seconds": time.time() - _shared_context.startup_time,
|
||||||
|
"timestamp": datetime.now().isoformat(),
|
||||||
|
}
|
||||||
|
status_code = 200 if health_data["status"] == "healthy" else 503
|
||||||
|
return Response(
|
||||||
|
content=json.dumps(health_data),
|
||||||
|
media_type="application/json",
|
||||||
|
status_code=status_code
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
# Server starting up
|
||||||
|
return Response(
|
||||||
|
content=json.dumps({
|
||||||
|
"status": "starting",
|
||||||
|
"message": "MCP server is initializing...",
|
||||||
|
"timestamp": datetime.now().isoformat(),
|
||||||
|
}),
|
||||||
|
media_type="application/json",
|
||||||
|
status_code=503
|
||||||
|
)
|
||||||
|
|
||||||
|
logger.info(f"✓ HTTP /health endpoint registered")
|
||||||
|
|
||||||
mcp.run(transport="streamable-http")
|
mcp.run(transport="streamable-http")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user