Current section
Files
Jump to
Current section
Files
include/erlmcp.hrl
-ifndef(ERLMCP_HRL).
-define(ERLMCP_HRL, true).
-define(MCP_VERSION, <<"2025-06-18">>).
-type json_rpc_id() :: binary() | integer() | null.
-type json_rpc_method() :: binary().
-type json_rpc_params() :: map() | list() | undefined.
-record(json_rpc_request, {
jsonrpc = <<"2.0">> :: binary(),
id :: json_rpc_id(),
method :: json_rpc_method(),
params :: json_rpc_params()
}).
-record(json_rpc_response, {
jsonrpc = <<"2.0">> :: binary(),
id :: json_rpc_id(),
result :: term(),
error :: map() | undefined
}).
-record(json_rpc_notification, {
jsonrpc = <<"2.0">> :: binary(),
method :: json_rpc_method(),
params :: json_rpc_params()
}).
-record(mcp_error, {
code :: integer(),
message :: binary(),
data :: term()
}).
-record(mcp_capability, {
name :: binary(),
enabled :: boolean()
}).
-record(mcp_client_capabilities, {
roots :: #mcp_capability{} | undefined,
sampling :: #mcp_capability{} | undefined,
experimental :: map() | undefined
}).
-record(mcp_server_capabilities, {
prompts :: #mcp_capability{} | undefined,
resources :: #mcp_capability{} | undefined,
tools :: #mcp_capability{} | undefined,
logging :: #mcp_capability{} | undefined
}).
-record(mcp_initialize_request, {
protocol_version :: binary(),
capabilities :: #mcp_client_capabilities{} | #mcp_server_capabilities{},
client_info :: map() | undefined
}).
-record(mcp_initialize_response, {
protocol_version :: binary(),
capabilities :: #mcp_server_capabilities{} | #mcp_client_capabilities{},
server_info :: map() | undefined
}).
-record(mcp_resource, {
uri :: binary(),
name :: binary(),
description :: binary() | undefined,
mime_type :: binary() | undefined,
metadata :: map() | undefined
}).
-record(mcp_resource_template, {
uri_template :: binary(),
name :: binary(),
description :: binary() | undefined,
mime_type :: binary() | undefined
}).
-record(mcp_tool, {
name :: binary(),
description :: binary(),
input_schema :: map() | undefined
}).
-record(mcp_tool_annotation, {
audience :: [binary()],
priority :: float() | undefined
}).
-record(mcp_prompt_argument, {
name :: binary(),
description :: binary() | undefined,
required :: boolean()
}).
-record(mcp_prompt, {
name :: binary(),
description :: binary() | undefined,
arguments :: [#mcp_prompt_argument{}] | undefined
}).
-record(mcp_content, {
type :: binary(),
text :: binary() | undefined,
data :: binary() | undefined,
mime_type :: binary() | undefined
}).
-record(mcp_progress_token, {
token :: binary() | integer()
}).
-record(mcp_progress_notification, {
progress_token :: #mcp_progress_token{},
progress :: float(),
total :: float() | undefined
}).
-record(mcp_resource_subscription, {
uri :: binary(),
subscriber :: pid()
}).
-record(mcp_log_message, {
level :: binary(),
data :: term(),
logger :: binary() | undefined
}).
-endif.