Skip to main content
Glama
0xjcf
by 0xjcf

analyze-files

Analyze code files to detect syntax issues, visualize dependencies, and support development workflows through comprehensive code analysis.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filesYesFiles to analyze

Implementation Reference

  • Handler function that processes an array of files, calculates metrics for each using calculateMetrics helper, and returns a JSON-formatted text response with results.
    async (args: { files: Array<{ path: string; content: string }> }) => {
      const { files } = args;
      
      // Analyze each file
      const results = await Promise.all(
        files.map(async (file: { path: string; content: string }) => {
          const extension = path.extname(file.path).slice(1);
          const metrics = calculateMetrics(file.content, extension);
          
          return {
            file: path.basename(file.path),
            metrics
          };
        })
      );
      
      return {
        content: [{
          type: "text",
          text: JSON.stringify({ results }, null, 2)
        }]
      };
    }
  • Zod input schema defining the expected arguments: an array of objects each containing file path and content.
    {
      files: z.array(z.object({
        path: z.string().describe("Path to the file"),
        content: z.string().describe("Content of the file")
      })).describe("Files to analyze")
  • MCP server tool registration for 'analyze-files', specifying input schema and handler function within registerIdeTools.
    server.tool(
      "analyze-files",
      {
        files: z.array(z.object({
          path: z.string().describe("Path to the file"),
          content: z.string().describe("Content of the file")
        })).describe("Files to analyze")
      },
      async (args: { files: Array<{ path: string; content: string }> }) => {
        const { files } = args;
        
        // Analyze each file
        const results = await Promise.all(
          files.map(async (file: { path: string; content: string }) => {
            const extension = path.extname(file.path).slice(1);
            const metrics = calculateMetrics(file.content, extension);
            
            return {
              file: path.basename(file.path),
              metrics
            };
          })
        );
        
        return {
          content: [{
            type: "text",
            text: JSON.stringify({ results }, null, 2)
          }]
        };
      }
    );
  • Supporting function called by the analyze-files handler to compute basic metrics (lines of code, complexity score, maintainability rating) for each file.
    function calculateMetrics(
      content: string, 
      language: string
    ): {
      linesOfCode: number;
      complexity: number;
      maintainability: string;
    } {
      // This is a placeholder implementation
      // In a real implementation, you would calculate actual metrics
      
      const lines = content.split("\n");
      
      return {
        linesOfCode: lines.length,
        complexity: Math.floor(lines.length / 10) + 1,
        maintainability: "medium"
      };
    } 

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/0xjcf/MCP_CodeAnalysis'

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