Gws
БесплатноНе проверенA small MCP server for read-write access to Google Tasks, Calendar, and Drive, enforcing human approval for all mutating operations.
Описание
A small MCP server for read-write access to Google Tasks, Calendar, and Drive, enforcing human approval for all mutating operations.
README
A small, self-contained MCP server for Google Tasks, Calendar, and Drive — read-write, with one hard rule: every write requires explicit human approval before it executes.
Status: alpha (v0.1.0). The full designed surface — 25 tools across Tasks, Calendar, and Drive — is implemented and tested (46 tests, both approval modes). Not yet battle-hardened against real-world API quirks.
Why another Google MCP?
There is no official Google MCP server for consumer Workspace data, and the community options are broad (10+ services) and mostly unmaintained. This one is deliberately narrow:
- Three services only — Tasks, Calendar, Drive. Smaller code, smaller audit surface.
- Local stdio server — spawned by your MCP client (Claude Code, Gemini CLI, …). Nothing hosted, nothing listening on a network. The server only ever sees tool calls, never your prompts.
- BYO OAuth — you create your own Google Cloud OAuth client and grant scopes to yourself. No shared credentials anywhere.
- Tokens in the OS keyring (Secret Service / KDE Wallet / macOS Keychain) — never plaintext on disk.
The write-approval invariant
Read tools (list_*, get_*, search_*, read_*) run freely. Mutating
tools (create_*, update_*, complete_*, move_*, trash_*, delete_*)
cannot execute without a human saying yes, enforced in layers:
- MCP elicitation (primary): before executing, the server sends a human-readable preview through the client UI — the confirmation goes directly to the human, so the model cannot approve its own writes.
- Two-step fallback (clients without elicitation): the first call returns a preview + one-time confirm token and mutates nothing; only a second call with the token executes. All executed writes are logged to stderr.
- Tool annotations (
readOnlyHint/destructiveHint) + the strict naming convention, so client permission systems can auto-allow reads and always-prompt writes.
Destructive operations are softened where the API allows it: Drive "delete" is trash, never a hard delete.
Planned tool surface (~22 tools)
| Service | Read | Write (approval-gated) |
|---|---|---|
| Tasks | list_task_lists list_tasks get_task |
create_task update_task complete_task move_task delete_task |
| Calendar | list_calendars list_events search_events get_event |
create_event update_event respond_to_event delete_event |
| Drive | search_files get_file_metadata read_file_content |
create_file update_file_content move_file trash_file |
OAuth scopes: tasks, calendar.events (events only — no ACL/settings
access), drive.
Stack
Python 3.12+ · uv · official
mcp SDK (FastMCP,
stdio) · google-api-python-client + google-auth-oauthlib · keyring ·
pytest + ruff.
Quick start
- Bring your own OAuth client (one-time, ~30 min): in the Google Cloud
console create a project, enable the Tasks, Calendar, and Drive
APIs, create an OAuth 2.0 Desktop app client, and download its JSON to
~/.config/gws-mcp/credentials.json(chmod 600). No credentials ever ship with, or are stored by, this project — the OAuth grant lives in your OS keyring. - Authenticate (interactive, opens a browser):
git clone https://github.com/purplespacecat/gws-mcp && cd gws-mcp uv sync uv run gws-mcp auth # then: uv run gws-mcp auth --status - Wire it into your MCP client (stdio):
In clients that support MCP elicitation, write approvals appear as UI prompts; in clients that don't, writes return a preview + one-time confirm token and nothing mutates until# Claude Code claude mcp add google-workspace -- uv --directory /path/to/gws-mcp run gws-mcp # Gemini CLI gemini mcp add google-workspace uv -- --directory /path/to/gws-mcp run gws-mcpconfirm_writeis called.
Contributing
Issues and PRs are welcome — see CONTRIBUTING.md. All contributions are reviewed before merge; PRs that touch auth, scopes, or the write-approval layer get extra scrutiny.
License
Установка Gws
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/purplespacecat/gws-mcpFAQ
Gws MCP бесплатный?
Да, Gws MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Gws?
Нет, Gws работает без API-ключей и переменных окружения.
Gws — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Gws в Claude Desktop, Claude Code или Cursor?
Открой Gws на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Notion
Read and write pages in your workspace
автор: NotionLinear
Issues, cycles, triage — from Claude
автор: LinearGoogle Drive
Search and read your Drive files
автор: Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
автор: mindsdbCompare Gws with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории productivity
