ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Google Workspace

โดย mindstoneรุ่น 0.5.5i★ –iรันบนเครื่อง
ชื่อใน registryio.github.mindstone/mcp-server-google-workspace

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

Google Workspace MCP server for Gmail, Calendar, Drive, Docs, Sheets, Slides, Contacts, and more

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: แชตและอีเมล
  • ต้องใส่ค่าเหล่านี้: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, ACCOUNTS_PATH, CREDENTIALS_PATH

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

  • ผลตรวจเบื้องต้น: ผ่าน 1 จาก 1 ข้อ
  • รันในเครื่องคุณด้วยสิทธิ์ของผู้ใช้คุณ (ไฟล์ อินเทอร์เน็ต แอปต่าง ๆ)
  • ค่าที่คุณต้องใส่เอง: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, ACCOUNTS_PATH, CREDENTIALS_PATH, GOOGLE_WORKSPACE_REQUEST_TIMEOUT_MS, GOOGLE_WORKSPACE_DISABLE_REFRESH, MCP_WORKSPACE_PATH, WORKSPACE_BASE_PATH, GAUTH_FILE

ค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต

ต้องเตรียมก่อน

  • npmติดตั้ง Node.js (มีคำสั่ง npx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "google-workspace": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-google-workspace"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "ใส่ค่าของคุณ",
        "GOOGLE_CLIENT_SECRET": "ใส่ค่าของคุณ",
        "ACCOUNTS_PATH": "ใส่ค่าของคุณ",
        "CREDENTIALS_PATH": "ใส่ค่าของคุณ",
        "GOOGLE_WORKSPACE_REQUEST_TIMEOUT_MS": "ใส่ค่าของคุณ",
        "GOOGLE_WORKSPACE_DISABLE_REFRESH": "ใส่ค่าของคุณ",
        "MCP_WORKSPACE_PATH": "ใส่ค่าของคุณ",
        "WORKSPACE_BASE_PATH": "ใส่ค่าของคุณ",
        "GAUTH_FILE": "ใส่ค่าของคุณ"
      }
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add google-workspace --env GOOGLE_CLIENT_ID='ใส่ค่าของคุณ' --env GOOGLE_CLIENT_SECRET='ใส่ค่าของคุณ' --env ACCOUNTS_PATH='ใส่ค่าของคุณ' --env CREDENTIALS_PATH='ใส่ค่าของคุณ' --env GOOGLE_WORKSPACE_REQUEST_TIMEOUT_MS='ใส่ค่าของคุณ' --env GOOGLE_WORKSPACE_DISABLE_REFRESH='ใส่ค่าของคุณ' --env MCP_WORKSPACE_PATH='ใส่ค่าของคุณ' --env WORKSPACE_BASE_PATH='ใส่ค่าของคุณ' --env GAUTH_FILE='ใส่ค่าของคุณ' -- npx -y @mindstone/mcp-server-google-workspace

