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
JavaScript
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