Google Drive MCP Server
Self-hosted MCP server for Google Drive, Docs, Sheets, Slides and Calendar with 130 tools
Read, write, format and share Google Sheets spreadsheets and browse Google Drive folders from an MCP client
By Xing Wu (individual) Python Local · stdio Data and analyticsProductivityFiles and storage
76 popularity score ★ 1.0k ↓ 111k/mo
Opens the app, which asks before it adds the server.
claude mcp add google-sheets -- uvx mcp-google-sheets@latest{
"mcpServers": {
"google-sheets": {
"command": "uvx",
"args": [
"mcp-google-sheets@latest"
]
}
}
}{
"mcpServers": {
"google-sheets": {
"command": "uvx",
"args": [
"mcp-google-sheets@latest"
]
}
}
}{
"servers": {
"google-sheets": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-google-sheets@latest"
]
}
}
}[mcp_servers.google-sheets]
command = "uvx"
args = ["mcp-google-sheets@latest"]gemini mcp add --scope user google-sheets uvx -- mcp-google-sheets@latestOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
git clone https://github.com/xing5/mcp-google-sheets.gitclaude mcp add google-sheets -- uv run --directory '<PATH_TO_REPO>' mcp-google-sheets{
"mcpServers": {
"google-sheets": {
"command": "uv",
"args": [
"run",
"--directory",
"<PATH_TO_REPO>",
"mcp-google-sheets"
]
}
}
}{
"mcpServers": {
"google-sheets": {
"command": "uv",
"args": [
"run",
"--directory",
"<PATH_TO_REPO>",
"mcp-google-sheets"
]
}
}
}{
"servers": {
"google-sheets": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"--directory",
"<PATH_TO_REPO>",
"mcp-google-sheets"
]
}
}
}[mcp_servers.google-sheets]
command = "uv"
args = ["run", "--directory", "<PATH_TO_REPO>", "mcp-google-sheets"]gemini mcp add --scope user google-sheets uv -- run --directory '<PATH_TO_REPO>' mcp-google-sheetsSERVICE_ACCOUNT_PATH |
Optional: Path to a service account JSON key; the first method its docs show. |
|---|---|
DRIVE_FOLDER_ID |
Optional: ID of the Drive folder shared with the service account; default folder for listing and creating. |
CREDENTIALS_CONFIG |
Optional: Base64 content of a service account or OAuth credentials file, checked first. |
CREDENTIALS_PATH |
Optional: Path to an OAuth desktop client JSON (default credentials.json). |
TOKEN_PATH |
Optional: Writable path where the OAuth refresh token is stored (default token.json). |
GOOGLE_APPLICATION_CREDENTIALS |
Optional: Google's standard key path, picked up through Application Default Credentials. |
ENABLED_TOOLS |
Optional: Comma-separated tool names to expose; all tools when unset. |
HOST |
Optional: Listen address for the SSE transport (default 0.0.0.0). |
PORT |
Optional: Listen port for the SSE transport (default 8000). |
mcp-google-sheets is a Python MCP server that talks to the Google Sheets API and the Google Drive API on your behalf. It runs on your own machine (or in a container you build) and uses Google credentials you provide.
Through it an assistant can find spreadsheets by listing a Drive folder or searching file names and contents, list folders, preview several spreadsheets at once, read values or formulas from a range, and search for cells holding a given value. On the writing side it can create spreadsheets and tabs, overwrite ranges, insert empty rows or columns, copy and rename tabs, add charts (column, bar, line, area, pie, scatter, combo, histogram), share a spreadsheet with email addresses as reader, commenter or writer, and pass raw requests to the Sheets batchUpdate endpoint, which covers formatting, deleting rows or columns and other structural edits. A resource, spreadsheet://{spreadsheet_id}/info, returns basic metadata.
Four ways to sign in are supported: a Google Cloud service account key (the recommended path, working inside one shared Drive folder), a desktop OAuth client that opens a browser on first use, the same credentials passed as a Base64 string in an environment variable, and Google Application Default Credentials. All 20 tools take roughly 13,000 tokens of context by the project's own count, so it offers --include-tools and ENABLED_TOOLS to switch on only the ones you need.
| Runtime | Python |
|---|
uv (for uvx) or Docker. A Google Cloud project with the Google Sheets API and Google Drive API enabled, plus one set of credentials: a service account JSON key with a Drive folder shared to it, an OAuth desktop client JSON, or gcloud Application Default Credentials with a quota project set.
Works only on Google Sheets and Drive folders; it does not read Docs, Slides or other file types. With a service account it sees only what has been shared with that account, normally one Drive folder. update_cells and batch_update_cells overwrite what is in the range. The Docker image is built from the repository yourself and speaks SSE on port 8000, not stdio. search_spreadsheets returns at most 100 results.
Suits people who keep data in Google Sheets and want an assistant to read, update and chart it, and who can set up a Google Cloud project and credentials. The service account route keeps its reach to one shared folder, which fits automation and shared machines; OAuth or ADC suits personal use but reaches the whole Drive the account can see. It is a community project, not published by Google. If you only need to read sheets, use --include-tools to expose the read-only tools; if you need Docs, Gmail or Calendar as well, look for a broader Google Workspace server.
list_spreadsheetssearch_spreadsheetslist_folderscreate_spreadsheetlist_sheetscreate_sheetrename_sheetcopy_sheetget_sheet_dataget_sheet_formulasget_multiple_sheet_dataget_multiple_spreadsheet_summaryfind_in_spreadsheetupdate_cellsbatch_update_cellsadd_rowsadd_columnsadd_chartshare_spreadsheetbatch_update