ra-mcp-dev / docs /api /common.md
carpelan's picture
Dev build of fix/sonar-findings @ 3e0b7c5
21488bd verified
|
Raw History Blame Contribute Delete
2.54 kB
# Common
Shared utilities used across every ra-mcp package (`ra-mcp-common`, module
`ra_mcp_common`). No internal dependencies.
## HTTP Client
Source: [`packages/libs/common/src/ra_mcp_common/http_client.py`](https://github.com/AI-Riksarkivet/ra-mcp/blob/main/packages/libs/common/src/ra_mcp_common/http_client.py)
`HTTPClient` is the centralized async `httpx` client used by every domain
library. It adds exponential-backoff retry on transient failures (429, 500,
502, 503, 504, timeouts, connection errors), structured logging, and
OpenTelemetry spans/metrics.
| Member | Description |
|--------|-------------|
| `HTTPClient(...)` | Construct a client with per-timeout, retry, and connection-pool settings. |
| `get_json(url, params=None, timeout=30, headers=None)` | GET and parse a JSON response. |
| `get_xml(url, params=None, timeout=30, headers=None)` | GET raw XML bytes. |
| `get_content(url, timeout=30, headers=None)` | GET raw bytes; returns `None` on 404/non-200. |
| `aclose()` | Close the underlying `httpx.AsyncClient`. |
| `default_http_client` / `get_http_client(enable_logging=False)` | Shared singleton accessor. |
## Formatting Utilities
Source: [`packages/libs/common/src/ra_mcp_common/formatting.py`](https://github.com/AI-Riksarkivet/ra-mcp/blob/main/packages/libs/common/src/ra_mcp_common/formatting.py)
Presentation helpers shared by the CLI and MCP formatters (text truncation,
snippet highlighting, reference-code formatting).
## Datasets
Source: [`packages/libs/common/src/ra_mcp_common/datasets.py`](https://github.com/AI-Riksarkivet/ra-mcp/blob/main/packages/libs/common/src/ra_mcp_common/datasets.py)
Resolves LanceDB dataset paths for the optional dataset modules, with a
local → mount → Hugging Face Hub fallback chain.
## Telemetry
Source: [`packages/libs/common/src/ra_mcp_common/telemetry.py`](https://github.com/AI-Riksarkivet/ra-mcp/blob/main/packages/libs/common/src/ra_mcp_common/telemetry.py)
Thin wrappers over `opentelemetry-api` that return no-op instances when no SDK
is configured (zero overhead when telemetry is disabled).
| Member | Description |
|--------|-------------|
| `get_tracer(name)` | Get a tracer for a component (e.g. `ra_mcp.http_client`). |
| `get_meter(name)` | Get a meter for a component. |
| `record_span_exception(logger, exc)` | Record an exception as a structured `exception.*` log record (the OTel-recommended replacement for the deprecated span-event API). |
See [Observability](../development/observability.md) for the full instrumentation map.