Verified MCP server: Google Drive

The Google Drive MCP server, verified live on a real Mac.

  • Tools enumerated2026-08-03macOS 15.7.7
  • Package@isaacphi/mcp-gdrive 0.2.0
  • Self-reportedexample-servers/gdrive 0.1.0
  • MCP protocol2024-11-05
  • Runtimev24.18.0

The tool list below is a live capture from the running server; an authenticated tool call is still pending credentials.

The short answer

Last verified 2026-08-03

The Google Drive MCP server on this page is @isaacphi/mcp-gdrive, a community fork that hands an AI assistant four tools: two that search and read files in your Drive, and two that read and update Google Sheets. Google publishes no Drive MCP server of its own, and the original reference implementation, @modelcontextprotocol/server-gdrive, is now marked deprecated on npm with its source moved into the archived modelcontextprotocol/servers-archived repository, whose README states that no security guarantees are provided for the servers kept there. The fork is also the one people actually install: 8,395 downloads last week against 6,046 for the archived original, 283 stars, MIT licensed. We ran it instead of trusting its README. It started, completed the MCP handshake, and answered tools/list with all four tools, and every name, description and parameter below is that answer word for word. Then it stopped exactly where the credentials stopped. The one real call we made, gdrive_search for the word routines, left the Mac, reached Google's own API and came back with Google's own error, code 401 Invalid Credentials, which is a real network round trip rather than a local crash, and is still not a successful Drive search: no file was read here. Two things worth knowing before the setup instructions: you create your own Google Cloud OAuth client for this, and the package is named for Drive while half its tools are Google Sheets tools. [1][2][3][5][6]

  • Tools

    4, enumerated live

  • Credentials

    Google OAuth client needed [4]

  • Transport

    stdio, runs on your Mac [4]

  • Maintainer

    isaacphi, community fork [1][3]

  • Downloads

    8,395 last week [2]

  • License

    MIT [1][3]

Verification

How this MCP server was verified.

Method

We spawned the server with npx over stdio with CLIENT_ID, CLIENT_SECRET and GDRIVE_CREDS_DIR set, completed the MCP initialize handshake, and called tools/list: it answered with all 4 tools, and the table below is that answer, word for word. The protocol version above is read straight off the raw initialize reply, which negotiated down from the 2025-06-18 we offered. No real Google account was involved at any point. The credentials directory held an obvious placeholder token with a far-future expiry, which is enough for the server to load it without asking Google anything, and its own stderr says so in the banner below. We then made one real tool call, gdrive_search with the query routines. It went out to Google's Drive API and came back with Google's own error, printed below exactly as it was returned: a real round trip rather than a local failure, and also not a successful search. The tools are therefore enumerated live and the error is real output, while an authenticated call is still pending credentials.

Startup banner

npm warn deprecated uuid@9.0.1: uuid@10 and below is no longer supported.  For ESM codebases, update to uuid@latest.  For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028).
Setting up automatic token refresh interval (45 minutes)
Attempting to load credentials from: /tmp/mcp-verify-home-gdrive/gdrive-creds/.gdrive-server-credentials.json
Loaded existing credentials with scopes: https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/spreadsheets
Token expiry status: {
  expiryDate: '2030-01-01T00:00:00.000Z',
  timeToExpiryMinutes: 1794430,
  hasRefreshToken: true
}

One real tool call

tools/call gdrive_search {"query":"routines"}
{"code":401,"message":"Invalid Credentials"}

Real lines from the captured result: enough to prove the call answered.

Tools

Every tool, enumerated from the running server.

The server answered tools/list with 4 tools on 2026-08-03. The names, descriptions and parameters below are its own words, copied from that response and never edited.

ToolWhat it does
gdrive_searchquery*pageTokenpageSize

Search for files in Google Drive

gdrive_read_filefileId*

Read contents of a file from Google Drive

gsheets_update_cellfileId*range*value*

Update a cell value in a Google Spreadsheet

gsheets_readspreadsheetId*rangessheetId

Read data from a Google Spreadsheet with flexible options for ranges and formatting

