
gws-admin-mcp
io.github.antct11Published by GitHub account antct11v0.3.0Updated Oct 25, 2026
Safe Google Workspace admin for AI agents: read-only by default, confirm-gated deletes, audit log.
Overview
A local MCP server that gives an AI assistant a safe Google Workspace admin console: read-only by default, with confirm-gated destructive actions and an audit.
- What you can do
- List and inspect users, groups, members, org units, roles, domains, customer info and group settings, with Admin SDK search syntax and auto-pagination on list calls. Review audit-log activities and per-user or per-customer usage reports. When write mode is enabled, create, update, suspend, reset passwords, move or delete users, and manage groups, org units, role assignments and group settings. List mobile and ChromeOS devices and, with write mode, move them or run wipe and deprovision actions.
- When to use it
- Use it when an assistant should answer questions about a Google Workspace domain, such as inactive users or group membership, or make controlled admin changes during a change window. The default read-only mode suits everyday querying; write mode is for deliberate, supervised changes.
- Requirements
- Runs locally on Node.js 20 or newer. Needs a Google Cloud project with the Admin SDK and Groups Settings APIs enabled, a service-account JSON key, and domain-wide delegation granted to that service account's client ID. A Workspace super-admin must be impersonated via delegatedAdmin in config.json or the DELEGATED_ADMIN variable; GOOGLE_SA_KEY and CUSTOMER_ID are also read. Desktop MCP client only.
Installation
In SourceWeft
- Open gws-admin-mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
gws-admin-mcp
A local Model Context Protocol (MCP) server that gives your AI agent (Cursor, Claude Desktop, or any MCP client) a safe Google Workspace admin console. It talks to the Admin SDK (Directory, Reports, Groups Settings) through a service account with domain-wide delegation, so the agent can answer questions like "which users haven't logged in for 90 days?" or "who is in the Finance group?" — and, only when you explicitly allow it, make changes.
Runs entirely on your machine. No third-party service, no telemetry, no data leaves your laptop except the Google API calls themselves.
Safety model
This server assumes the agent driving it is fallible. Three layers:
- Read-only by default. Out of the box only the 17 read tools are
registered — write tools are not hidden behind a runtime check, they simply
do not exist in the tool list, so the agent cannot call them. Mutations
require starting the server with
--allow-write(orGWS_ADMIN_ALLOW_WRITE=1). - Confirm gate on destructive calls. Even with writes enabled, the
irreversible operations —
users_delete,groups_delete,orgunits_delete,role_assignment_delete, mobile device wipe actions, and ChromeOS deprovision — are refused unless the call includes"confirm": true. The agent has to make the destructive intent explicit a second time. - Audit log. Every tool call is appended as JSON lines to
~/.config/gws-admin-mcp/audit.log(mode 600), with passwords and secrets redacted. Disable withGWS_ADMIN_AUDIT=0if you must.
Recommended pattern: run the read-only instance permanently, and start a second, write-enabled instance only for the duration of a change window.
Tools (40 total; 17 in read-only mode)
* Destructive — additionally requires "confirm": true in the call
(device tools only for wipe/deprovision actions).
List tools auto-paginate up to a maxResults cap, and users_list supports
the full Admin SDK search syntax (orgUnitPath='/Sales', isAdmin=true,
email:jdoe*, ...).
Requirements
- Node.js >= 20
- Super-admin access to a Google Workspace domain (to grant domain-wide delegation)
- A Google Cloud project (free — the Admin SDK has no usage cost)
Google Cloud setup
You need a service account whose key the server uses to impersonate a Workspace super-admin. Two paths:
Path A — scripted (needs gcloud)
The script creates/reuses the project, enables the Admin SDK + Groups
Settings APIs, creates the service account, writes the key and config to
~/.config/gws-admin-mcp/, and prints the client ID + scope string for the
final manual step (step 5 below — Google provides no API for that part).
Path B — manual (Cloud console)
- Create a project at console.cloud.google.com (or reuse one dedicated to admin tooling).
- Enable APIs: Admin SDK API and Groups Settings API (APIs & Services → Library).
- Create a service account (IAM & Admin → Service Accounts → Create). No project-level IAM roles are needed — its power comes entirely from the delegation grant in the next steps.
- Create a JSON key for it (Keys tab → Add key → JSON) and save it as
~/.config/gws-admin-mcp/service-account.jsonwithchmod 600. - Grant domain-wide delegation — this is the step people miss:
- Copy the service account's OAuth 2 client ID (a long number, shown on the service account details page).
- In the Admin console (admin.google.com): Security → Access and data control → API controls → Domain-wide delegation → Add new.
- Paste the client ID, and paste this exact scope list as one comma-separated line:
- Tell the server which admin to impersonate. Create
~/.config/gws-admin-mcp/config.json:
delegatedAdmin must be a super-admin of the domain. my_customer
resolves to that admin's own organization.
Environment variables override the config files: GOOGLE_SA_KEY (key path),
DELEGATED_ADMIN, CUSTOMER_ID, GWS_ADMIN_CONFIG_DIR (alternate config
directory). See .env.example.
Build and verify
doctor checks the key, mints a delegated token, and runs sample reads
against users, domains, roles, and the audit reports API. All four should say
PASS. Then optionally:
MCP client configuration
Cursor (~/.cursor/mcp.json)
Read-only — the recommended default:
Write-enabled (use deliberately, ideally as a second entry you toggle on):
Claude Desktop (claude_desktop_config.json)
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json ·
Windows: %APPDATA%\Claude\claude_desktop_config.json
Restart the client after editing. You should see the gws-admin server with
17 tools (read-only) or 40 (write-enabled).
Troubleshooting
Security notes
- The service-account key impersonates a super-admin with org-wide power.
Treat
service-account.jsonlike a domain-admin password: keep it out of git (this repo's.gitignorealready excludes key files,.env, andconfig.json), keep itchmod 600, and rotate it periodically. - Prefer a dedicated Cloud project for this service account so the key is easy to audit and revoke.
- Keep the permanent instance read-only. Enable writes in a separate instance only when you actually intend to change things, and turn it off after.
License & purchase
This repository is source-available, not open source: the code is public so you can read and audit every line before trusting it with a super-admin credential, but using it requires a license.
- Buy a license ($34): antchoutine.gumroad.com/l/gws-admin-mcp — perpetual, includes the full write-enabled edition and updates.
- Try it free: the read-only edition (17 tools, no mutating code) is on
npm as
gws-admin-mcp.
See LICENSE for the exact terms (no redistribution, no offering it as a hosted service).
Source: README.md at commit e941550
Tools
0Version history
1- v0.3.0LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.

