BerriAI/litellm · error · HTTPException

mcp_required_fields contains unknown field names: {unknown}.

Error message

mcp_required_fields contains unknown field names: {unknown}. Check general_settings.mcp_required_fields in your proxy config.

What it means

Error "mcp_required_fields contains unknown field names: {unknown}. Check general_settings.mcp_required_fields in your proxy config." thrown in BerriAI/litellm.

Source

Thrown at litellm/proxy/management_endpoints/mcp_management_endpoints.py:287

        payload.oauth2_flow = "client_credentials" if has_m2m_shape else "authorization_code"

    _VALID_MCP_REQUIRED_FIELDS: Final[frozenset] = frozenset(NewMCPServerRequest.model_fields)

    def _validate_mcp_required_fields(payload: NewMCPServerRequest) -> None:
        """Validate submission payload against admin-configured mcp_required_fields."""
        from litellm.proxy.proxy_server import (
            general_settings as proxy_general_settings,
        )

        required_fields: Final[list[str] | None] = proxy_general_settings.get("mcp_required_fields")
        if not required_fields:
            return

        # Fail fast on unknown field names — a typo in the config would silently
        # block every submission with a confusing "missing fields" error.
        unknown: Final = [f for f in required_fields if f not in _VALID_MCP_REQUIRED_FIELDS]
        if unknown:
            raise HTTPException(
                status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
                detail={
                    "error": f"mcp_required_fields contains unknown field names: {unknown}. "
                    "Check general_settings.mcp_required_fields in your proxy config."
                },
            )

        # Mirror the UI's compliance checks (MCPStandardsSettings.tsx FIELD_GROUPS):
        # auth_type requires a real value — "none" is treated as absent.
        _AUTH_TYPE_SENTINEL: Final = "none"

        def _field_present(field_name: str) -> bool:
            value: Final = getattr(payload, field_name, None)
            if value is None:
                return False
            # Treat empty string and empty list as absent (mirrors UI compliance check)
            if isinstance(value, (str, list)) and not value:
                return False

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Remove the unknown field names from general_settings.mcp_required_fields in the proxy config.
  2. Check the documentation for the supported MCP required field names.

When it happens

Trigger: Thrown at litellm/proxy/management_endpoints/mcp_management_endpoints.py:287 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18). Data as JSON: /api/errors/71e6047e686d4482. Report an issue: GitHub.