Google Sheets (OAuth) MCP — for MCP Studio
OAuth-based Google Sheets MCP. Files are owned by you (theauthenticated user), not a service account, so they land in your personalDrive and ownership/sharing works the normal way.
Companion to mcp-studio-google-sheets-mcpwhich uses a service account. The OAuth flavour avoids the"service-accounts-in-personal-projects can't create files" landmine.
Setup
You need a Google OAuth Client ID before installing.
- https://console.cloud.google.com → APIs & Services → Credentials.
- Create Credentials → OAuth client ID.
- Application type: Desktop app. (Web app works too if you prefer.)
- Give it a name (e.g. "MCP Studio Sheets"). Click Create.
- Copy the Client ID Google shows you. (No client secret needed —Studio uses PKCE.)
- On the OAuth consent screen tab, add your Google email to Testusers if the consent screen is in Testing mode.
- Make sure Google Sheets API and Google Drive API are enabled(APIs & Services → Library → Enable).
Install in MCP Studio
/install https://github.com/RPieterse/mcp-studio-google-sheets-oauth-mcp
After install, Studio opens Settings → MCP Servers → Google Sheets(OAuth). Expand the row, then:
- Paste your OAuth Client ID into the input field and clickSave.
- Click Authorize in browser below. Approve the Google consentscreen. Studio captures the tokens.
After that:
/osheet_create Democreates a sheet owned by you, in your My Drive.
Why the duplicated trigger names
The service-account MCP uses /sheet_create, /sheet_read. This OAuthflavour uses /osheet_create, /osheet_read so you can have BOTH MCPsinstalled at the same time without trigger collisions.
Caveats
- Studio currently keeps OAuth tokens in memory only (no keychainpersistence yet — tracked in the main repo's
docs/ROADMAP.md). You'llre-authorize on every Studio launch. - Google access tokens expire after ~1 hour. The MCP's OAuth2Clientauto-refreshes IF Google handed us a
refresh_tokenon first consent.If it didn't (this happens when you've authorized this client before),reauthorize withprompt=consentonce to force a new refresh token.