generate_outline
Analyze code files to generate structural outlines showing classes, functions, and imports for TypeScript, JavaScript, and Python.
Instructions
Generate a code outline for a file, showing its structure (classes, functions, imports, etc). Supports TypeScript/JavaScript and Python files.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to the file to analyze |
Implementation Reference
- src/index.ts:1352-1373 (handler)The primary handler function for the 'generate_outline' MCP tool. It validates the file path and returns a basic outline containing the file name, type (extension), full path, and timestamp.private async handleGenerateOutline(args: any) { const { path: filePath } = args; await this.loggingService.debug('Generating outline for file', { filePath, operation: 'generate_outline' }); try { await this.validateAccess(filePath); const outline = `File: ${path.basename(filePath)} Type: ${path.extname(filePath) || 'unknown'} Path: ${filePath}`; return this.createJsonResponse({ path: filePath, outline, timestamp: new Date().toISOString() }); } catch (error) { throw this.handleFileOperationError(error, 'generate outline', filePath); } }
- src/index.ts:401-413 (schema)Input schema definition for the generate_outline tool in the MCP server capabilities, specifying the required 'path' parameter.generate_outline: { description: 'Generate a code outline for a file, showing its structure (classes, functions, imports, etc). Supports TypeScript/JavaScript and Python files.', inputSchema: { type: 'object', properties: { path: { type: 'string', description: 'Path to the file to analyze' } }, required: ['path'] } }
- src/index.ts:1546-1558 (registration)Tool registration in the ListToolsRequestSchema handler, listing generate_outline with its description and input schema.name: 'generate_outline', description: 'Generate a code outline for a file, showing its structure (classes, functions, imports, etc). Supports TypeScript/JavaScript and Python files.', inputSchema: { type: 'object', properties: { path: { type: 'string', description: 'Path to the file to analyze' } }, required: ['path'] } },
- src/index.ts:1617-1618 (handler)Routing logic in the main CallToolRequestSchema handler that dispatches generate_outline tool calls to the specific handleGenerateOutline method.case 'generate_outline': return await this.handleGenerateOutline(request.params.arguments);
- Supporting helper method in CodeAnalysisService that generates a detailed outline (imports, classes, functions, metrics) matching the tool's description, called by analyzeCode method.private async generateOutline(content: string, language: string): Promise<string> { const metrics = await this.calculateMetrics(content, language); const sections: string[] = []; // Add imports section if (metrics.imports.length > 0) { sections.push('Imports:', ...metrics.imports.map(imp => ` - ${imp}`)); } // Add definitions section if (metrics.definitions.classes.length > 0) { sections.push('\nClasses:', ...metrics.definitions.classes.map(cls => ` - ${cls}`)); } if (metrics.definitions.functions.length > 0) { sections.push('\nFunctions:', ...metrics.definitions.functions.map(func => ` - ${func}`)); } // Add metrics section sections.push('\nMetrics:', ` Lines: ${metrics.lineCount.total} (${metrics.lineCount.code} code, ${metrics.lineCount.comment} comments, ${metrics.lineCount.blank} blank)`, ` Complexity: ${metrics.complexity}`, ` Quality Issues:`, ` - ${metrics.quality.longLines} long lines`, ` - ${metrics.quality.duplicateLines} duplicate lines`, ` - ${metrics.quality.complexFunctions} complex functions` ); return sections.join('\n'); }