Parameters marked with * are required.

Setup

Working configs, one per app.

Copy the block for the app you use. Each one is the configuration this server was verified with.

Claude Desktop

Open the file ~/Library/Application Support/Claude/claude_desktop_config.json (in Claude Desktop: Settings, then Developer, then Edit Config) and add:

{
  "mcpServers": {
    "gdrive": {
      "command": "npx",
      "args": ["-y", "@isaacphi/mcp-gdrive"],
      "env": {
        "CLIENT_ID": "<your-oauth-client-id>.apps.googleusercontent.com",
        "CLIENT_SECRET": "<your-oauth-client-secret>",
        "GDRIVE_CREDS_DIR": "/Users/yourname/Documents/mcp-gdrive"
      }
    }
  }
}

All three environment variables come from the OAuth client you create in the Google Cloud Console. GDRIVE_CREDS_DIR is a folder, not a file: put your downloaded gcp-oauth.keys.json inside it, and the server writes the token it earns next to that file after you sign in. Use a full path starting with /Users, then quit and reopen Claude Desktop. [7][4]

Claude Code

One command in your terminal:

claude mcp add --env CLIENT_ID=<your-oauth-client-id>.apps.googleusercontent.com --env CLIENT_SECRET=<your-oauth-client-secret> --env GDRIVE_CREDS_DIR=/Users/yourname/Documents/mcp-gdrive --transport stdio gdrive -- npx -y @isaacphi/mcp-gdrive

Everything after the double dash is the exact command Claude Code will run. The --transport flag sits between the last --env pair and the server name on purpose: a name placed straight after --env is read as another KEY=value pair and rejected. Use an absolute path for the credentials folder, not one starting with a tilde. [8]

Cursor

Add to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json inside one project:

{
  "mcpServers": {
    "gdrive": {
      "command": "npx",
      "args": ["-y", "@isaacphi/mcp-gdrive"],
      "env": {
        "CLIENT_ID": "<your-oauth-client-id>.apps.googleusercontent.com",
        "CLIENT_SECRET": "<your-oauth-client-secret>",
        "GDRIVE_CREDS_DIR": "/Users/yourname/Documents/mcp-gdrive"
      }
    }
  }
}

Cursor picks the file up on restart. CLIENT_SECRET is a real secret and this file is easy to commit by accident: keep mcp.json and the credentials folder out of any repository you push. [9]

Routines

No JSON file and no terminal. In Routines: Settings, then Assistant, then Connections, then Add MCP Server. Switch the form to Command (stdio) and enter:

Name        Google Drive
Command     npx
Arguments   -y @isaacphi/mcp-gdrive

Environment Variables
CLIENT_ID           <your-oauth-client-id>.apps.googleusercontent.com
CLIENT_SECRET       <your-oauth-client-secret>
GDRIVE_CREDS_DIR    /Users/yourname/Documents/mcp-gdrive

The Arguments field splits on spaces, so keep it to exactly those three words. The two OAuth values and the folder path go in Environment Variables, never in Arguments, and the folder has to be a full path starting with /Users. Click Test Connection first: a working server answers with its tool count, four for this one. [10][4]

No terminal needed

Set the Google Drive MCP server up without the terminal.

