# `GEPA.Adapters.MCP.Client`
[🔗](https://github.com/nshkrdotcom/gepa_ex/blob/v0.3.0/lib/gepa/adapters/mcp/client.ex#L1)

Minimal MCP client behaviour for GEPA's Elixir adapter layer.

The actual Model Context Protocol transport can be supplied by a caller.  For
unit tests and local optimization, `GEPA.Adapters.MCP.Client.Static` provides a
deterministic in-memory implementation.

# `tool`

```elixir
@type tool() :: %{required(String.t()) =&gt; term()} | %{required(atom()) =&gt; term()}
```

# `call_tool`

```elixir
@callback call_tool(term(), String.t(), map()) :: {:ok, term()} | {:error, term()}
```

# `list_tools`

```elixir
@callback list_tools(term()) :: {:ok, [tool()]} | {:error, term()}
```

# `call_tool`

```elixir
@spec call_tool(term(), String.t(), map()) :: {:ok, term()} | {:error, term()}
```

# `create`

```elixir
@spec create(keyword() | map()) :: term()
```

Create a dependency-free MCP client transport config.

# `list_tools`

```elixir
@spec list_tools(term()) :: {:ok, [tool()]} | {:error, term()}
```

---

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