.. index:: single: mcp_server_spec_protocol .. _mcp_server_spec_protocol/0: .. rst-class:: right **protocol** ``mcp_server_spec_protocol`` ============================ Protocol for MCP server spec (aka data layer) handlers independent of transport. A handler validates and dispatches JSON-RPC messages and returns abstract outcomes that a transport (stdio or Streamable HTTP) renders to the wire. | **Availability:** | ``logtalk_load(mcp_server(loader))`` | **Author:** Paulo Moura | **Version:** 1:0:0 | **Date:** 2026-08-31 | **Compilation flags:** | ``static`` | **Dependencies:** | (none) | **Remarks:** | (none) | **Inherited public predicates:** | (none) .. contents:: :local: :backlinks: top Public predicates ----------------- .. index:: spec/1 .. _mcp_server_spec_protocol/0::spec/1: ``spec/1`` ^^^^^^^^^^ MCP server spec implemented by this handler (e.g. ``'2025-06-18'`` or ``'2026-07-28'``). | **Compilation flags:** | ``static`` | **Template:** | ``spec(Version)`` | **Mode and number of proofs:** | ``spec(-atom)`` - ``one`` ------------ .. index:: prepare/2 .. _mcp_server_spec_protocol/0::prepare/2: ``prepare/2`` ^^^^^^^^^^^^^ Initializes handler state for ``Application`` with merged ``Options``. Does not open any transport. | **Compilation flags:** | ``static`` | **Template:** | ``prepare(Application,Options)`` | **Mode and number of proofs:** | ``prepare(+object_identifier,+list)`` - ``one_or_error`` | **Exceptions:** | ``Options`` is a variable: | ``instantiation_error`` | ``Options`` is neither a variable nor a list: | ``type_error(list,Options)`` | An element ``Option`` of the list ``Options`` is a variable: | ``instantiation_error`` | An element ``Option`` of the list ``Options`` is neither a variable nor a compound term: | ``type_error(compound,Option)`` | An element ``Option`` of the list ``Options`` is a compound term but not a valid option: | ``domain_error(option,Option)`` ------------ .. index:: handle_message/3 .. _mcp_server_spec_protocol/0::handle_message/3: ``handle_message/3`` ^^^^^^^^^^^^^^^^^^^^ Handles one JSON-RPC Message under Options and returns an Outcome for the transport to render. Outcomes include ``reply(JsonRpcTerm)``, ``accepted``, ``no_reply``, and transport-agnostic error replies already encoded as JSON-RPC error objects inside ``reply/1``. | **Compilation flags:** | ``static`` | **Template:** | ``handle_message(Message,Options,Outcome)`` | **Mode and number of proofs:** | ``handle_message(+nonvar,+list,-nonvar)`` - ``one`` ------------ .. index:: notify/1 .. _mcp_server_spec_protocol/0::notify/1: ``notify/1`` ^^^^^^^^^^^^ Publishes an application event. Transports that support server-initiated notifications deliver it; others may ignore it. | **Compilation flags:** | ``static`` | **Template:** | ``notify(Event)`` | **Mode and number of proofs:** | ``notify(+compound)`` - ``zero_or_one`` ------------ .. index:: cleanup/0 .. _mcp_server_spec_protocol/0::cleanup/0: ``cleanup/0`` ^^^^^^^^^^^^^ Releases handler-owned dynamic state. | **Compilation flags:** | ``static`` | **Mode and number of proofs:** | ``cleanup`` - ``one`` ------------ Protected predicates -------------------- (none) Private predicates ------------------ (none) Operators --------- (none)