If you have never opened Terminal and never want to, this is your path. Routines is a Mac app that runs MCP servers for you: fill in a few fields once, and this server's tools are available to your AI in chat and in scheduled routines. The fiddly part is not Routines, it is Google: this server has no shared key to paste, so you make your own OAuth client first. That detour takes about ten minutes on Google's own site, and you only do it once.

  1. 01

    Install Routines

    Download the app from getroutines.ai/download, drag it to Applications, and sign in.

  2. 02

    Make an OAuth client in the Google Cloud Console

    Go to console.cloud.google.com, create a project or pick one you already have, and enable both the Google Drive API and the Google Sheets API for it, since two of the four tools read and write Sheets. Open the OAuth consent screen, choose External, and add your own Google address under Test users, or the sign-in will be refused later. Then open Credentials, click Create Credentials, choose OAuth client ID, and pick Desktop app as the type.

  3. 03

    Give the key file a folder of its own

    Google offers the new client as a JSON download. Make a folder for it, for example /Users/yourname/Documents/mcp-gdrive, and save the download inside it named exactly gcp-oauth.keys.json. That folder is where the server will also write your token after you sign in, so pick somewhere it will not move, and keep it out of any shared or synced folder.

  4. 04

    Add the server in Routines

    Click your account at the bottom of the sidebar and choose Settings. Open the Assistant section, then the Connections tab, scroll to MCP Servers, and click Add MCP Server. Switch the form to Command (stdio): this server is a command, not a web address. Name: Google Drive. Command: npx. Arguments: -y @isaacphi/mcp-gdrive, exactly those three words.

  5. 05

    Fill in the three environment variables, then test

    In Environment Variables add CLIENT_ID and CLIENT_SECRET, both copied from the OAuth client page in the Google Cloud Console, and GDRIVE_CREDS_DIR with the full path of the folder you just made, such as /Users/yourname/Documents/mcp-gdrive. Click Test Connection: Routines starts the server without saving it and reports how many tools it found, four for this one. Then click Add Server.

  6. 06

    Sign in to Google once, then use it

    On its first start with no saved token the server opens Google's sign-in page in your browser; approve the Drive and Sheets permissions, and the token lands in your credentials folder as .gdrive-server-credentials.json. Until that file exists, the tools still appear in the list but every call comes back refused, which is exactly what our own run captured. After that the tools work in chat right away. To let a scheduled routine use them, open the routine, find the Tools & connections card, and tick the server under Apps.

Routine ideas

Routines worth scheduling.

Once the server is connected, a scheduled routine can use its tools while you are away. Copy a prompt, paste it into Routines, and pick a time.

A Monday Drive digest

Prompt

Every Monday at 8:00, search my Google Drive for files that mention roadmap, list what you find with the file names and types, and save that list as drive-roadmap.md in my Notes folder.

A Friday numbers readout

Prompt

Every Friday at 17:00, read the Weekly Metrics spreadsheet in my Google Drive, write a short plain-English summary of what changed this week and what stands out, and save it as metrics-friday.md.

A standup log that fills itself in

Prompt

Every weekday at 7:45, read my Standup Notes spreadsheet in Google Drive, put today's date in the first empty cell of column A, and write yesterday's three items into standup.md so I can read them before the call.

Troubleshooting

The errors we hit, and what fixed them.

Real errors captured during the verification run, printed exactly as the server returned them.

The tools are listed, but every call comes back 401

What you see

{"code":401,"message":"Invalid Credentials"}

The fix

This is what our own run produced, on purpose: the token file was a placeholder, so the server loaded it happily and Google rejected it the moment it was used. The message is Google's, not the server's, which means the request really did reach the Drive API. Delete the .gdrive-server-credentials.json file in your GDRIVE_CREDS_DIR folder and start the server again so it can run the sign-in flow and write a real one. If it used to work and stopped after about a week, check the Google Cloud Console: while your OAuth consent screen is still in Testing mode, Google expires the tokens it issues.

Nothing is set up yet and Google refuses the caller outright

What you see

{"code":403,"message":"Method doesn't allow unregistered callers (callers without established identity). Please use API Key or other form of API consumer identity to call this API."}

The fix

We ran the server with no credentials anywhere at all, and it still started and listed all four tools, which is worth knowing: a healthy-looking tool list is not proof that anything is connected. Its stderr told the real story: it reported that no credentials file was found, said it was launching the auth flow, and then failed to find gcp-oauth.keys.json in the folder we had pointed GDRIVE_CREDS_DIR at. Download your OAuth client from the Google Cloud Console, save it in that folder under exactly that name, and restart.

gcp-oauth.keys.json is there but not valid JSON

What you see

SyntaxError: /private/tmp/mcp-verify-home-gdrive/bad-oauth-keys-dir/gcp-oauth.keys.json: Expected property name or '}' in JSON at position 2 (line 1 column 3)

