Packages

Gleam library for building Model Context Protocol servers and transports

Current section

Files

Jump to
mcp_toolkit src mcp_toolkit.erl
Raw

src/mcp_toolkit.erl

-module(mcp_toolkit).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/mcp_toolkit.gleam").
-export([new/2, description/2, instructions/2, add_resource/3, add_resource_template/3, add_tool/4, add_prompt/3, resource_capabilities/3, prompt_capabilities/2, tool_capabilities/2, enable_logging/1, page_limit/2, build/1, handle_message/2, create_transport/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/mcp_toolkit.gleam", 46).
?DOC(" Construct a new server builder with the given name and version.\n").
-spec new(binary(), binary()) -> mcp_toolkit@core@server:builder().
new(Name, Version) ->
mcp_toolkit@core@server:new(Name, Version).
-file("src/mcp_toolkit.gleam", 50).
-spec description(mcp_toolkit@core@server:builder(), binary()) -> mcp_toolkit@core@server:builder().
description(Builder, Description) ->
mcp_toolkit@core@server:description(Builder, Description).
-file("src/mcp_toolkit.gleam", 54).
-spec instructions(mcp_toolkit@core@server:builder(), binary()) -> mcp_toolkit@core@server:builder().
instructions(Builder, Instructions) ->
mcp_toolkit@core@server:instructions(Builder, Instructions).
-file("src/mcp_toolkit.gleam", 58).
-spec add_resource(
mcp_toolkit@core@server:builder(),
mcp_toolkit@core@protocol:resource(),
fun((mcp_toolkit@core@protocol:read_resource_request()) -> {ok,
mcp_toolkit@core@protocol:read_resource_result()} |
{error, binary()})
) -> mcp_toolkit@core@server:builder().
add_resource(Builder, Resource, Handler) ->
mcp_toolkit@core@server:add_resource(Builder, Resource, Handler).
-file("src/mcp_toolkit.gleam", 67).
-spec add_resource_template(
mcp_toolkit@core@server:builder(),
mcp_toolkit@core@protocol:resource_template(),
fun((mcp_toolkit@core@protocol:read_resource_request()) -> {ok,
mcp_toolkit@core@protocol:read_resource_result()} |
{error, binary()})
) -> mcp_toolkit@core@server:builder().
add_resource_template(Builder, Template, Handler) ->
mcp_toolkit@core@server:add_resource_template(Builder, Template, Handler).
-file("src/mcp_toolkit.gleam", 76).
-spec add_tool(
mcp_toolkit@core@server:builder(),
mcp_toolkit@core@protocol:tool(),
gleam@dynamic@decode:decoder(AANK),
fun((mcp_toolkit@core@protocol:call_tool_request(AANK)) -> {ok,
mcp_toolkit@core@protocol:call_tool_result()} |
{error, binary()})
) -> mcp_toolkit@core@server:builder().
add_tool(Builder, Tool, Arguments_decoder, Handler) ->
mcp_toolkit@core@server:add_tool(Builder, Tool, Arguments_decoder, Handler).
-file("src/mcp_toolkit.gleam", 86).
-spec add_prompt(
mcp_toolkit@core@server:builder(),
mcp_toolkit@core@protocol:prompt(),
fun((mcp_toolkit@core@protocol:get_prompt_request()) -> {ok,
mcp_toolkit@core@protocol:get_prompt_result()} |
{error, binary()})
) -> mcp_toolkit@core@server:builder().
add_prompt(Builder, Prompt, Handler) ->
mcp_toolkit@core@server:add_prompt(Builder, Prompt, Handler).
-file("src/mcp_toolkit.gleam", 95).
-spec resource_capabilities(
mcp_toolkit@core@server:builder(),
boolean(),
boolean()
) -> mcp_toolkit@core@server:builder().
resource_capabilities(Builder, Subscribe, List_changed) ->
mcp_toolkit@core@server:resource_capabilities(
Builder,
Subscribe,
List_changed
).
-file("src/mcp_toolkit.gleam", 103).
-spec prompt_capabilities(mcp_toolkit@core@server:builder(), boolean()) -> mcp_toolkit@core@server:builder().
prompt_capabilities(Builder, List_changed) ->
mcp_toolkit@core@server:prompt_capabilities(Builder, List_changed).
-file("src/mcp_toolkit.gleam", 107).
-spec tool_capabilities(mcp_toolkit@core@server:builder(), boolean()) -> mcp_toolkit@core@server:builder().
tool_capabilities(Builder, List_changed) ->
mcp_toolkit@core@server:tool_capabilities(Builder, List_changed).
-file("src/mcp_toolkit.gleam", 111).
-spec enable_logging(mcp_toolkit@core@server:builder()) -> mcp_toolkit@core@server:builder().
enable_logging(Builder) ->
mcp_toolkit@core@server:enable_logging(Builder).
-file("src/mcp_toolkit.gleam", 115).
-spec page_limit(mcp_toolkit@core@server:builder(), integer()) -> mcp_toolkit@core@server:builder().
page_limit(Builder, Page_limit) ->
mcp_toolkit@core@server:page_limit(Builder, Page_limit).
-file("src/mcp_toolkit.gleam", 120).
?DOC(" Finalise the builder into a server that is ready to receive messages.\n").
-spec build(mcp_toolkit@core@server:builder()) -> mcp_toolkit@core@server:server().
build(Builder) ->
mcp_toolkit@core@server:build(Builder).
-file("src/mcp_toolkit.gleam", 126).
?DOC(
" Decode and execute a JSON-RPC MCP message. Returns a response JSON payload\n"
" when needed.\n"
).
-spec handle_message(mcp_toolkit@core@server:server(), binary()) -> {ok,
gleam@option:option(gleam@json:json())} |
{error, gleam@json:json()}.
handle_message(Server, Message) ->
mcp_toolkit@core@server:handle_message(Server, Message).
-file("src/mcp_toolkit.gleam", 134).
?DOC(" Helper to create a transport implementation for the provided configuration.\n").
-spec create_transport(mcp_toolkit@core@transport:transport()) -> {ok,
mcp_toolkit@core@transport:transport_interface()} |
{error, binary()}.
create_transport(Transport_config) ->
mcp_toolkit@core@transport:create_transport(Transport_config).