เติมค่าที่เว้นว่างไว้ก่อนรัน

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "google-workspace": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-google-workspace"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "ใส่ค่าของคุณ",
        "GOOGLE_CLIENT_SECRET": "ใส่ค่าของคุณ",
        "ACCOUNTS_PATH": "ใส่ค่าของคุณ",
        "CREDENTIALS_PATH": "ใส่ค่าของคุณ",
        "GOOGLE_WORKSPACE_REQUEST_TIMEOUT_MS": "ใส่ค่าของคุณ",
        "GOOGLE_WORKSPACE_DISABLE_REFRESH": "ใส่ค่าของคุณ",
        "MCP_WORKSPACE_PATH": "ใส่ค่าของคุณ",
        "WORKSPACE_BASE_PATH": "ใส่ค่าของคุณ",
        "GAUTH_FILE": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "google-workspace": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-google-workspace"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "ใส่ค่าของคุณ",
        "GOOGLE_CLIENT_SECRET": "ใส่ค่าของคุณ",
        "ACCOUNTS_PATH": "ใส่ค่าของคุณ",
        "CREDENTIALS_PATH": "ใส่ค่าของคุณ",
        "GOOGLE_WORKSPACE_REQUEST_TIMEOUT_MS": "ใส่ค่าของคุณ",
        "GOOGLE_WORKSPACE_DISABLE_REFRESH": "ใส่ค่าของคุณ",
        "MCP_WORKSPACE_PATH": "ใส่ค่าของคุณ",
        "WORKSPACE_BASE_PATH": "ใส่ค่าของคุณ",
        "GAUTH_FILE": "ใส่ค่าของคุณ"
      }
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าที่ต้องใส่เอง

  • GOOGLE_CLIENT_ID จำเป็น env
    Google OAuth client ID
  • GOOGLE_CLIENT_SECRET ความลับ จำเป็น env
    Google OAuth client secret
  • ACCOUNTS_PATH จำเป็น env
    Path to accounts.json written by the MCP host
  • CREDENTIALS_PATH จำเป็น env
    Directory containing per-account Google OAuth token files
  • GOOGLE_WORKSPACE_REQUEST_TIMEOUT_MS env
    Outbound Google API request timeout in milliseconds (max 300000 = 5 min)
  • GOOGLE_WORKSPACE_DISABLE_REFRESH env
    Set to 1 to disable background OAuth token refresh (tokens are only read, never refreshed)
  • MCP_WORKSPACE_PATH env
    Directory attachments and downloaded files are constrained to (defaults to a temp dir; reads/writes outside it are refused)
  • WORKSPACE_BASE_PATH env
    Legacy fallback for MCP_WORKSPACE_PATH; prefer MCP_WORKSPACE_PATH
  • GAUTH_FILE env
    Legacy fallback path to gauth.json OAuth client config; host-orchestrated setups use GOOGLE_CLIENT_ID/GOOGLE_CLIENT_SECRET instead

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub mindstone ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด แชตและอีเมลi

  • ดาวมากกว่า 0% ของอีก 1771 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 96% ของอีก 1771 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 1771 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Google Workspace ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

ต้องใส่ค่าเหล่านี้: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, ACCOUNTS_PATH, CREDENTIALS_PATH

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.5.5) เข้า registry วันนี้

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Vexa, emailmd, MCP WhatsApp Cloud

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Vexa

โดย Vexa-ai

Meeting bot and transcripts for Google Meet, Teams and Zoom. Live or after, speakers labelled.

รันบนคลาวด์★ 2,949Apache-2.0อัปเดต 2 เดือนที่ผ่านมา
ติดตั้ง

emailmd

โดย anypost

Render markdown into email-safe HTML, lint drafts for deliverability problems, and preview emails.

บนเครื่องหรือคลาวด์★ 1,385MITอัปเดต 31 วันที่ผ่านมา
ติดตั้ง

MCP WhatsApp Cloud

โดย codespar

MCP server for WhatsApp Cloud API (Meta) — messages, media, and templates via Graph API

รันบนเครื่อง★ 277MITอัปเดต 5 เดือนที่ผ่านมา
ติดตั้ง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

@mindstone/mcp-server-google-workspace

Google Workspace MCP server — Gmail, Calendar, Drive, Docs, Sheets, Slides, Contacts, Chat, Meet, Tasks, Forms, Comments, and account diagnostics.

*Multi-account Google Workspace MCP. Host-orchestrated OAuth (the connector neither runs a callback server nor mints OAuth URLs), atomic per-account credential writes, and a structured auth_required handoff so the host drives the sign-in flow rather than the server.*

Status

  • Version: 0.5.5 · npm: not yet published
  • Auth: OAuth (host-orchestrated) (GOOGLE_CLIENT_SECRET)
  • Tools: 124 (Gmail, Calendar, Drive, Docs, Sheets, Slides, Contacts, Chat, Meet, Tasks, Forms, Comments, Account)
  • Surface: cloud-api
  • Machine-readable: STATUS.json

This connector is based on aaronsb/google-workspace-mcp and credited under package.json#attribution.

Why this exists

When we ported this in early 2026, Google had not published a first-party MCP server for the Workspace surface. The community options at the time each got parts of the job right — Aaron Brown's aaronsb/google-workspace-mcp, which we used as the starting point, covered the breadth of Workspace APIs but ran its own browser-callback server during OAuth, which our host application already does. We forked it so that the MCP host can own the entire OAuth flow (the connector returns a structured auth_required response instead of running a callback server or computing OAuth URLs), per-account token files are written atomically with restrictive permissions and symlink rejection, and the connector goes through our own security review before each release. Google's Workspace MCP has since shipped; we continue to maintain this one because it integrates with our host's credential-file layout, host-orchestrated OAuth handoff, and recovery-guidance contract. This is now a hard fork maintained independently in this repository — we do not sync changes from the upstream project.

