Metadata-Version: 2.4
Name: honest-drive-mcp
Version: 0.1.0
Summary: Local MCP server for Google Drive with full permission management — read, write, share files with your Google account.
Project-URL: Homepage, https://github.com/bartosz-kuc/honest-drive-mcp
Project-URL: Repository, https://github.com/bartosz-kuc/honest-drive-mcp
Project-URL: Issues, https://github.com/bartosz-kuc/honest-drive-mcp/issues
Author-email: Bartosz Kuć <firma@bartosza.pl>
License-Expression: MIT
License-File: LICENSE
Keywords: drive,files,google,google-drive,mcp
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Requires-Dist: google-api-python-client>=2.0.0
Requires-Dist: google-auth-oauthlib>=1.0.0
Requires-Dist: google-auth>=2.0.0
Requires-Dist: mcp>=1.0.0
Description-Content-Type: text/markdown

# 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](https://github.com/bartosz-kuc/honest-gmail-mcp) and [honest-calendar-mcp](https://github.com/bartosz-kuc/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

```bash
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:

```bash
./venv/bin/python server.py
```

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

Register with Claude Code:

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

Claude Desktop `claude_desktop_config.json`:

```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, `.gitignore`d.

## 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 `.gitignore`d.

## Author

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

- Site: https://skanfirmy.pl
- GitHub: https://github.com/bartosz-kuc

- Email: firma@bartosza.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](LICENSE).

## Related

- [honest-gmail-mcp](https://github.com/bartosz-kuc/honest-gmail-mcp) — local Gmail MCP
- [honest-calendar-mcp](https://github.com/bartosz-kuc/honest-calendar-mcp) — local Google Calendar MCP
- [ksef-mcp](https://github.com/bartosz-kuc/ksef-mcp) — Polish KSeF (e-invoicing) MCP
- [nip-krs-mcp](https://github.com/bartosz-kuc/nip-krs-mcp) — Polish company registry MCP
