CHANGELOG
=========

0.13
----

 * Add support for multiple MCP servers per application, configured under `servers:` — each with its own
   identity, transports, session store, HTTP route and set of exposed capabilities
 * Add a required per-server `registry:` option listing what the server exposes — either one list covering
   every kind or a map of `tools`, `prompts`, `resources`, `resource_templates` and `apps` — matching service
   ids, class names, namespace prefixes or `*`, replacing the implicit "every element on the one server"
 * Add `clients:` configuration to act as an MCP client: each named client owns a set of remote `servers:`
   reached over the stdio or HTTP transport
 * Add `Symfony\AI\McpBundle\Client\McpClientInterface` (service `mcp.client.<name>`) and
   `Symfony\AI\McpBundle\Client\ServerConnectionInterface` (service `mcp.client.<name>.server.<server>`),
   which own the connection lifecycle: connecting on first use and disconnecting on kernel reset
 * Drop `client` suffix on alias for argument injection of `McpClientInterface`
 * Add `Symfony\AI\McpBundle\Client\ServerConnectionInterface::complete()`, forwarding `completion/complete`
   so a client can ask a remote server to complete a prompt or resource-template argument
 * Add `--clients` and `--client` options to `debug:mcp`, which now covers both sides of the bundle:
   the configured servers and what the configured clients reach
 * Add a `--server` option to `debug:mcp` and a server argument to `mcp:server`
 * Add support for the 2026-07-28 revision, served on the same endpoint as the handshake era: the SDK
   classifies each request and routes it to the lifecycle it belongs to
 * Add `servers.<name>.protocol_versions` narrowing the revisions a server answers for; left unset it
   inherits the SDK's own support in both eras
 * Add `servers.<name>.request_state` to sign the state a multi-round-trip answer carries through the client
 * Add `servers.<name>.cache` for the cache hints the modern-era leg puts on its answers, with per-method overrides
 * Add `servers.<name>.subscriptions` configuring delivery for `subscriptions/listen` streams
 * Add the `clients.<name>.roots` option pointing at a `RootsCallbackInterface` service, replacing the
   `capabilities.roots` flag, and add `getProtocolVersion()` and `sendRootsListChanged()` on
   `ServerConnectionInterface`

0.12
----

 * Register tools, prompts, resources, and resource templates via container instead of the SDK's file-based discovery
 * Add `debug:mcp` command listing the registered MCP capabilities with their handlers
 * Show MCP capabilities (including their handlers) in the profiler panel on every request, not only on requests serving MCP

0.11
----

 * Add `http.allowed_hosts` configuration to allow custom hosts or disable the DNS rebinding protection when exposing a public MCP server
 * Add MCP Apps support via the `#[AsMcpApp]`/`#[AsMcpAppTool]` attributes: interactive HTML UI resources
   whose tools return a context array the bundle renders server-side with Twig (HTML-over-the-wire);
   configurable via `mcp.apps.enabled`

0.8
---

 * Add `framework` session store backed by Symfony's `SessionHandlerInterface`

0.4
---

 * Add `ResetInterface` support to `TraceableRegistry` to clear collected data between requests

0.3
---

 * Add support for server description, icons, and website URL

0.1
---

 * Add the bundle