The fix

We fed it a deliberately broken key file to see what happens: the sign-in flow dies on the parse, the server keeps serving its tool list anyway, and calls keep failing. Do not retype or reformat the file Google gives you. Download it again, save it whole, and if you opened it in an editor make sure nothing was added at the top, since position 2 means the very first character after the opening brace was already wrong.

A tool call is rejected before it reaches Google

What you see

{"code":-32603,"message":"Missing required parameters: fileId"}

The fix

The server checks required arguments itself, and gdrive_read_file cannot run without a file id. We produced this by calling it with no arguments at all. In practice an assistant hits it when it tries to read a file by its title: tell it to run gdrive_search first and use the id from the result, because Drive ids are the only thing these tools accept.

The assistant calls a tool that does not exist

What you see

{"code":-32603,"message":"Tool not found"}

The fix

There are exactly four tools here and no aliases, so an invented name like gdrive_delete_everything gets this flat refusal, which is what we asked for in the probe. It usually means the assistant is guessing at capabilities this server does not have. Nothing in the table above deletes, moves, shares or renames anything, so if a task needs that, this server is not the way to do it.

Your client reports a protocol error the moment the server starts

What you see

Starting server

The fix

That bare line is the first thing this build writes to stdout, before any protocol message, and stdout is the channel MCP itself speaks on. Our own capture recorded it as a non-JSON line ahead of the handshake, our test client ignored it, and everything below still happened, but a stricter client can treat a stray line there as a broken connection and give up. There is nothing to configure around it, it is in the published build, so if your client refuses to start the server this is the first thing to look for in its logs.

Your MCP client cannot start the server at all

The fix

The npx command belongs to Node.js. If Node is not installed on your Mac, every client on this page fails at the spawn step before the server can say anything. Install Node from nodejs.org, restart your MCP client, and try again.

FAQ

Questions people ask.

What is the Google Drive MCP server?

It is a small program that sits between an AI assistant and your Google Drive and speaks the Model Context Protocol. Connected to an app such as Claude, it can search your Drive, read the contents of a file you point it at, read a Google Sheet, and update a single cell in one. It runs as a local process on your Mac and talks to your AI app over stdio. The version documented here is @isaacphi/mcp-gdrive, a community fork of the original reference server, and its own README credits the code it started from as work by Anthropic, PBC. [4][3]

Is there an official Google Drive MCP server?

Not from Google, and no longer from the Model Context Protocol project either. The original @modelcontextprotocol/server-gdrive is marked deprecated on npm and its source has been moved into the archived modelcontextprotocol/servers-archived repository, which states plainly that those servers are no longer maintained, that no security guarantees are provided, and that you use them at your own risk. The current servers repository has no gdrive folder at all. That is why this page documents the community fork instead: it is maintained more recently, it is downloaded more often, 8,395 times last week against 6,046 for the archived original, and it is the one we ran. [5][6][2][1]

What tools does the Google Drive MCP server include?

The running server exposes 4 tools, and only two of them are about Drive: gdrive_search finds files, gdrive_read_file returns the contents of one, gsheets_read reads a spreadsheet with optional ranges, and gsheets_update_cell writes a value into a single cell. The table above is the live tools/list output, word for word. There is nothing here that creates, moves, renames, shares or deletes a file, so treat it as a reader of Drive with one narrow way to write back into a sheet.

Does it need an API key or a Google account?

A Google account, and one piece of setup that is easy to underestimate: there is no shared key to paste, so you create your own OAuth client in the Google Cloud Console, download it as gcp-oauth.keys.json, and give the server three environment variables, CLIENT_ID, CLIENT_SECRET and GDRIVE_CREDS_DIR, the last being the folder that holds the key file. Nothing here costs money. After you approve the permissions once in a browser, the token is written into that same folder and reused. The two permissions it will ask you for, drive.readonly and spreadsheets, are fixed in the code the package ships rather than anything you configure. [4]

Is the Google Drive MCP server safe?

