Initial curated ITWorx_MCP_Hub source from 368fba691ea8d23403b4d56b53b5ec670d7c5020

This commit is contained in:
Public Source Publisher committed 2026-10-01 01:36:21 +02:00
commit cb5be898ea
663 files changed
+82674

No files matched your search

+103
View File
@@ -0,0 +1,103 @@
"""Process-local MCP runtime supervision and recovery telemetry."""
from __future__ import annotations
import hashlib
import os
import socket
import time
from datetime import UTC, datetime
from threading import Lock
from typing import Any
from mcp.server.context import CallNext, ServerRequestContext
from mcp.shared.exceptions import MCPError
class RuntimeSupervisor:
"""Track transport health without turning tool failures into process failures."""
def __init__(self) -> None:
self._started_monotonic = time.monotonic()
self._started_at = datetime.now(UTC).isoformat()
material = f"{socket.gethostname()}:{os.getpid()}:{self._started_at}".encode()
self.worker_id = hashlib.sha256(material).hexdigest()[:16]
self.generation = os.environ.get(
"HUB_RUNTIME_GENERATION",
os.environ.get("GITEA_CONNECTOR_BUILD_SHA", "development"),
)[:64]
self.restart_count = max(int(os.environ.get("HUB_RUNTIME_RESTART_COUNT", "0")), 0)
self._lock = Lock()
self._in_flight = 0
self._requests = 0
self._failures = 0
self._last_error_code: str | None = None
self._last_fatal_error_code: str | None = None
self._circuit_state = "CLOSED"
self._recovery_count = 0
def started(self) -> None:
with self._lock:
self._in_flight += 1
self._requests += 1
def completed(self) -> None:
with self._lock:
self._in_flight = max(self._in_flight - 1, 0)
if self._circuit_state == "DEGRADED":
self._circuit_state = "CLOSED"
self._recovery_count += 1
def failed(self, code: str, *, fatal: bool) -> None:
with self._lock:
self._in_flight = max(self._in_flight - 1, 0)
self._failures += 1
self._last_error_code = code[:128]
if fatal:
self._last_fatal_error_code = code[:128]
self._circuit_state = "DEGRADED"
def snapshot(self) -> dict[str, Any]:
with self._lock:
return {
"workerId": self.worker_id,
"sessionId": None,
"sessionMode": "stateless-resumable-http",
"resumable": True,
"startedAt": self._started_at,
"uptimeSeconds": max(int(time.monotonic() - self._started_monotonic), 0),
"restartCount": self.restart_count,
"generation": self.generation,
"circuitState": self._circuit_state,
"recoveryCount": self._recovery_count,
"requests": self._requests,
"inFlight": self._in_flight,
"failures": self._failures,
"lastErrorCode": self._last_error_code,
"lastFatalErrorCode": self._last_fatal_error_code,
}
SUPERVISOR = RuntimeSupervisor()
class SupervisorMiddleware:
"""Keep per-operation errors observable while preserving the next request."""
async def __call__(self, ctx: ServerRequestContext[Any, Any], call_next: CallNext) -> Any:
SUPERVISOR.started()
try:
result = await call_next(ctx)
except MCPError as exc:
data = exc.data if isinstance(exc.data, dict) else {}
SUPERVISOR.failed(str(data.get("code", "MCP_ERROR")), fatal=False)
raise
except Exception as exc:
SUPERVISOR.failed(type(exc).__name__, fatal=True)
raise
SUPERVISOR.completed()
return result
def runtime_snapshot() -> dict[str, Any]:
return SUPERVISOR.snapshot()