Skip to main content
Glama

smart_refactor

Refactor code efficiently by renaming symbols across multiple files with intelligent search and replace, streamlining code maintenance and updates.

Instructions

Intelligently refactor code by renaming symbols across multiple files

Input Schema

NameRequiredDescriptionDefault
filesYesList of files to search and refactor
newNameYesThe new symbol name
oldNameYesThe symbol name to replace

Input Schema (JSON Schema)

{ "properties": { "files": { "description": "List of files to search and refactor", "type": "array" }, "newName": { "description": "The new symbol name", "type": "string" }, "oldName": { "description": "The symbol name to replace", "type": "string" } }, "required": [ "files", "oldName", "newName" ], "type": "object" }

Implementation Reference

  • Main handler function that implements the smart_refactor tool logic: searches for oldName regex in affected files using filesystem, identifies files with matches, and performs multi-file replacement using edit manager.
    case 'smart_refactor': // Use file system to find occurrences, then Edit for precision const searchResults = await Promise.all( operation.affectedFiles.map(file => this.fileSystemManager.findInFile( file, new RegExp(operation.params.oldName, 'g') ) ) ); // If we found occurrences, use Edit to refactor const filesToEdit = operation.affectedFiles.filter((file, index) => searchResults[index].length > 0); if (filesToEdit.length > 0) { return this.editInstanceManager.coordinateMultiFileEdit({ files: filesToEdit, operation: { type: 'replace', params: { pattern: operation.params.oldName, replacement: operation.params.newName } } }); } return { message: 'No occurrences found to refactor' };
  • src/index.ts:335-362 (registration)
    Registers the smart_refactor tool with the MCP server, defining its metadata, input schema, and annotations.
    mcpServer.registerTool({ name: 'smart_refactor', description: 'Intelligently refactor code by renaming symbols across multiple files', inputSchema: { type: 'object', properties: { files: { type: 'array', description: 'List of files to search and refactor' }, oldName: { type: 'string', description: 'The symbol name to replace' }, newName: { type: 'string', description: 'The new symbol name' } }, required: ['files', 'oldName', 'newName'] }, annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false } });
  • Input schema definition for the smart_refactor tool, specifying parameters: files (array), oldName (string), newName (string).
    inputSchema: { type: 'object', properties: { files: { type: 'array', description: 'List of files to search and refactor' }, oldName: { type: 'string', description: 'The symbol name to replace' }, newName: { type: 'string', description: 'The new symbol name' } }, required: ['files', 'oldName', 'newName'] },
  • Classifies 'smart_refactor' as a hybrid operation in the complexity analyzer, leading to medium complexity and hybrid executor.
    const hybridOperations = [ 'smart_refactor', 'validate_and_edit', 'backup_and_edit', 'atomic_multi_file_edit'

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mixelpixx/microsoft-edit-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server