Hermes.Telemetry (hermes_mcp v0.10.0)

Telemetry integration for Hermes MCP.

This module defines telemetry events emitted by Hermes MCP and provides helper functions for emitting events consistently across the codebase.

Event Naming Convention

All telemetry events emitted by Hermes MCP follow the namespace pattern: [:hermes_mcp, component, action]

Where:

  • :hermes_mcp is the root namespace
  • component is the specific component emitting the event (e.g., :client, :transport)
  • action is the specific action or lifecycle event (e.g., :init, :request, :response)

Span Events

Many operations in Hermes MCP emit span events using :telemetry.span/3, which generates three potential events:

  • [..., :start] - When the operation begins
  • [..., :stop] - When the operation completes successfully
  • [..., :exception] - When the operation fails with an exception

Example

:telemetry.attach(
  "log-client-requests",
  [:hermes_mcp, :client, :request, :stop],
  fn _event, %{duration: duration}, %{method: method}, _config ->
    Logger.info("Request to #{method} completed in #{div(duration, 1_000_000)} ms")
  end,
  nil
)

Summary

Functions

event_client_error()

event_client_init()

event_client_notification()

event_client_request()

event_client_response()

event_client_roots()

event_client_terminate()

event_message_decode()

event_message_encode()

event_progress_update()

event_server_error()

event_server_init()

event_server_notification()

event_server_prompt_get()

event_server_request()

event_server_resource_read()

event_server_response()

event_server_session_cleanup()

event_server_session_created()

event_server_session_terminated()

event_server_terminate()

event_server_tool_call()

event_transport_connect()

event_transport_disconnect()

event_transport_error()

event_transport_init()

event_transport_receive()

event_transport_send()

event_transport_terminate()

execute(event_name, measurements, metadata)

@spec execute([atom()], map(), map()) :: :ok

Execute a telemetry event with the Hermes MCP namespace.

Parameters

  • event_name - List of atoms for the event name, excluding the :hermes_mcp prefix
  • measurements - Map of measurements for the event
  • metadata - Map of metadata for the event