# `MCPKit.Definition`
[🔗](https://github.com/mcostasilva/mcp_kit/blob/v0.2.4/lib/mcp_kit/definition.ex#L1)

Host application contract for MCP runtime configuration.

`MCPKit` owns the MCP transport version and exposes it through
`MCPKit.Definition.protocol_version/0`.

`policy/0` is optional. When omitted, the built-in allow-all policy is used.

# `instructions`
*optional* 

```elixir
@callback instructions() :: String.t()
```

Returns optional server instructions included in the `initialize` response.

When omitted, `MCPKit` does not include an `instructions` field.

# `policy`
*optional* 

```elixir
@callback policy() :: module()
```

Returns the `MCPKit.Policy` implementation used for request-time access checks.

When omitted, the built-in allow-all policy is used.

# `server_info`

```elixir
@callback server_info() :: map()
```

Returns the MCP server information map sent during `initialize`.

The map is serialized directly into the JSON-RPC response and typically
includes at least a server name and version.

# `session_store`

```elixir
@callback session_store() :: module()
```

Returns the `MCPKit.SessionStore` implementation used for durable sessions.

# `protocol_version`

Returns the protocol version currently implemented by `mcp_kit`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
