Mcp Sheets
Google Sheets integration with OAuth, spreadsheet management, batch operations, and formatting
- Transport
- Not stated
- Package
- —
- Registry id
- io.github.mcp-z/mcp-sheets
No install snippet on purpose. A working MCP config is a command, its arguments and an environment block — the last two are where API keys live, so this catalogue never stores them and cannot publish them. Follow the link above for the authors' own instructions.
MCP server for Google Sheets integration with OAuth authentication, spreadsheet management, batch operations, and advanced formatting
Requires Node.js >=20. The examples use npx, included with npm, to run this server and @mcp-z/cli.
Common uses
- Find spreadsheets and sheets
- Append and update data
- Apply formatting, validation, and charts
Transports
MCP supports stdio and HTTP.
Both the 2025 and 2026-07-28 protocol revisions are served, over either transport, from the same
server. Your client negotiates whichever it speaks. A 2025 client keeps working with no change,
and support for it is not being dropped. The 2026-07-28 revision is stateless, so a client speaking
it sends no initialize handshake and carries no session id.
Stdio
{
"mcpServers": {
"sheets": {
"command": "npx",
"args": ["-y", "@mcp-z/mcp-sheets"]
}
}
}
HTTP
{
"mcpServers": {
"sheets": {
"type": "http",
"url": "http://localhost:9004/mcp",
"start": {
"command": "npx",
"args": ["-y", "@mcp-z/mcp-sheets", "--port=9004"]
}
}
}
}
start is an extension used by npx @mcp-z/cli up to launch HTTP servers for you. The HTTP endpoint is /mcp.
Create a Google Cloud app
- Go to Google Cloud Console.
- Create or select a project.
- Enable the Google Sheets API.
- Create OAuth 2.0 credentials (Desktop app).
- Copy the Client ID and Client Secret.
- Select the credential type that matches your transport:
- For stdio, choose "Desktop app" under APIs & Services.
- For HTTP, choose "Web application" and add your public
/oauth/callbackURL. Local HTTP uses the port configured with--portorPORT. - For local hosting, add
http://127.0.0.1for the ephemeral redirect URL.
- Enable OAuth2 scopes: openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive
- Add test emails
OAuth modes
Configure via environment variables or the env block in .mcp.json. See server.json for the full list of options.
Loopback OAuth (default)
Environment variables:
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
Example (stdio) - Create .mcp.json:
{
"mcpServers": {
"sheets": {
"command": "npx",
"args": ["-y", "@mcp-z/mcp-sheets"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id"
}
}
}
}
Example (http) - Create .mcp.json:
{
"mcpServers": {
"sheets": {
"type": "http",
"url": "http://localhost:3000/mcp",
"start": {
"command": "npx",
"args": ["-y", "@mcp-z/mcp-sheets", "--port=3000"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id"
}
}
}
}
}
Local (default): omit REDIRECT_URI → ephemeral loopback. Cloud: set REDIRECT_URI to your public /oauth/callback and expose the service publicly.
Note: the start block is a helper in npx @mcp-z/cli up for starting an HTTP server from your .mcp.json. See @mcp-z/cli for details.
Service account
Environment variables:
AUTH_MODE=service-account
GOOGLE_SERVICE_ACCOUNT_KEY_FILE=/path/to/service-account.json
Example:
{
"mcpServers": {
"sheets": {
"command": "npx",
"args": ["-y", "@mcp-z/mcp-sheets", "--auth=service-account"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY_FILE": "/path/to/service-account.json"
}
}
}
}
DCR (self-hosted)
HTTP only. Requires a public base URL.
From the project's README.