adk_mcp_protocol (erlang_adk v0.10.0)

View Source

Explicit MCP protocol-era dispatch.

MCP 2025-11-25 is a handshake/session era. MCP 2026-07-28 is a stateless, per-request-metadata era. Callers must select an era explicitly; this module never guesses from the presence of a session or silently negotiates a modern version through the legacy initialize exchange.

Summary

Types

era/0

-type era() :: legacy | modern.

Functions

client_capabilities(Era0, Capabilities)

-spec client_capabilities(era() | binary(), map()) -> {ok, map()} | {error, term()}.

discover_result(ServerInfo, Capabilities, Options)

-spec discover_result(map(), map(), map()) -> {ok, map()} | {error, term()}.

era(Version)

-spec era(era() | binary()) -> {ok, era()} | {error, term()}.

initialize_request(Id, ClientInfo, Capabilities)

-spec initialize_request(binary() | integer(), map(), map()) -> {ok, map()} | {error, term()}.

initialize_result(Id, ServerInfo, Capabilities, Options)

-spec initialize_result(binary() | integer(), map(), map(), map()) -> {ok, map()} | {error, term()}.

legacy_version()

-spec legacy_version() -> binary().

modern_version()

-spec modern_version() -> binary().

request(Era0, Id, Method, Params, Context)

-spec request(era() | binary(), binary() | integer(), binary(), map(), map()) ->
                 {ok, #{message := map(), headers := map()}} | {error, term()}.

result_response(Era0, Id, Result, ServerInfo)

-spec result_response(era() | binary(), binary() | integer(), map(), map()) ->
                         {ok, map()} | {error, term()}.

server_capabilities(Era0, Capabilities)

-spec server_capabilities(era() | binary(), map()) -> {ok, map()} | {error, term()}.

supported_versions()

-spec supported_versions() -> [binary()].

validate_http_request(Era0, Headers, Message)

-spec validate_http_request(era() | binary(), map() | [{binary(), binary()}], term()) ->
                               {ok, map()} | {error, term()}.