Packages

Model Context Protocol (MCP) implementation in Elixir with Phoenix integration

Retired package: Release invalid - Accidental version. Use 0.3.0 instead.

Current section

Files

Jump to
backplane_mcp_protocol lib backplane mcp_protocol server configuration_error.ex
Raw

lib/backplane/mcp_protocol/server/configuration_error.ex

defmodule Backplane.McpProtocol.Server.ConfigurationError do
@moduledoc """
Raised when required MCP server configuration is missing or invalid.
The MCP specification requires servers to provide:
- `name`: A human-readable name for the server
- `version`: The server's version string
## Examples
# This will raise an error - missing required options
defmodule BadServer do
use Backplane.McpProtocol.Server # Raises Backplane.McpProtocol.Server.ConfigurationError
end
# This is correct
defmodule GoodServer do
use Backplane.McpProtocol.Server,
name: "My Server",
version: "1.0.0"
end
"""
defexception [:message, :module, :missing_key]
@impl true
def exception(opts) do
module = Keyword.fetch!(opts, :module)
missing_key = Keyword.fetch!(opts, :missing_key)
message = build_message(module, missing_key)
%__MODULE__{
message: message,
module: module,
missing_key: missing_key
}
end
defp build_message(module, :name) do
"""
MCP server configuration error in #{inspect(module)}
Missing required option: :name
The MCP specification requires all servers to provide a name.
Please add the :name option to your use statement:
defmodule #{inspect(module)} do
use Backplane.McpProtocol.Server,
name: "Your Server Name", # <-- Add this
version: "1.0.0"
end
The name should be a human-readable string that identifies your server.
"""
end
defp build_message(module, :version) do
"""
MCP server configuration error in #{inspect(module)}
Missing required option: :version
The MCP specification requires all servers to provide a version.
Please add the :version option to your use statement:
defmodule #{inspect(module)} do
use Backplane.McpProtocol.Server,
name: "Your Server",
version: "1.0.0" # <-- Add this
end
The version should follow semantic versioning (e.g., "1.0.0", "2.1.3").
"""
end
defp build_message(module, :both) do
"""
MCP server configuration error in #{inspect(module)}
Missing required options: :name and :version
The MCP specification requires all servers to provide both name and version.
Please add these options to your use statement:
defmodule #{inspect(module)} do
use Backplane.McpProtocol.Server,
name: "Your Server Name", # <-- Add this
version: "1.0.0" # <-- Add this
end
Example:
defmodule Calculator do
use Backplane.McpProtocol.Server,
name: "Calculator Server",
version: "1.0.0"
end
"""
end
defp build_message(module, key) do
"""
MCP server configuration error in #{inspect(module)}
Invalid or missing required option: #{inspect(key)}
"""
end
end