Facade for MCP (Model Context Protocol) server management.
Read APIs (high-level — requires Supervisor running)
list_servers/0— metadata for every registered MCP server. Disabled servers are not started and therefore do not appear in this list.list_tools/1— cached tools for a server by name.
Low-level APIs (client-pid based)
list_tools/2— list tools from a runningClientpid.call_tool/4— invoke a named tool on a runningClientpid.
Summary
Functions
Call a named tool on a Client process directly.
Return metadata for every running MCP server (i.e. every server registered in the registry). Disabled servers are not started, so they are not included.
Return cached tools for the server registered under name.
List tools from a running Client process directly.
Return [Tool.Spec.t()] for all ready, enabled MCP servers.
Functions
Call a named tool on a Client process directly.
@spec list_servers() :: [map()]
Return metadata for every running MCP server (i.e. every server registered in the registry). Disabled servers are not started, so they are not included.
Each entry is a map with keys :name, :status, :type, :enabled,
:tool_count, :error.
Return cached tools for the server registered under name.
Returns {:ok, [tool_map]} or {:error, :not_found | %ExAthena.Error{}}.
@spec list_tools(pid(), non_neg_integer()) :: {:ok, [map()]} | {:error, term()}
List tools from a running Client process directly.
Lower-level than list_tools/1 — callers that hold a pid use this.
@spec tool_specs(:all | [String.t()]) :: [ExAthena.Tool.Spec.t()]
Return [Tool.Spec.t()] for all ready, enabled MCP servers.
filter controls which servers contribute specs:
:all— all ready+enabled servers[server_name]— only the named servers
When the MCP supervisor is not running, returns [] without raising.