From eee62efbf137bf0caac9741975256b929cff4750 Mon Sep 17 00:00:00 2001 From: hzhang Date: Sat, 11 Apr 2026 17:25:33 +0100 Subject: [PATCH] feat: add openclaw origin-name alias to MCP tool descriptions Claude Code sees tools as mcp__openclaw__ but skills/instructions reference the original OpenClaw name (e.g. "memory_search"). Each tool description now includes a disambiguation line: [openclaw tool: ] If any skill or instruction refers to "", this is the tool to call. This ensures Claude can correctly map skill references to the right tool even when the MCP prefix makes the name appear different. Co-Authored-By: Claude Sonnet 4.6 --- src/mcp/openclaw-mcp-server.mjs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mcp/openclaw-mcp-server.mjs b/src/mcp/openclaw-mcp-server.mjs index b24a747..1ec63ad 100644 --- a/src/mcp/openclaw-mcp-server.mjs +++ b/src/mcp/openclaw-mcp-server.mjs @@ -91,11 +91,17 @@ async function handleRequest(msg) { } if (method === "tools/list") { - const tools = toolDefs.map((t) => ({ - name: t.function.name, - description: t.function.description ?? "", - inputSchema: t.function.parameters ?? { type: "object", properties: {} }, - })); + const tools = toolDefs.map((t) => { + const originName = t.function.name; + const baseDesc = t.function.description ?? ""; + const aliasNote = `[openclaw tool: ${originName}] If any skill or instruction refers to "${originName}", this is the tool to call.`; + const description = baseDesc ? `${baseDesc}\n${aliasNote}` : aliasNote; + return { + name: originName, + description, + inputSchema: t.function.parameters ?? { type: "object", properties: {} }, + }; + }); sendResult(id, { tools }); return; }