Integrates with Google Cloud for authentication and project configuration, allowing access to Google Cloud resources using service account credentials.
Enables reading, writing, and managing Google Sheets documents through a comprehensive set of tools including reading cell values, batch operations, appending rows, clearing cells, sheet management, and cell formatting capabilities.
MCP Google Sheets Server
A Model Context Protocol (MCP) server for Google Sheets API integration. Enables reading, writing, and managing Google Sheets documents directly from your MCP client (e.g., Claude Desktop).
🚀 Quick Start
1. Prerequisites
- Node.js v18 or higher
- Google Cloud Project with Sheets API enabled
- Service Account with JSON key file
2. Installation
3. Google Cloud Setup
- Go to Google Cloud Console
- Create a new project or select existing
- Enable Google Sheets API:
- Navigate to "APIs & Services" → "Library"
- Search for "Google Sheets API" and click "Enable"
- Create Service Account:
- Go to "APIs & Services" → "Credentials"
- Click "Create Credentials" → "Service Account"
- Download the JSON key file
- Share your spreadsheets:
- Open your Google Sheet
- Click Share and add the service account email (from JSON file)
- Grant "Editor" permissions
4. Configure MCP Client
Easy Setup (Recommended)
Run the interactive setup script:
This will:
- Guide you through the configuration
- Automatically detect your Node.js installation (including nvm)
- Find your Claude Desktop config
- Create the proper JSON configuration
- Optionally create a .env file for development
Manual Setup
If you prefer manual configuration, add to your Claude Desktop config:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- Linux:
~/.config/claude/claude_desktop_config.json
Restart Claude Desktop after adding the configuration.
📦 Build & Development
Development Commands
Task Runner (Alternative)
If you have Task installed:
Development Setup
- Create
.env
file for testing:
- Run in development mode:
📋 Available Tools
Reading Data
sheets_get_values
- Read from a rangesheets_batch_get_values
- Read from multiple rangessheets_get_metadata
- Get spreadsheet infosheets_check_access
- Check access permissions
Writing Data
sheets_update_values
- Write to a rangesheets_batch_update_values
- Write to multiple rangessheets_append_values
- Append rows to a tablesheets_clear_values
- Clear cell contents
Sheet Management
sheets_insert_sheet
- Add new sheetsheets_delete_sheet
- Remove sheetsheets_duplicate_sheet
- Copy sheetsheets_copy_to
- Copy to another spreadsheetsheets_update_sheet_properties
- Update sheet settings
Cell Formatting
sheets_format_cells
- Format cells (colors, fonts, alignment, number formats)sheets_update_borders
- Add or modify cell borderssheets_merge_cells
- Merge cells togethersheets_unmerge_cells
- Unmerge previously merged cellssheets_add_conditional_formatting
- Add conditional formatting rules
🔧 Code Quality
Linting
Formatting
Type Checking
❗ Troubleshooting
Common Issues
"Authentication failed"
- Verify JSON key path is absolute and correct
- Check GOOGLE_PROJECT_ID matches your project
- Ensure Sheets API is enabled
"Permission denied"
- Share spreadsheet with service account email
- Service account needs "Editor" role
- Check email in JSON file (client_email field)
"Spreadsheet not found"
- Verify spreadsheet ID from URL
- Format:
https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit
MCP Connection Issues
- Ensure you're using the built version (
dist/index.js
) - Check that Node.js path is correct in Claude Desktop config
- Look for errors in Claude Desktop logs
- Use
npm run inspector
to debug
🔍 Finding IDs
Spreadsheet ID
From the URL:
Sheet ID
Use sheets_get_metadata
to list all sheets with their IDs.
📝 Tips
- Always test with a copy of your data
- Use batch operations for better performance
- Set appropriate permissions (read-only vs edit)
- Check rate limits for large operations
- Use
sheets_check_access
to verify permissions before operations
🤝 Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Run tests and linting (
npm run check
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
mcp-gsheets
Related MCP Servers
- JavaScript
- PythonMIT License
- RustBSD Zero Clause License
- Python