Documentation
¶
Overview ¶
Package dynamic implements the 'dynamic' load mode: instead of exposing the full product tool catalog (110+ tools) to the MCP client, the server exposes only three meta-tools — ionos_search_tools, ionos_describe_tools and ionos_call_tool — through which the model discovers and invokes the real tools at runtime. The real catalog never enters the client's tool list, so this works for clients with hard tool caps and no client-side tool search of their own (e.g. Cursor, Windsurf), without relying on notifications/tools/list_changed.
Mechanism: the full catalog is registered onto a private, in-memory "catalog" server (reusing each product's existing RegisterAll, unchanged). The dynamic package self-connects to that server over an in-memory transport, snapshots the tool metadata once at startup, and forwards ionos_call_tool invocations to it. Input validation, schema inference and error enrichment all run inside the catalog server exactly as they would in eager mode.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Register ¶
Register builds the private catalog from products and registers the three dynamic meta-tools on the public server. It returns an io.Closer that tears down the catalog connection; main defers it for a clean shutdown and tests Close it to avoid leaks. Returns an error if the catalog cannot be built.