
Google Sheets
STDIOGoogle Sheets API integration for reading, writing, and managing spreadsheets via MCP
Google Sheets API integration for reading, writing, and managing spreadsheets via MCP
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).
# Clone the repository git clone https://github.com/freema/mcp-gsheets.git # Or using SSH # git clone [email protected]:freema/mcp-gsheets.git cd mcp-gsheets # Install dependencies npm install # Build the project npm run build
Run the interactive setup script:
npm run setup
This will:
If you prefer manual configuration, add to your Claude Desktop config:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
~/.config/claude/claude_desktop_config.json
{ "mcpServers": { "mcp-gsheets": { "command": "node", "args": ["/absolute/path/to/mcp-gsheets/dist/index.js"], "env": { "GOOGLE_PROJECT_ID": "your-project-id", "GOOGLE_APPLICATION_CREDENTIALS": "/absolute/path/to/service-account-key.json" } } } }
Restart Claude Desktop after adding the configuration.
# Development mode with hot reload npm run dev # Build for production npm run build # Type checking npm run typecheck # Clean build artifacts npm run clean # Run MCP inspector for debugging npm run inspector # Run MCP inspector in development mode npm run inspector:dev
If you have Task installed:
# Install dependencies task install # Build the project task build # Run in development mode task dev # Run linter task lint # Format code task fmt # Run all checks task check
.env
file for testing:cp .env.example .env # Edit .env with your credentials: # GOOGLE_PROJECT_ID=your-project-id # GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json # TEST_SPREADSHEET_ID=your-test-spreadsheet-id
npm run dev # Watch mode with auto-reload
sheets_get_values
- Read from a rangesheets_batch_get_values
- Read from multiple rangessheets_get_metadata
- Get spreadsheet infosheets_check_access
- Check access permissionssheets_update_values
- Write to a rangesheets_batch_update_values
- Write to multiple rangessheets_append_values
- Append rows to a tablesheets_clear_values
- Clear cell contentssheets_insert_sheet
- Add new sheetsheets_delete_sheet
- Remove sheetsheets_duplicate_sheet
- Copy sheetsheets_copy_to
- Copy to another spreadsheetsheets_update_sheet_properties
- Update sheet settingssheets_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# Run ESLint npm run lint # Fix auto-fixable issues npm run lint:fix
# Check formatting with Prettier npm run format:check # Format code npm run format
# Run TypeScript type checking npm run typecheck
"Authentication failed"
"Permission denied"
"Spreadsheet not found"
https://docs.google.com/spreadsheets/d/[SPREADSHEET_ID]/edit
MCP Connection Issues
dist/index.js
)npm run inspector
to debugFrom the URL:
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit
↑ This is the spreadsheet ID
Use sheets_get_metadata
to list all sheets with their IDs.
sheets_check_access
to verify permissions before operationsgit checkout -b feature/amazing-feature
)npm run check
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)This project is licensed under the MIT License - see the LICENSE file for details.