Read the credential story carefully before you decide. This is an independent fork maintained by one person, MIT licensed and open to read, and it holds a token that can read every file your Google account can reach: Drive access is not folder-scoped the way a local file server is. The Drive scope it requests is read-only, which limits the damage on that side, but the Sheets scope is not, and gsheets_update_cell overwrites a cell with no confirmation step. Give it an account that only sees what it needs, keep CLIENT_SECRET and the credentials folder out of anything shared or synced, and remember that the archived original ships with an explicit no-security-guarantees notice, which is a good reason not to reach for it instead. [4][3][6]

Do I need the terminal to set it up?

No. In Routines you fill in the fields in Settings and click Test Connection, and you approve Google's sign-in page in a browser rather than a command; the walkthrough above shows every click. Claude Desktop needs a small JSON file edited once. Only Claude Code is terminal-first by nature. The Google Cloud Console part is clicking through a website in every case. [10][7]

Which apps can use the Google Drive MCP server?

Any MCP client that can launch a local stdio server: Claude Desktop, Claude Code, Cursor and Routines all can, and the exact config for each is above. The server itself is the same in every client; only the place you paste the config differs, and every one of them needs the same three environment variables. [7][8][9][10]

Sources

Every external claim, receipted.

Anything on this page we did not observe in the run is linked here, with the date we read it. The run itself is the receipt for the rest.

  1. [1]

    npm registry: @isaacphi/mcp-gdriveaccessed 2026-08-03

    Latest version 0.2.0, published 2024-12-14, MIT, repository isaacphi/mcp-gdrive, sole npm maintainer isaacphi.

  2. [2]

    npm downloads API: last weekaccessed 2026-08-03

    8,395 downloads for the week ending 2026-08-02, against 6,046 for the archived @modelcontextprotocol/server-gdrive over the same week.

  3. [3]

    GitHub: isaacphi/mcp-gdriveaccessed 2026-08-03

    283 stars, MIT, not archived, last push 2025-05-07, per the GitHub API. The README credits the code it forked from as originally developed by Anthropic, PBC.

  4. [4]

    npm package page: @isaacphi/mcp-gdriveaccessed 2026-08-03

    The stdio config shape and the CLIENT_ID, CLIENT_SECRET and GDRIVE_CREDS_DIR environment variables, cross-checked against the shipped dist/auth.js, which reads exactly those three and hardcodes the two OAuth scopes the package requests, drive.readonly and spreadsheets.

  5. [5]

    npm registry: @modelcontextprotocol/server-gdriveaccessed 2026-08-03

    Latest version 2025.1.14, published 2025-01-14, carrying npm's deprecation notice: "Package no longer supported."

  6. [6]

    GitHub: modelcontextprotocol/servers-archivedaccessed 2026-08-03

    Archived true, 293 stars, described as "Reference MCP servers that are no longer maintained". Its README states no security guarantees are provided and to use at your own risk. Google Drive is listed there, at src/gdrive, and the current modelcontextprotocol/servers repository returns 404 for that path.

  7. [7]

    modelcontextprotocol.io: Connect to local MCP serversaccessed 2026-08-03

    The official Claude Desktop quickstart, the config file location and the command, args and env block shape.

  8. [8]

    Claude Code docs: MCPaccessed 2026-08-03

    The claude mcp add syntax for local stdio servers, the --env flag, and the warning about placing the server name straight after --env.

  9. [9]

    Cursor docs: Model Context Protocolaccessed 2026-08-03

    The mcp.json shape, including the env block, and the global and per-project file locations.

  10. [10]

    Routines: Connectorsaccessed 2026-08-03

    How Routines runs one-click OAuth connectors and any MCP server, local stdio processes included, validating a new server by listing its tools.

This page describes Google Drive as it behaved in one dated run on one Mac. Versions move: if something here no longer matches what you see, the capture date at the top says how old the reading is.

Behind this directory

Routines, the app behind this directory, runs MCP servers like this one without a terminal: see how connectors work. The digests it writes stay markdown files on your Mac, and there is no cloud bill. Download Routines