UNPKG

mcp-google-drive

Version:

Advanced MCP server for Google Drive integration with full CRUD operations, file management, and sharing capabilities. Supports both OAuth2 and Service Account authentication.

47 lines 1.8 kB
import { z } from "zod"; import { BaseToolHandler } from "./BaseToolHandler.js"; const GetFileRevisionsSchema = z.object({ fileId: z.string(), maxResults: z.number().default(10), }); export class GetFileRevisionsHandler extends BaseToolHandler { async runTool(args, drive) { const validArgs = GetFileRevisionsSchema.parse(args); const revisions = await this.getFileRevisions(validArgs, drive); return { content: [{ type: "text", text: this.formatRevisions(revisions), }], isError: false, }; } async getFileRevisions(args, drive) { try { const response = await drive.revisions.list({ fileId: args.fileId, pageSize: args.maxResults, fields: 'revisions(id,modifiedTime,keepForever,originalFilename,published,publishedOutsideDomain,size)', }); return response.data.revisions || []; } catch (error) { throw this.handleGoogleApiError(error); } } formatRevisions(revisions) { if (revisions.length === 0) { return "No revisions found for this file."; } return revisions.map((revision, index) => { const size = revision.size ? `${Math.round(revision.size / 1024)}KB` : 'N/A'; const modified = revision.modifiedTime ? new Date(revision.modifiedTime).toLocaleString() : 'N/A'; return `${index + 1}. **Revision ${revision.id}** - Modified: ${modified} - Size: ${size} - Published: ${revision.published ? 'Yes' : 'No'} - Keep Forever: ${revision.keepForever ? 'Yes' : 'No'}`; }).join('\n\n'); } } //# sourceMappingURL=GetFileRevisionsHandler.js.map