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

MCP tool-use adapter.

The adapter optimizes tool descriptions/system prompts for tasks that require
a model to choose and call MCP tools.  It supports dependency-free testing via
`GEPA.Adapters.MCP.Client.Static`, while the transport boundary is represented
by `GEPA.Adapters.MCP.Client`.

# `t`

```elixir
@type t() :: %GEPA.Adapters.MCP{
  answer_generator: term(),
  base_system_prompt: term(),
  client: term(),
  enable_two_pass: term(),
  failure_score: term(),
  metric_fn: term(),
  model: term(),
  remote_headers: term(),
  remote_transport: term(),
  remote_url: term(),
  scoring_fn: term(),
  server_params: term(),
  task_model: term(),
  tool_names: term(),
  tool_selector: term(),
  two_pass?: term()
}
```

# `build_system_prompt`

```elixir
@spec build_system_prompt(t(), map(), [map()]) :: String.t()
```

Build the tool-use system prompt for a candidate and available tool schemas.

# `extract_tool_response`

```elixir
@spec extract_tool_response(term()) :: String.t()
```

Extract a plain-text result from common MCP tool response shapes.

# `generate_tool_feedback`

```elixir
@spec generate_tool_feedback(map() | GEPA.Adapters.MCP.Trajectory.t(), number()) ::
  String.t()
```

Generate reflective feedback for an MCP tool-use trajectory.

# `new`

```elixir
@spec new(keyword() | map()) :: t()
```

---

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