-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", 40). ?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", 44). -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", 48). -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", 52). -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", 61). -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", 70). -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", 80). -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", 89). -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", 97). -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", 101). -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", 105). -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", 109). -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", 114). ?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", 120). ?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", 128). ?DOC(" Helper to create a transport implementation for the provided configuration.\n"). -spec create_transport(mcp_toolkit@transport@interface:transport()) -> {ok, mcp_toolkit@transport@interface:transport_interface()} | {error, binary()}. create_transport(Transport_config) -> mcp_toolkit@transport@interface:create_transport(Transport_config).