Skip to main content

Local MCP server for Google Drive with full permission management — read, write, share files with your Google account.

Project description

honest-drive-mcp

Local Google Drive MCP server with full permission management — the piece missing from the official connector.

Companion project to honest-gmail-mcp and honest-calendar-mcp.

Why

The official Anthropic Drive connector is competent for read + create, but has one big gap: it cannot set or modify sharing permissions. If you build a workflow like "create a folder for my accountant and share it with her", you hit a dead end — you have to jump into the Drive UI to do the sharing part manually.

This MCP fixes that. Same trust model as the rest of the honest-* family: data flows only between your machine and Google.

Features

Eight tools exposed over MCP:

  • list_files — search with Drive query syntax
  • get_file — full metadata
  • read_file — download content (text/JSON returned as UTF-8; binaries as base64; Google-native docs auto-exported to plain text / CSV)
  • create_file — upload from text or base64
  • create_folder — new folder, optionally inside a parent
  • share_file — grant access to an email (reader/commenter/writer/owner), notification optional, custom message supported ← the piece missing elsewhere
  • list_permissions — see who has access and with what role
  • remove_permission — revoke a specific permission by id

Requirements

  • Python 3.10+
  • A Google account
  • One-time Google Cloud OAuth setup (~10 min; can reuse the client from honest-gmail-mcp — just enable the Drive API on the same project)

Setup

git clone https://github.com/bartosz-kuc/honest-drive-mcp.git
cd honest-drive-mcp
python3 -m venv venv
./venv/bin/pip install -r requirements.txt

Google Cloud steps (same as honest-gmail-mcp):

  1. https://console.cloud.google.com/ → create or select project
  2. APIs & Services → Library → enable Google Drive API
  3. APIs & Services → Credentials → OAuth client ID → Desktop app → download JSON → save as credentials.json here

First run:

./venv/bin/python server.py

Browser opens → Allow → token saved to token.json. Ctrl+C.

Register with Claude Code:

claude mcp add drive-personal /absolute/path/to/venv/bin/python /absolute/path/to/server.py

Claude Desktop claude_desktop_config.json:

{
  "mcpServers": {
    "drive-personal": {
      "command": "/absolute/path/to/venv/bin/python",
      "args": ["/absolute/path/to/server.py"]
    }
  }
}

Example usage

"Create a folder called 'Faktury dla księgowej' in My Drive and share it with elwira@example.pl as writer."

AI calls create_folder → gets folder_id → calls share_file(file_id, "elwira@example.pl", role="writer"). Done in one shot. No context-switch to the Drive UI.

"Who has access to file X?"

AI calls list_permissions(file_id) → returns all permissions with ids you can pass to remove_permission later.

Data flow

Your AI client
     ↕  MCP stdio
This server (Python, on your machine)
     ↕  HTTPS
Google Drive API

No cloud middle. Tokens stay on disk, .gitignored.

Security notes

  • OAuth scope requested: drive (full read/write on all Drive files this account can access). Google does not offer a scope that includes permission management without also including read/write to files, which is why the scope is broad.
  • send_notification defaults to false — AI will not spam recipients unless explicitly asked.
  • role: "owner" transfers ownership — an irreversible action. The tool passes transferOwnership: true automatically when this role is requested; consider using writer unless you really mean to hand over the file.
  • Revoke access anytime at https://myaccount.google.com/permissions.
  • credentials.json and token.json are .gitignored.

Author

Bartosz Kuć — Warsaw-based developer, JDG owner running skanfirmy.pl.

Consulting

Available for consulting on Polish tax and business integrations (KSeF, GUS/NFZ/GIOŚ APIs, mBank data), MCP server design, and AI-assisted tooling for JDGs and small teams. Reach out via email.

License

MIT — see LICENSE.

Related

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

honest_drive_mcp-0.1.0.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

honest_drive_mcp-0.1.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file honest_drive_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: honest_drive_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for honest_drive_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 109a2a90d86a2c76ec1e97473beb62a46e61732d497fac88112c86154e8dc62a
MD5 84efd7d6e7ed004e06c1c64fceb7a074
BLAKE2b-256 771060ad009c8f6e4a4170555a3c9bacae9eed153c0d84482ba7abe329fc87f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for honest_drive_mcp-0.1.0.tar.gz:

Publisher: publish.yml on bartosz-kuc/honest-drive-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file honest_drive_mcp-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for honest_drive_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b1f2dceb8db00618217554ed792ff625b116ad793226796c7c3e640c0bccdfc0
MD5 40168a6a374b6aeab386a30fae5ce11b
BLAKE2b-256 0536b4f8046f29427c0842e478a90a6a6dd0c56f2bff916b68b86250a34bab6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for honest_drive_mcp-0.1.0-py3-none-any.whl:

Publisher: publish.yml on bartosz-kuc/honest-drive-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page