Designed to run as a Google Cloud Function with support for Cloud Functions deployment and Secret Manager for credential storage.
Exposes Google Sheets as queryable database tables with tools for listing sheets, retrieving column schemas, and fetching rows with pagination support.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Sheets MCP Serverlist all sheets in spreadsheet 1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Sheets MCP Server
An MCP (Model Context Protocol) server that provides tools for interacting with Google Sheets. Designed to run as a Google Cloud Function and proxies requests to the sheets-db-api.
Features
Full CRUD operations for sheets and rows
Treats Google Sheets as a database with sheets as tables
SSE transport for HTTP-based MCP communication
No authentication required (proxies to authenticated sheets-db-api)
Available Tools
Tool | Description | Parameters |
| List all sheets in the spreadsheet |
|
| Create a new sheet |
|
| Delete a sheet |
|
| Get column headers |
|
| Get all rows from a sheet |
|
| Get a specific row by index |
|
| Add a new row |
|
| Update an existing row |
|
| Delete a row |
|
Installation
Build
Deployment
Deploy to Google Cloud Functions:
Or manually:
Environment Variables
Variable | Description | Default |
| URL of the sheets-db-api |
|
API Endpoints
Method | Endpoint | Description |
GET |
| Health check |
GET |
| SSE connection for MCP clients |
POST |
| Message endpoint for MCP communication |
Local Development
With stdio transport (for local MCP clients)
With HTTP/SSE transport
Usage Example
Once deployed, connect your MCP client to the SSE endpoint:
Then use the tools with your Google Spreadsheet ID:
Row Indexing
Row 1 contains headers
Data rows start at index 2
When using
get_row,update_row, ordelete_row, use indices >= 2