{
  "markdown": "# google-drive-mcp\n\nMCP server for Google Drive - list, search, upload, download, and manage files and folders.\n\n## Use Cases\n\n**Answer from files**: \"What was our revenue target in the Q2 board deck?\" → searches Drive, reads the relevant doc, and answers your question.\n\n**Project scaffolding**: Starting a new vendor onboarding → creates a folder structure with subfolders for contracts, compliance, deliverables, and meeting notes, plus template docs and sheets.\n\n**Feedback synthesis**: \"Summarize the feedback from my manager across my last 10 presentation decks\" → reads comments from multiple files and identifies themes and development areas.\n\n**Localization workflow**: \"We're onboarding contractors in Japan - translate the onboarding folder from English to Japanese and flag anything that needs local adaptation (HR policies, holidays, etc.)\" → reads multiple docs, translates, and highlights areas needing review.\n\n(These are just examples - any workflow that needs file search, reading, or organization can use this. Use in combination with [google-docs-mcp](https://github.com/domdomegg/google-docs-mcp) for reading/editing Google Docs, or [google-sheets-mcp](https://github.com/domdomegg/google-sheets-mcp) for Google Sheets.)\n\n## Setup\n\n### 1. Create Google OAuth credentials\n\n1. Go to [Google Cloud Console](https://console.cloud.google.com/)\n2. Create a new project (or use existing)\n3. Enable the Google Drive API\n4. Go to **APIs & Services** → **OAuth consent screen**, set up consent screen\n5. Go to **APIs & Services** → **Credentials** → **Create Credentials** → **OAuth client ID**\n6. Choose **Web application**\n7. Add `http://localhost:3000/callback` to **Authorized redirect URIs**\n8. Note your Client ID and Client Secret\n\n### 2. Run the server\n\n```bash\nGOOGLE_CLIENT_ID='your-client-id' \\\nGOOGLE_CLIENT_SECRET='your-client-secret' \\\nMCP_TRANSPORT=http \\\nnpm start\n```\n\nThe server runs on `http://localhost:3000` by default. Change with `PORT=3001`.\n\n### 3. Add to your MCP client\n\nWith the server running, follow the instructions on [install-mcp](https://adamjones.me/install-mcp/?url=http://localhost:3000/mcp), which generates the right config for your MCP client (Claude Code, Claude Desktop, Cursor, Cline, VS Code, and more).\n\n## Architecture\n\nThis server acts as an **OAuth proxy** to Google:\n\n```mermaid\ngraph LR\n    A[MCP client] <--> B[google-drive-mcp] <--> C[Google OAuth/API]\n```\n\n1. Server advertises itself as an OAuth authorization server via `/.well-known/oauth-authorization-server`\n2. `/register` returns the Google OAuth client credentials\n3. `/authorize` redirects to Google, encoding the client's callback URL in state\n4. `/callback` receives the code from Google and forwards to the client's callback\n5. `/token` proxies token requests to Google, injecting client credentials\n6. `/mcp` handles MCP requests, using the bearer token to call Drive API\n\nThe server holds no tokens or state - it just proxies OAuth to Google.\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| **Files** | |\n| `files_list` | List/search files using Drive query syntax |\n| `file_get` | Get file metadata |\n| `file_download` | Download file content (supports export for Google Docs/Sheets) |\n| `file_upload` | Upload a new file |\n| `file_update` | Update file content or metadata |\n| `file_copy` | Copy a file |\n| `file_move` | Move a file to a different folder |\n| `file_trash` | Move to trash |\n| `file_untrash` | Restore from trash |\n| `file_delete` | Permanently delete |\n| **Folders** | |\n| `folder_create` | Create a new folder |\n| **Comments** | |\n| `comments_list` | List comments on a file |\n| `comment_get` | Get a comment and its replies |\n| `comment_create` | Add a comment to a file |\n| `comment_reply` | Reply to a comment |\n| `comment_resolve` | Resolve or unresolve a comment |\n| **Replies** | |\n| `replies_list` | List replies to a comment |\n| `reply_get` | Get a specific reply |\n| `reply_update` | Update a reply |\n| `reply_delete` | Delete a reply |\n| **Permissions** | |\n| `permissions_list` | List who has access to a file |\n| `permission_get` | Get a specific permission |\n| `permission_create` | Share a file with a user, group, domain, or anyone |\n| `permission_update` | Change a user's access level |\n| `permission_delete` | Revoke access to a file |\n\n## Drive Query Syntax\n\nThe `files_list` tool supports Drive's query syntax for filtering:\n\n```\n# By name\nname contains 'report'\nname = 'Budget 2024'\n\n# By type\nmimeType = 'application/pdf'\nmimeType = 'application/vnd.google-apps.folder'\nmimeType = 'application/vnd.google-apps.document'\n\n# By folder\n'folder-id' in parents\n\n# By ownership\n'user@example.com' in owners\n\n# Combined\nname contains 'report' and mimeType = 'application/pdf'\n```\n\n## Google Drive API Scopes\n\n- `drive` - Full access to Drive files\n\n## Contributing\n\nPull requests are welcomed on GitHub! To get started:\n\n1. Install Git and Node.js\n2. Clone the repository\n3. Install dependencies with `npm install`\n4. Run `npm run test` to run tests\n5. Build with `npm run build`\n\n## Releases\n\nVersions follow the [semantic versioning spec](https://semver.org/).\n\nTo release:\n\n1. Use `npm version <major | minor | patch>` to bump the version\n2. Run `git push --follow-tags` to push with tags\n3. Wait for GitHub Actions to publish to the NPM registry.\n",
  "bytes": 5324,
  "sha": "90f8b626493c8d989eba8793c0fa898483a1083f803d5b9f3d70e36ff97ea76d",
  "repo_slug": "domdomegg/google-drive-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_domdomegg_google_drive_mcp_b175b183/readme"
}