Example interaction

"Find the email thread Alice sent yesterday about Q3 planning and reply with 'thanks, will read tonight'."

Tools the host calls:

  1. search_workspace_emails — searches Gmail for from:alice@... subject:"Q3 planning" newer_than:1d.
  2. reply_to_workspace_email — replies on the returned thread ID with the supplied body.

Response (trimmed):

{

"thread": { "id": "1928a...", "subject": "Q3 planning", "from": "alice@example.com" }, "reply": { "id": "1928b...", "labelIds": ["SENT"] } }

Requirements

  • Node.js 20+ (engines.node is >=18, but the build and tests are exercised on 20 and 22)
  • npm
  • A host application that performs the Google OAuth flow and writes accounts.json plus per-account token files for the connector to read.

Quick Start

Install & build
cd <path-to-repo>/connectors/google-workspace

npm install npm run build

npx (once published)
npx -y @mindstone/mcp-server-google-workspace
Local
node dist/index.js

Configuration

When Google says "slow down". There is nothing to configure here. For reads (GET, HEAD and OPTIONS), short-window rate limits wait and retry the request; the total can be longer than a minute and a half when Google sends Retry-After, and each wait is capped at 64 seconds. Requests that already succeeded are not sent again. POST and PATCH are never replayed by the retry policy; PUT and DELETE keep the ordinary 429 retries but do not retry rate-limit 403s. Non-rate-limit permission errors and longer-window 403 quota responses keep their ordinary behavior; 429 responses give back-off advice, and some tools also include Google's error text. When the read retry loop ends, the error says so (recoveryExhausted: true); a host that retries failed calls itself can read that field and skip its own retry.

Values you pass back stay exact. Results mark text that comes from outside (email bodies, file names, event titles) as untrusted content, by wrapping it in an tag. Values meant to be passed back into another call are returned exactly as Google sent them: page tokens (which fetch the next page of results) and the IDs of messages, threads, files, events, calendars, Chat spaces and Meet records. You can pass them straight into the next call.

This server is designed to run alongside a host application that performs the Google OAuth flow on its own. The host writes credentials to disk; this server reads them.

Required environment variables
VariableDescription
GOOGLE_CLIENT_IDGoogle OAuth client ID.
GOOGLE_CLIENT_SECRETGoogle OAuth client secret.
ACCOUNTS_PATHPath to accounts.json (host-written index of authenticated accounts).
CREDENTIALS_PATHDirectory containing per-account Google OAuth token files.
Optional environment variables
VariableDefaultDescription
GOOGLE_WORKSPACE_REQUEST_TIMEOUT_MS60000Outbound Google API request timeout in milliseconds (max 300000 = 5 min).

GOOGLE_WORKSPACE_DISABLE_REFRESH=1 may be injected by a host to make the connector return auth_required instead of refreshing tokens. It is intentionally not a user-facing setup variable.

Authentication flow

authenticate_workspace_account returns a structured auth_required response:

{

"status": "auth_required", "user_action": { "id": "google.connect_account" }, "agent_action": { "instruction": "Connect Google Workspace to continue. The user will be redirected to Google's sign-in." }, "setupToolName": "authenticate_workspace_account" }

The connector does not run a callback server and does not generate OAuth URLs. The MCP host computes the Google OAuth URL and handles the callback. Once the host has written the account's token file under CREDENTIALS_PATH/ and an entry into ACCOUNTS_PATH, the next tool call succeeds.

Host configuration examples

Claude Desktop / Cursor
{

"mcpServers": { "GoogleWorkspace": { "command": "npx", "args": ["-y", "@mindstone/mcp-server-google-workspace"], "env": { "GOOGLE_CLIENT_ID": "your-google-oauth-client-id", "GOOGLE_CLIENT_SECRET": "your-google-oauth-client-secret", "ACCOUNTS_PATH": "/absolute/path/to/accounts.json", "CREDENTIALS_PATH": "/absolute/path/to/credentials" } } } }

