From dc6483855e9ab120a51905bcc62ff10fc9c574ed Mon Sep 17 00:00:00 2001 From: Maor Friedman Date: Mon, 21 Jul 2025 13:27:26 +0300 Subject: [PATCH 1/2] initiate metrics --- server.py | 3 ++- service_client/__init__.py | 4 ++-- service_client/metrics.py | 6 ++++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/server.py b/server.py index 46a3661..fe5f968 100644 --- a/server.py +++ b/server.py @@ -15,7 +15,7 @@ from mcp.server.fastmcp import FastMCP -from service_client import InventoryClient, metrics, track_tool_usage +from service_client import InventoryClient, metrics, track_tool_usage, initiate_metrics from service_client.logger import log @@ -546,5 +546,6 @@ async def set_host_role(host_id: str, infraenv_id: str, role: str) -> str: if __name__ == "__main__": app = mcp.sse_app() + initiate_metrics() app.add_route("/metrics", metrics) uvicorn.run(app, host="0.0.0.0") diff --git a/service_client/__init__.py b/service_client/__init__.py index ced1196..6295e43 100644 --- a/service_client/__init__.py +++ b/service_client/__init__.py @@ -7,6 +7,6 @@ from .assisted_service_api import InventoryClient from .logger import log -from .metrics import metrics, track_tool_usage +from .metrics import initiate_metrics, metrics, track_tool_usage -__all__ = ["InventoryClient", "log", "metrics", "track_tool_usage"] +__all__ = ["InventoryClient", "log", "metrics", "track_tool_usage", "initiate_metrics"] diff --git a/service_client/metrics.py b/service_client/metrics.py index 57c7d16..171f19b 100644 --- a/service_client/metrics.py +++ b/service_client/metrics.py @@ -33,6 +33,12 @@ ) +def initiate_metrics() -> None: + """Initiate metrics.""" + REQUEST_COUNT.labels(tool="").inc() + REQUEST_LATENCY.labels(tool="").observe(0) + + def track_tool_usage() -> Callable: """Decorate MCP tools with this decorator to track tool usage metrics.""" From 33a383c5943dc564ee6af36840e275d62c9cd688 Mon Sep 17 00:00:00 2001 From: Maor Friedman Date: Mon, 21 Jul 2025 14:30:34 +0300 Subject: [PATCH 2/2] initiate all tools --- server.py | 13 +++++++++++-- service_client/metrics.py | 7 ++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/server.py b/server.py index fe5f968..f56a77d 100644 --- a/server.py +++ b/server.py @@ -7,7 +7,7 @@ import json import os - +import asyncio import requests import uvicorn @@ -544,8 +544,17 @@ async def set_host_role(host_id: str, infraenv_id: str, role: str) -> str: return result.to_str() +def list_tools() -> list[str]: + """List all MCP tools.""" + + async def mcp_list_tools() -> list[str]: + return [t.name for t in await mcp.list_tools()] + + return asyncio.run(mcp_list_tools()) + + if __name__ == "__main__": app = mcp.sse_app() - initiate_metrics() + initiate_metrics(list_tools()) app.add_route("/metrics", metrics) uvicorn.run(app, host="0.0.0.0") diff --git a/service_client/metrics.py b/service_client/metrics.py index 171f19b..a5470e9 100644 --- a/service_client/metrics.py +++ b/service_client/metrics.py @@ -33,10 +33,11 @@ ) -def initiate_metrics() -> None: +def initiate_metrics(tools: list[str]) -> None: """Initiate metrics.""" - REQUEST_COUNT.labels(tool="").inc() - REQUEST_LATENCY.labels(tool="").observe(0) + for tool in tools: + REQUEST_COUNT.labels(tool=tool).inc() + REQUEST_LATENCY.labels(tool=tool).observe(0) def track_tool_usage() -> Callable: