{% extends "admin/_layout.html" %} {% from "_macros.html" import icon %} {% set section = "mcp" %} {% block title %}{{ t("MCP servers") }} - {{ brand.name }}{% endblock %} {% block heading %}{{ t("MCP servers") }}{% endblock %} {% block admin_content %}

{{ tm("Remote servers speaking the Model Context Protocol over HTTP. Their tools are offered beside the built-in ones to models marked %(mcp)s. The list of tools is discovered and cached — press %(button)s after adding one, and again whenever the server changes.", mcp=t("MCP servers"), button=t("Test & refresh")) }}

{{ icon("shield", "icon--sm") }} {{ t("A server's tool names and descriptions are sent to the model as instructions, and what it returns is read back as fact. Add servers you trust, the way you would a dependency.") }}
{% if saved %}
{{ icon("check", "icon--sm") }} {{ saved }}
{% endif %}
{{ icon("plus", "icon--sm") }} {{ t("Add a server") }}
{% if not servers %}
{{ icon("server", "empty__mark") }}

{{ t("No servers yet. You will need the URL of an MCP endpoint that speaks streamable HTTP — local ones launched as a subprocess are not supported.") }}

{% else %}
{% for server in servers %} {% with tool_count = counts[server.id] %} {% include "admin/_mcp_row.html" %} {% endwith %} {% endfor %}
{% endif %} {% endblock %}