Until the host has written ${ACCOUNTS_PATH} and the matching per-account token file under ${CREDENTIALS_PATH}/, every tool call returns the structured auth_required response (see the Authentication flow above).

Local development (no npm publish needed)
{

"mcpServers": { "GoogleWorkspace": { "command": "node", "args": [" /connectors/google-workspace/dist/index.js"], "env": { "GOOGLE_CLIENT_ID": "your-google-oauth-client-id", "GOOGLE_CLIENT_SECRET": "your-google-oauth-client-secret", "ACCOUNTS_PATH": "/absolute/path/to/accounts.json", "CREDENTIALS_PATH": "/absolute/path/to/credentials" } } } }

Tools (124)

The full list lives under src/tools/definitions/ and is also surfaced in tools-inventory.json. Grouped by domain:

DomainToolsNotes
Gmail23Email search/thread/send/compose, drafts, labels, label filters, attachments, archive/trash/read-state helpers, settings, vacation responder, and send-as aliases/signatures.
Calendar9Current time, free-slot lookup, calendar/event listing, event creation, updates, responses, and deletion.
Drive15List/search/upload/download/copy/move/trash/untrash files, folders, permissions, revisions, shared-drive discovery, and activity queries (what changed, when, by whom).
Docs13Read, create, append, replace, find/replace (whole doc or one tab), insert text at an anchor, tab tree, add/rename/move/delete tabs, copy a tab's content into another tab, and batch updates. Read, append, replace and find/replace can target one tab (tab_id); reads can also cover every tab (all_tabs).
Sheets17Read/write ranges, create spreadsheets, sheet management (add, duplicate, rename, reorder, delete), insert rows or columns formatted like their neighbours, batch operations, find/replace, and formatting.
Slides7Read, create, list/get slides, batch update, thumbnails, and ID extraction.
Labels12Gmail label CRUD and filter rules.
Contacts4List, search, create, and update contacts.
Chat3List spaces, list messages in a space, and send text messages.
Meet3List conference records, list transcripts, and read transcript entries (speaker + text).
Comments5List/create/reply/resolve/delete Drive comments.
Account3List, authenticate, and remove workspace accounts.
Tasks6List task lists, and list/create/update/complete/delete tasks.
Forms4Read-only access to forms and their responses.
Compose send status

In hosts that remember send status, sending an email closes its other compose copies. Reloaded cards show "Email sent" with the send time and hide Reopen because they do not have the sent contents. The copy used to send keeps its posted contents in a read-only sent view, including when confirmation follows a lost reply. After an error or block reply, a later sent status from another copy shows only the sent bar, without this copy's contents. While a send is in progress, other copies show “Sending…” with Send, Retry, Cancel and Save draft (where available) disabled. Replies to this copy’s own requests keep those controls locked until the other send ends. If the send ends without a confirmed outcome, those copies return to editing and keep any earlier uncertainty. A copy waiting for its own Send reply keeps its sending view. Sent views stay read-only, and uncertainty remains until a send is confirmed. After an error or missing confirmation, check whether the email was sent before using Retry; the notice stays visible while editing and returns on Reopen. Collapsing the card does not resolve that uncertainty. Policy-block explanations stay visible while editing with Send disabled. Cancel says "Nothing sent" only when no send may have gone through, including a not-dispatched failure before the request left the device.

When sending is blocked by your settings, your organization or security policy, the card hides Retry and keeps Cancel. If the server is stopped, Retry remains available.

Send requests declare _meta: { 'mcp-app/cardOutcome': 'sent' } to supporting hosts. When your own setting blocks sending, Retry stays unavailable; the Gmail fallback depends on the structured user-disabled reason. Draft saves do not declare a send outcome; Cancel after a draft-save timeout says "Nothing sent" unless an earlier send remains uncertain.

Sheets read limits

read_workspace_spreadsheet_values accepts max_rows and max_cols to keep the first rows and columns of a values read, including value_view: "shaped" and return_json: true. They refer to sheet rows and columns even with major_dimension: "COLUMNS". Omitted limits leave that dimension unchanged. A truncated result reports truncated: true in JSON or a truncation notice in text.

Anchor envelopes keep their first/last windows, summary and continuation token unchanged. Limits apply when reading a continuation page, but truncation creates no new token and does not advance the original token. To retrieve omitted cells, re-read a

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx