mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2026-01-30 07:32:22 +08:00
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
/**
|
|
* Builds a valid JavaScript function name for MCP tool calls.
|
|
* Format: mcp__{server_name}__{tool_name}
|
|
*
|
|
* @param serverName - The MCP server name
|
|
* @param toolName - The tool name from the server
|
|
* @returns A valid JS identifier in format mcp__{server}__{tool}, max 63 chars
|
|
*/
|
|
export function buildFunctionCallToolName(serverName: string, toolName: string): string {
|
|
// Sanitize to valid JS identifier chars (alphanumeric + underscore only)
|
|
const sanitize = (str: string): string =>
|
|
str
|
|
.trim()
|
|
.replace(/[^a-zA-Z0-9]/g, '_') // Replace all non-alphanumeric with underscore
|
|
.replace(/_{2,}/g, '_') // Collapse multiple underscores
|
|
.replace(/^_+|_+$/g, '') // Trim leading/trailing underscores
|
|
|
|
const server = sanitize(serverName).slice(0, 20) // Keep server name short
|
|
const tool = sanitize(toolName).slice(0, 35) // More room for tool name
|
|
|
|
let name = `mcp__${server}__${tool}`
|
|
|
|
// Ensure max 63 chars and clean trailing underscores
|
|
if (name.length > 63) {
|
|
name = name.slice(0, 63).replace(/_+$/, '')
|
|
}
|
|
|
|
return name
|
|
}
|