Skip to main content
Glama
xiaolai
by xiaolai

track_file_evolution

Visualize a file's git commit history to understand changes and development rationale over time.

Instructions

Show how a file evolved through git commits with rationale

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
project_pathNoPath to manuscript directory (defaults to current directory)
file_pathYesFile to track evolution for
limitNoMaximum commits to return

Implementation Reference

  • MCP tool handler: extracts file_path and limit from args and delegates execution to WritersAid instance.
    private async trackFileEvolution(args: Record<string, unknown>) {
      const filePath = args.file_path as string;
      const limit = (args.limit as number) || 10;
    
      return this.writersAid.trackFileEvolution({ filePath, limit });
    }
  • Tool schema defining input parameters: file_path (required), optional limit and project_path.
    {
      name: "track_file_evolution",
      description: "Show how a file evolved through git commits with rationale",
      inputSchema: {
        type: "object",
        properties: {
          project_path: { type: "string", description: "Path to manuscript directory (defaults to current directory)" },
          file_path: { type: "string", description: "File to track evolution for" },
          limit: { type: "number", description: "Maximum commits to return", default: 10 },
        },
        required: ["file_path"],
      },
    },
  • Tool registration in the central handleTool switch statement.
    case "track_file_evolution":
      return this.trackFileEvolution(args);
  • Core helper method in WritersAid that fetches git commit history for the file via GitIntegrator and formats evolution data with commit details.
    async trackFileEvolution(options: { filePath: string; limit?: number }) {
      const evolution = await this.gitIntegrator.getFileEvolution(options.filePath);
      const limited = evolution.slice(0, options.limit || 10);
    
      return {
        filePath: options.filePath,
        revisions: limited.map(({ revision, commit }) => ({
          commitHash: commit.commitHash,
          timestamp: new Date(commit.timestamp * 1000).toISOString(),
          author: commit.author,
          message: commit.message,
          linesAdded: revision.linesAdded,
          linesRemoved: revision.linesRemoved,
          rationale: revision.rationale,
          sessionLinked: !!commit.sessionId,
        })),
        total: evolution.length,
      };
    }

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/xiaolai/claude-writers-aid-mcp'

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