.. include:: /Includes.rst.txt .. _administration-mcp-servers: =========== MCP servers =========== The :guilabel:`MCP Servers` module (admin-only) connects agent runs to tools offered by an external `Model Context Protocol `__ server — a translation service, a ticket system, any MCP-speaking backend. How it works ============ 1. **Configure a server** — endpoint, authentication, the class of data its tools may see, and whether its tools need human approval. A server that declares no data class supplies **nothing**: there is no default anybody silently inherits (fail-closed, :ref:`ADR-113 `). 2. **Import its catalogue** — an explicit action that fetches the tools the server advertises. Import is the only network call that happens outside an agent run; nothing talks to the server just because a page rendered. Tool input schemas are normalised into the supported subset on import; a tool whose schema cannot be expressed is skipped rather than silently weakened. 3. **Enable individual tools** — imported tools start disabled and are switched on one by one, exactly like the builtin tools in the :ref:`Tools module `. Guard rails =========== - Remote tools always require an administrator, and count as non-idempotent **writes** — unconditionally, whatever the server's catalogue says about them: they are never replayed on a retry, and never waved through the trust-zone gate in observe mode. That the classification cannot be argued down from the far side is what makes the setting below the only place the question is answered. - :guilabel:`Requires approval` decides whether an agent run stops and waits for a person before it calls any tool of this server. It is on for a newly configured server: what a remote tool actually does cannot be inspected from here, and the server's own annotations do not get to answer the question about themselves (:ref:`ADR-134 `). Switch it off per server once you know what its tools do. This holds for every server, including one configured before the setting existed: an update leaves it requiring approval, and nothing switches that off on your behalf. - The number of remote calls one run may make is bounded (default: 20) — a remote call crosses the network while a backend user waits, and nothing else limits how many a model asks for at once. See :ref:`ADR-116 ` for the design rationale.