alibaba/nacos · error · IllegalArgumentException
URL is blank
Error message
URL is blank
What it means
Thrown by McpExternalDataAdaptor.fetchOfficialRegistryPage when the supplied registry URL is blank. The method is the entry point for fetching one page from the official MCP registry and requires a non-empty URL. It is an IllegalArgumentException.
Source
Thrown at ai/src/main/java/com/alibaba/nacos/ai/service/McpExternalDataAdaptor.java:141
throw new IllegalArgumentException("Unsupported import type: " + externalDataTypeEnum);
}
}
/**
* Fetch one official MCP registry page and adapt it to Nacos MCP server detail info.
*
* @param urlData registry endpoint
* @param cursor page cursor
* @param limit page size
* @param search search keyword
* @return adapted page result
* @throws Exception if registry fetch or adaptation failed
*/
public UrlPageResult fetchOfficialRegistryPage(String urlData, String cursor, Integer limit,
String search)
throws Exception {
if (StringUtils.isBlank(urlData)) {
throw new IllegalArgumentException("URL is blank");
}
return fetchUrlPage(urlData.trim(), cursor, limit, search);
}
/**
* Fetch one official MCP registry server by name or generated id.
*
* @param urlData registry endpoint
* @param externalId selected server name or generated id
* @param limit search page size
* @return adapted MCP server detail
* @throws Exception if registry fetch or adaptation failed
*/
public McpServerDetailInfo fetchOfficialRegistryServer(String urlData, String externalId,
int limit) throws Exception {
if (StringUtils.isBlank(externalId)) {
throw new IllegalArgumentException("MCP server external id is blank");
}View on GitHub (pinned to 9b989acdf1)
Solutions
- Supply a non-blank registry base URL (e.g. the official MCP registry endpoint).
- Read the URL from a validated config property and fail fast at startup if blank.
- Guard the call with a StringUtils.isNotBlank(urlData) check and a clear config error.
Example fix
// before
adaptor.fetchOfficialRegistryPage("", cursor, 30, null); // blank -> error
// after
String registry = requireNonBlank(config.getRegistryUrl(), "registryUrl");
adaptor.fetchOfficialRegistryPage(registry, cursor, 30, null); Defensive patterns
Strategy: validation
Validate before calling
if (StringUtils.isBlank(urlData)) { throw new IllegalArgumentException("registry URL is required"); } Type guard
boolean hasRegistryUrl(String u) { return u != null && !u.trim().isEmpty(); } Try / catch
try { adaptor.fetchOfficialRegistryPage(url, c, l, s); }
catch (IllegalArgumentException e) { reportMissingConfig("registryUrl"); } Prevention
- Load and validate the registry URL from config at startup.
- Never pass a placeholder/empty string to the fetch method.
When it happens
Trigger: Calling fetchOfficialRegistryPage(urlData, ...) with a null, empty, or whitespace-only urlData string.
Common situations: Configuration missing the registry base URL; environment variable for the registry endpoint not set; caller passes a placeholder that was never replaced.
Related errors
- MCP server external id is blank
- Unsupported import type: ${externalDataTypeEnum}
- 10000
- 20002
- MCP server not found in registry: ${externalId}
AI-assisted analysis of alibaba/nacos@9b989acdf1 (2026-08-14).
Data as JSON: /api/errors/6c06fdd885f4a326.
Report an issue: GitHub.