diff --git a/third_party/google-drive/.cursor-plugin/plugin.json b/third_party/google-drive/.cursor-plugin/plugin.json index 0bef19fe8..a26d1c8db 100644 --- a/third_party/google-drive/.cursor-plugin/plugin.json +++ b/third_party/google-drive/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "google-drive", "displayName": "Google Drive", - "version": "1.0.0", + "version": "1.0.1", "minClientVersions": { "cursor": "3.13.0" }, @@ -29,5 +29,6 @@ "mcp", "google-workspace" ], - "mcpServers": "./mcp.json" + "mcpServers": "./mcp.json", + "skills": "./skills/" } diff --git a/third_party/google-drive/CHANGELOG.md b/third_party/google-drive/CHANGELOG.md index a59a784fa..0c4f809b7 100644 --- a/third_party/google-drive/CHANGELOG.md +++ b/third_party/google-drive/CHANGELOG.md @@ -6,3 +6,7 @@ All notable changes to this plugin will be documented here. - Logo: official Google Drive 2026 product icon from Google productlogos, on a padded white tile. - Added the `google-drive` MCP server pointing at `https://drivemcp.googleapis.com/mcp/v1`. + +## 1.0.1 — mcp endpoint update + +- Updated the `google-drive` MCP server to point at `https://api.cursor.com/rest-mcp/google-drive/mcp`. diff --git a/third_party/google-drive/README.md b/third_party/google-drive/README.md index 0662247a5..637432b1c 100644 --- a/third_party/google-drive/README.md +++ b/third_party/google-drive/README.md @@ -1,6 +1,6 @@ # Google Drive -Cursor plugin that connects agents to [Google Drive](https://drive.google.com) through Google's remote [Model Context Protocol](https://modelcontextprotocol.io/) server. +Cursor plugin that connects agents to [Google Drive](https://drive.google.com) through Cursor's remote [Model Context Protocol](https://modelcontextprotocol.io/) server. Search Drive, read file metadata and contents, create or update files, and manage sharing. @@ -19,7 +19,7 @@ Or run `/add-plugin google-drive` in chat. "mcpServers": { "google-drive": { "type": "http", - "url": "https://drivemcp.googleapis.com/mcp/v1" + "url": "https://api.cursor.com/rest-mcp/google-drive/mcp" } } } @@ -29,8 +29,8 @@ Auth is OAuth 2.0 against Google. Cursor prompts for Google sign-in when the plu ## Docs -- Google MCP setup: https://developers.google.com/workspace/drive/api/guides/configure-mcp-server -- Workspace MCP overview: https://developers.google.com/workspace/guides/configure-mcp-servers +- Google Drive API: https://developers.google.com/workspace/drive/api/reference/rest/v3 +- Google Drive overview: https://developers.google.com/workspace/drive Logo is the official Google Drive product icon, placed on a white tile with padding so it reads well in the Cursor UI: https://www.gstatic.com/images/branding/productlogos/drive_2026/v1/192px.svg diff --git a/third_party/google-drive/mcp.json b/third_party/google-drive/mcp.json index a372f9151..e6b1521ab 100644 --- a/third_party/google-drive/mcp.json +++ b/third_party/google-drive/mcp.json @@ -2,7 +2,7 @@ "mcpServers": { "google-drive": { "type": "http", - "url": "https://drivemcp.googleapis.com/mcp/v1" + "url": "https://api.cursor.com/rest-mcp/google-drive/mcp" } } } diff --git a/third_party/google-drive/skills/google-drive/SKILL.md b/third_party/google-drive/skills/google-drive/SKILL.md new file mode 100644 index 000000000..cb717cc09 --- /dev/null +++ b/third_party/google-drive/skills/google-drive/SKILL.md @@ -0,0 +1,97 @@ +--- +name: google-drive +description: Work with Google Drive through its MCP tools - search, read, create, organize, share, comment, and export files. Use when creating files in specific folders, moving or renaming, converting Markdown/CSV into Docs/Sheets, managing comments, or exporting a rendered PDF. +--- + +# Google Drive files + +## Ids come from search, never guesses + +Every tool takes Drive file ids. Get them from `search` (or +`list_folder` for a known folder, +`list_recent_files` for "what was I just working on"), or from +the id in a URL the user pasted. `exact_name` beats `query` for a known +filename; add `mime_type_filter` to cut noise. Never invent an id or reuse +one from a stale conversation - re-search first. + +## Folder targeting + +- `create_folder` takes `parent_folder_id`; without it the + folder lands in My Drive root. When the user names a destination folder, + resolve its id and pass it - a file created in root when a folder was + specified is a wrong result even if the content is perfect. +- `create_file` also takes `parent_folder_id`, so create files + directly where they belong instead of creating then moving. +- The Docs/Sheets/Slides providers' own create tools CANNOT target a folder + (their APIs have no parent parameter). When placement matters, either + create the artifact there with `create_file` (Markdown to + Doc, CSV to Sheet), or create it and then `move_or_rename` + with `destination_folder_id`. +- `move_or_rename` does either or both in one call; renaming + does not change the id. +- `update_file` is the same rename/move with the hosted Drive tool's + argument names (`fileId`; `title` renames, `parentId` moves by replacing + the current parent); it exists on both the translator and hosted + surfaces, so prefer it in guidance that must work on either. +- Grant limits: this app's grant is `drive.file`, so moving into or writing + files/folders this app never created (and the user never picked) can 403. + That 403 is a permission fact, not a transient error; do not retry it. + +## Markdown and CSV conversion + +`create_file` with `target_mime_type: +application/vnd.google-apps.document` converts Markdown (headings, lists, +tables) into a real Google Doc in one call; `...spreadsheet` converts CSV +into a Sheet. This is the fastest correct way to produce a formatted Doc: +prefer it over create-then-insert when the content is known up front. +`update_file_content` converts in place the same way. + +## Copying, metadata, and sharing + +- `copy_file` duplicates a file (optionally into a folder) - + the right way to instantiate a template without touching the original. +- `get_file_metadata` returns the full record (mime type, + parents, size, owners, modified time); use it to confirm a move landed. +- `get_file_permissions` lists who has access; + `share_file` grants a role to an email. Share only when the + user asked; report the link rather than widening access speculatively. +- `download_file` returns the raw bytes base64-encoded for + non-Google files (images, PDFs, plain text). + +## Reading and exporting + +- `read_file` returns text: Docs as Markdown, Sheets as CSV per + tab, Slides as plain text. Use it to verify content after writes. +- `export_file` returns rendered bytes base64-encoded: `pdf` + for Docs/Sheets/Slides (Sheets PDF renders every tab, charts included), + `png`/`svg` for Drawings, plus office formats (docx/xlsx/pptx). Use PDF + when the user wants to see the final look; exports cap at 10 MB. +- For one slide as PNG use the google-slides `get_slide_thumbnail` tool, not + Drive export. + +## Comments + +Comments live on the Drive file, so one tool set covers Docs, Sheets, and +Slides alike: + +- `list_comments` returns each comment's text, quoted document + text, resolved state, and replies; it pages, so follow `nextPageToken` + before concluding a thread does not exist. +- `add_comment` adds a file-level comment (no text anchor). +- `reply_to_comment` replies by comment id, and its + `action: "resolve"` (content optional) is the ONLY way to resolve a + thread; editing document text near a comment never resolves it. Leave + already-resolved threads alone. + +## Deleting + +`trash_file` is recoverable (~30 days) and works on files and +folders (a trashed folder takes its contents). Permanent deletion is +deliberately not available; never promise it. + +## Verify your work + +After creates and moves, confirm placement with `list_folder` +on the destination or `get_file_metadata` (check `parents`). +After content writes, `read_file` is the ground truth for text +and `export_file` (pdf) for the rendered result.