Excessibility.MCP.Prompt behaviour (Excessibility v0.14.0)

View Source

Behaviour for MCP prompts.

Prompts are reusable prompt templates that can be retrieved and filled with arguments.

Example

defmodule MyApp.MCP.Prompts.FixIssue do
  @behaviour Excessibility.MCP.Prompt

  @impl true
  def name, do: "fix-issue"

  @impl true
  def description, do: "Generate a prompt for fixing accessibility issues"

  @impl true
  def arguments do
    [
      %{
        "name" => "issue",
        "description" => "The accessibility issue to fix",
        "required" => true
      },
      %{
        "name" => "element",
        "description" => "The HTML element causing the issue",
        "required" => false
      }
    ]
  end

  @impl true
  def get(args) do
    issue = Map.get(args, "issue", "unknown issue")
    element = Map.get(args, "element")

    content = if element do
      "Fix this accessibility issue: #{issue}\n\nElement: #{element}"
    else
      "Fix this accessibility issue: #{issue}"
    end

    {:ok, %{
      "messages" => [
        %{
          "role" => "user",
          "content" => %{
            "type" => "text",
            "text" => content
          }
        }
      ]
    }}
  end
end

Callbacks

  • name/0 - String identifier for this prompt
  • description/0 - Human-readable description
  • arguments/0 - List of argument definitions
  • get/1 - Returns the prompt content given arguments

Summary

Functions

Formats a prompt get result for MCP response.

Returns MCP prompt definition for a prompt module.

Callbacks

arguments()

@callback arguments() :: [map()]

description()

@callback description() :: String.t()

get(args)

@callback get(args :: map()) :: {:ok, map()} | {:error, String.t()}

name()

@callback name() :: String.t()

Functions

format_result(arg)

Formats a prompt get result for MCP response.

to_mcp_definition(prompt_module)

Returns MCP prompt definition for a prompt module.