BerriAI/litellm · error · HTTPException

Submission is missing required fields: {missing}. Configure

Error message

Submission is missing required fields: {missing}. Configure required fields via general_settings.mcp_required_fields.

What it means

Generic guard in _validate_mcp_required_fields: the submitted MCP server payload omits one or more fields listed in general_settings.mcp_required_fields. The check mirrors the UI's FIELD_GROUPS compliance rules, so None, empty string, empty list, and auth_type equal to the 'none' sentinel all count as absent — a payload that superficially looks populated can still fail.

Source

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

        # 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
            if field_name == "auth_type" and value == _AUTH_TYPE_SENTINEL:
                return False
            return True

        missing: Final = [f for f in required_fields if not _field_present(f)]
        if missing:
            raise HTTPException(
                status_code=status.HTTP_400_BAD_REQUEST,
                detail={
                    "error": f"Submission is missing required fields: {missing}. "
                    "Configure required fields via general_settings.mcp_required_fields."
                },
            )

    def _is_public_registry_enabled() -> bool:
        from litellm.proxy.proxy_server import (
            general_settings as proxy_general_settings,
        )

        return bool(proxy_general_settings.get("enable_mcp_registry"))

    def _build_registry_remote_url(base_url: str, path: str) -> str:
        normalized_base: Final = base_url.rstrip("/")
        normalized_path: Final = path if path.startswith("/") else f"/{path}"
        return f"{normalized_base}{normalized_path}"

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Include all required fields listed in the error in your submission.
  2. Ask the proxy admin to review general_settings.mcp_required_fields if the requirements are wrong.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at litellm/proxy/management_endpoints/mcp_management_endpoints.py:312 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/a393afcead36d287. Report an issue: GitHub.