{"record":{"id":"5f9999e774fdf286","repo":"alibaba/spring-ai-alibaba","slug":"mcp-server-servercode-not-found","errorCode":null,"errorMessage":"MCP Server [${serverCode}] not found!","messagePattern":"MCP Server \\[(.+?)\\] not found!","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/builder/generator/service/generator/workflow/sections/MCPNodeSection.java","lineNumber":63,"sourceCode":"\n\t@Override\n\tpublic boolean support(NodeType nodeType) {\n\t\treturn NodeType.MCP.equals(nodeType);\n\t}\n\n\t@Override\n\tpublic String render(Node node, String varName) {\n\t\tif (this.mcpServerService == null) {\n\t\t\tthrow new IllegalArgumentException(\n\t\t\t\t\t\"The current mode does not support Studio's MCP node code generation. Please start the complete StudioApplication class\");\n\t\t}\n\t\tMCPNodeData nodeData = (MCPNodeData) node.getData();\n\n\t\tRequestContext context = RequestContextHolder.getRequestContext();\n\t\tMcpServerEntity mcpServerEntity = mcpServerService.getMcpByCode(context.getWorkspaceId(),\n\t\t\t\tnodeData.getServerCode(), null);\n\t\tif (mcpServerEntity == null) {\n\t\t\tthrow new IllegalArgumentException(\"MCP Server [\" + nodeData.getServerCode() + \"] not found!\");\n\t\t}\n\n\t\tMcpServerDeployConfig deployConfig = JsonUtils.fromJson(mcpServerEntity.getDeployConfig(),\n\t\t\t\tMcpServerDeployConfig.class);\n\t\tString endPoint = deployConfig.getRemoteEndpoint();\n\t\tString baseUri = deployConfig.getRemoteAddress();\n\n\t\treturn String.format(\"\"\"\n\t\t\t\t// -- MCP Node [%s] --\n\t\t\t\tstateGraph.addNode(\"%s\", AsyncNodeAction.node_async(\n\t\t\t\t    createMcpNodeAction(%s, %s, %s, %s, %s, %s)\n\t\t\t\t));\n\n\t\t\t\t\"\"\", nodeData.getServerName(), varName, ObjectToCodeUtil.toCode(baseUri),\n\t\t\t\tObjectToCodeUtil.toCode(endPoint), ObjectToCodeUtil.toCode(nodeData.getToolName()),\n\t\t\t\tObjectToCodeUtil.toCode(nodeData.getInputJsonTemplate()),\n\t\t\t\tObjectToCodeUtil.toCode(nodeData.getInputKeys()), ObjectToCodeUtil.toCode(nodeData.getOutputKey()));\n\t}","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/alibaba/spring-ai-alibaba/blob/f82da0b50f35744c13968191be2b1cd2452ef550/spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/builder/generator/service/generator/workflow/sections/MCPNodeSection.java#L45-L81","documentation":"MCPNodeSection.render looks up the MCP server entity by workspaceId and the node's serverCode. If no matching McpServerEntity exists, render throws IllegalArgumentException naming the missing server code.","triggerScenarios":"An MCP node references serverCode X, but getMcpByCode(workspaceId, X, null) returns null — the server is not registered in the workspace's MCP server store.","commonSituations":"Server deleted or renamed in Studio after the workflow referenced it; copying workflows across workspaces where the MCP server doesn't exist; typo in serverCode in the DSL.","solutions":["Create or re-register the MCP server with the referenced code in the same workspace","Fix the serverCode on the MCP node data to match an existing server","Switch the workspace context to the one containing the MCP server"],"exampleFix":"// before\n\"serverCode\": \"weather_tool\" // not registered\n// after\n\"serverCode\": \"amap-weather\" // registered in this workspace","handlingStrategy":"validation","validationCode":"boolean exists = mcpServerService.getMcpByCode(workspaceId, nodeData.getServerCode(), null) != null; if (!exists) { throw new IllegalArgumentException(\"Referenced MCP server missing: \" + nodeData.getServerCode()); }","typeGuard":"null","tryCatchPattern":"try { section.render(node, varName); } catch (IllegalArgumentException e) { log.error(\"{} — re-register the MCP server or fix serverCode\", e.getMessage()); }","preventionTips":["Validate serverCode references at workflow save time","Block deletion of MCP servers still referenced by workflows","Re-map server codes when copying workflows between workspaces"],"tags":["java","mcp","not-found","workspace"],"backgroundTag":"record-not-found","analyzedSha":"f82da0b50f35744c13968191be2b1cd2452ef550","analyzedAt":"2026-09-09T15:32:42.421Z","contentChangedAt":"2026-09-09T15:32:42.421Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}