UNPKG

mcp-ai-agent-guidelines

Version:

A comprehensive Model Context Protocol server providing advanced tools, resources, and prompts for implementing AI agent best practices

103 lines (98 loc) 4.15 kB
import { z } from "zod"; import { analyzeCode, buildDependenciesSection, buildPatternsSection, buildStructureSection, buildSymbolsSection, detectLanguage, generateInsights, generateRecommendations, } from "./semantic-analyzer/index.js"; import { handleToolError } from "./shared/error-handler.js"; import { buildFurtherReadingSection, buildMetadataSection, } from "./shared/prompt-utils.js"; const SemanticCodeAnalyzerSchema = z.object({ codeContent: z .string() .describe("Code content to analyze. Example: TypeScript class with dependencies, Python module with imports, or any code snippet with symbols and structure"), language: z .string() .optional() .describe("Programming language (auto-detected if not provided). Examples: 'typescript', 'python', 'javascript', 'go', 'rust'"), analysisType: z .enum(["symbols", "structure", "dependencies", "patterns", "all"]) .default("all") .describe("Type of semantic analysis to perform. Examples: 'symbols' (functions, classes), 'dependencies' (imports, references), 'patterns' (design patterns), 'all' (comprehensive)"), includeReferences: z .boolean() .optional() .default(false) .describe("Include external reference links. Example: true"), includeMetadata: z .boolean() .optional() .default(false) .describe("Include metadata section. Example: true"), inputFile: z .string() .optional() .describe("Optional input file path. Example: 'src/services/UserService.ts'"), }); export async function semanticCodeAnalyzer(args) { try { const input = SemanticCodeAnalyzerSchema.parse(args); const language = input.language || detectLanguage(input.codeContent); const analysis = analyzeCode(input.codeContent, language, input.analysisType); const metadata = input.includeMetadata ? buildMetadataSection({ sourceTool: "mcp_ai-agent-guid_semantic-code-analyzer", inputFile: input.inputFile, }) : ""; const references = input.includeReferences ? buildSemanticReferences() : ""; return { content: [ { type: "text", text: `## 🔍 Semantic Code Analysis ${metadata} ### 📊 Analysis Summary | Aspect | Details | |---|---| | Language | ${language} | | Analysis Type | ${input.analysisType} | | Lines of Code | ${input.codeContent.split("\n").length} | ${analysis.symbols ? buildSymbolsSection(analysis.symbols) : ""} ${analysis.structure ? buildStructureSection(analysis.structure) : ""} ${analysis.dependencies ? buildDependenciesSection(analysis.dependencies) : ""} ${analysis.patterns ? buildPatternsSection(analysis.patterns) : ""} ### 💡 Key Insights ${generateInsights(analysis, language)} ### 🎯 Recommendations ${generateRecommendations(analysis, language)} ${references} `, }, ], }; } catch (error) { return handleToolError(error); } } function buildSemanticReferences() { return buildFurtherReadingSection([ { title: "Language Server Protocol", url: "https://microsoft.github.io/language-server-protocol/", description: "Microsoft's protocol for language intelligence in code editors", }, { title: "Semantic Analysis in Compilers", url: "https://en.wikipedia.org/wiki/Semantic_analysis_(compilers)", description: "Overview of semantic analysis techniques in code compilation", }, { title: "Design Patterns Catalog", url: "https://refactoring.guru/design-patterns", description: "Comprehensive catalog of software design patterns", }, { title: "Symbol-Based Navigation", url: "https://code.visualstudio.com/docs/editor/editingevolved", description: "Advanced code navigation using symbols in VS Code", }, ]); } //# sourceMappingURL=semantic-code-analyzer.js.map