Integrate with Google Sheets to read, write, and manage spreadsheet data.
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 git@github.com: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"
}
}
}
}
Instead of using a file path, you can provide the service account credentials directly as a JSON string. This is useful for containerized environments, CI/CD pipelines, or when you want to avoid managing credential files.
{
"mcpServers": {
"mcp-gsheets": {
"command": "node",
"args": ["/absolute/path/to/mcp-gsheets/dist/index.js"],
"env": {
"GOOGLE_PROJECT_ID": "your-project-id",
"GOOGLE_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\",\"project_id\":\"your-project\",\"private_key_id\":\"...\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n\",\"client_email\":\"...@....iam.gserviceaccount.com\",\"client_id\":\"...\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"token_uri\":\"https://oauth2.googleapis.com/token\",\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"client_x509_cert_url\":\"...\"}"
}
}
}
}
Note: When using GOOGLE_SERVICE_ACCOUNT_KEY
:
\\n
project_id
, you can omit GOOGLE_PROJECT_ID
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_batch_delete_sheets
- Delete multiple sheets at oncesheets_batch_format_cells
- Format multiple cell ranges at oncesheets_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 rulessheets_create_chart
- Create various types of chartssheets_update_chart
- Modify existing chartssheets_delete_chart
- Remove charts# 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 operationsSee CHANGELOG.md for a list of changes in each version.
git 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.
The official Plane MCP server provides integration with Plane APIs, enabling full AI automation of Plane projects, work items, cycles and more.
Automate your local browser
A Todo and Task Manager server for creating, updating, and managing tasks, using a SQLite database.
A server that enables access to Joplin notes and to-dos through the Model Context Protocol (MCP).
Connects AI agents to the Feishu/Lark platform for automating tasks like document processing, conversation management, and calendar scheduling.
A multi-agent mesh network designed for completing AI tasks in parallel.
A CalDAV MCP server to expose calendar operations as tools for AI assistants.
Interact with your Obsidian vault from your IDE or Claude Desktop.
Interact with the Coda API to manage documents and pages, including creating, reading, updating, and deleting.
A server for migrating subscription businesses from RevenueCat to Adapty, requiring a RevenueCat API key.