Packages
Model Context Protocol (MCP) implementation in Elixir with Phoenix integration
Current section
Files
Jump to
Current section
Files
lib/backplane/mcp_protocol/protocol/v2025_06_18.ex
# credo:disable-for-this-file Credo.Check.Readability.ModuleNames
defmodule Backplane.McpProtocol.Protocol.V2025_06_18 do
@moduledoc """
Protocol implementation for MCP specification version 2025-06-18.
Builds on 2025-03-26, adding:
- Elicitation support
- Structured tool output (`structuredContent`)
- Tool output schemas
- Model preferences in sampling
- Embedded resources in prompts and tools
- `resource_link` content type
- `MCP-Protocol-Version` header required
- Removed JSON-RPC batching
"""
@behaviour Backplane.McpProtocol.Protocol.Behaviour
alias Backplane.McpProtocol.Protocol.V2025_03_26
@version "2025-06-18"
@base_features V2025_03_26.supported_features()
@features [
:elicitation,
:structured_tool_results,
:tool_output_schemas,
:model_preferences,
:embedded_resources_in_prompts,
:embedded_resources_in_tools
| @base_features
]
@request_methods ["elicitation/create" | V2025_03_26.request_methods()]
@notification_methods V2025_03_26.notification_methods()
@elicitation_create_params %{
"message" => {:required, :string},
"requestedSchema" => {:required, {:custom, &Backplane.McpProtocol.MCP.ElicitationSchema.validate/1}}
}
@impl true
def version, do: @version
@impl true
def supported_features, do: @features
@impl true
def request_methods, do: @request_methods
@impl true
def notification_methods, do: @notification_methods
@impl true
def progress_params_schema do
V2025_03_26.progress_params_schema()
end
@impl true
def request_params_schema("elicitation/create"), do: @elicitation_create_params
def request_params_schema(method) do
V2025_03_26.request_params_schema(method)
end
@impl true
def notification_params_schema(method) do
V2025_03_26.notification_params_schema(method)
end
end