Google Workspace Code MCP

Google Workspace Code MCP

A code-first MCP server that provides a single tool to execute JavaScript or TypeScript with authenticated access to Google Workspace APIs. It enables flexible interactions with services like Calendar and Drive by running user-provided scripts through a built-in runtime environment.

Category
Visit Server

README

Google Workspace Code MCP

Important: This is an alternative experiment, not my primary setup

If you are looking for the Google Workspace integration I actually use day-to-day, use this skill instead:

  • Primary skill: https://github.com/mitsuhiko/agent-stuff/tree/main/skills/google-workspace

This repository is an alternative code-first MCP experiment built around one execute tool. It is intentionally aligned with the ideas in:

  • Your MCP Doesn’t Need 30 Tools: It Needs Code — https://lucumr.pocoo.org/2025/8/18/code-mcps/

That post explores code-supported/code-first MCP design (fewer fixed tools, more programmable capability).


A local JavaScript/TypeScript MCP server with a single tool: execute.

execute runs JavaScript (or TypeScript with type stripping) and gives that code authenticated access to Google Workspace APIs.

What this server does

  • Exposes one MCP tool: execute
  • Runs user-provided JavaScript/TypeScript (async function body; TS types stripped)
  • Automatically performs OAuth login on first use (browser flow)
  • Reuses stored tokens on subsequent calls
  • Provides a small runtime API inside executed code:
    • auth — Google OAuth client
    • googlegoogleapis SDK root
    • workspace — helper methods (call, service, whoAmI)
    • state — persistent mutable object across calls

This follows a code-mode design: one flexible execution tool instead of many fixed tools.

Requirements

  • Node.js 20+
  • Local desktop/browser access for the initial OAuth sign-in

Install

npm install

Run

npm start

or:

node src/server.js

MCP configuration

This repo already includes .mcp.json:

{
  "mcpServers": {
    "google-workspace-code": {
      "type": "stdio",
      "command": "node",
      "args": [
        "/Users/mitsuhiko/Development/workspace-mcp/src/server.js"
      ],
      "env": {
        "GOOGLE_WORKSPACE_AUTH_MODE": "cloud"
      }
    }
  }
}

If you move the project, update the args path.

Tool contract

Tool name

  • execute

Input schema

  • script (string, required): JavaScript/TypeScript async function body (TS type syntax is stripped before execution)
  • timeoutMs (number, optional): execution timeout in milliseconds (default 30000, max 300000)
  • scopes (string[], optional): override OAuth scopes for the call
  • resetState (boolean, optional): clears persistent state before execution

Execution environment

Your script runs as an async function body with these variables in scope:

  • auth
  • google
  • workspace
  • state

Return values are serialized and sent back as tool output.

Example scripts

1) Who am I + list Drive files

const me = await workspace.whoAmI();
const files = await workspace.call('drive', 'files.list', {
  pageSize: 5,
  fields: 'files(id,name,mimeType)'
});

state.lastEmail = me.email;

return {
  user: me,
  files: files.files,
  remembered: state.lastEmail
};

2) List today’s calendar events

const start = new Date();
start.setHours(0, 0, 0, 0);

const end = new Date(start);
end.setDate(end.getDate() + 1);

return await workspace.call('calendar', 'events.list', {
  calendarId: 'primary',
  timeMin: start.toISOString(),
  timeMax: end.toISOString(),
  singleEvents: true,
  orderBy: 'startTime'
});

OAuth and token storage

  • First call without token triggers browser login automatically
  • Default config directory: ~/.pi/google-workspace
  • Default token path: ~/.pi/google-workspace/token.json
  • Default auth mode: cloud (unless overridden)

Environment variables

  • GOOGLE_WORKSPACE_CONFIG_DIR
  • GOOGLE_WORKSPACE_CREDENTIALS
  • GOOGLE_WORKSPACE_TOKEN
  • GOOGLE_WORKSPACE_AUTH_MODE (cloud or local)
  • GOOGLE_WORKSPACE_CLIENT_ID
  • GOOGLE_WORKSPACE_CLOUD_FUNCTION_URL
  • GOOGLE_WORKSPACE_CALLBACK_HOST

Security notes

  • Uses Node vm for execution convenience, not a hardened sandbox.
  • Treat this as trusted local tooling.
  • Do not expose this server to untrusted users or networks.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured