fix(frontend/mcp): Ensure MCP block title persists across save/refresh

When the MCP server returns a null server_name, fall back to the URL
hostname so customized_name is always set in metadata. This prevents
the title from degrading to "MCP:" after save and reload.
This commit is contained in:
Zamil Majdy
2026-02-10 15:31:29 +04:00
parent 8bea7cf875
commit 4d4ed562f0
2 changed files with 15 additions and 6 deletions

View File

@@ -65,18 +65,28 @@ export const Block: BlockComponent = ({
const handleMCPToolConfirm = useCallback(
(result: MCPToolDialogResult) => {
// Derive a display label: prefer server name, fall back to URL hostname.
let serverLabel = result.serverName;
if (!serverLabel) {
try {
serverLabel = new URL(result.serverUrl).hostname;
} catch {
serverLabel = "MCP";
}
}
const customNode = addBlockAndCenter(blockData, {
server_url: result.serverUrl,
server_name: result.serverName,
server_name: serverLabel,
selected_tool: result.selectedTool,
tool_input_schema: result.toolInputSchema,
available_tools: result.availableTools,
credentials: result.credentials ?? undefined,
});
// Persist the MCP title as customized_name in metadata so it survives
// save/load even if server_name is stripped from input_default.
if (customNode && result.serverName && result.selectedTool) {
const title = `${result.serverName}: ${beautifyString(result.selectedTool)}`;
// save/load even if server_name is pruned from input_default.
if (customNode && result.selectedTool) {
const title = `${serverLabel}: ${beautifyString(result.selectedTool)}`;
updateNodeData(customNode.id, {
metadata: {
...customNode.data.metadata,

View File

@@ -49,8 +49,7 @@ export function CredentialsSelect({
// When credentials exist and nothing is explicitly selected,
// default to the first credential instead of "None"
const effectiveCredential =
selectedCredential ??
(credentials.length > 0 ? credentials[0] : null);
selectedCredential ?? (credentials.length > 0 ? credentials[0] : null);
const displayCredential = effectiveCredential
? {