jayeshchowdary/gsheets-mcp
If you are the rightful owner of gsheets-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server that provides tools for interacting with Google Sheets and Google Drive using OAuth2 authentication.
Google Sheets MCP Server
A Model Context Protocol (MCP) server that provides tools for interacting with Google Sheets and Google Drive using OAuth2 authentication.
Features
- Authentication: OAuth2-based authentication with Google APIs
- Google Sheets: Create, read, update, and delete spreadsheets and worksheets
- Data Operations: Batch operations and data filtering
- Formatting: Cell formatting, charts, and conditional formatting
- Pagination: Smart pagination for large datasets with max limits and smooth navigation
Prerequisites
- Python 3.12+
- UV package manager
- Google Cloud Project with Google Sheets API enabled
- OAuth2 credentials from Google Cloud Console
Quick Start
1. Clone and Setup
# Clone the repository
git clone https://github.com/jayeshchowdary/gsheets-mcp
cd gsheets-mcp
# Install dependencies with UV
uv sync
2. Authentication Setup
- Download your
credentials.jsonfrom Google Cloud Console - Place it in the project directory
- Run authentication:
uv run authenticate.py - Follow the prompts to complete OAuth2 authentication
3. Start the MCP Server
# Start the server
uv run simplemcp.py
4. Test with MCP Inspector
# In another terminal, start the inspector
npx @modelcontextprotocol/inspector
# Connect to your server using the inspector interface
# Command: uv
# Args: run simplemcp.py
# Working Directory: . (current directory)
Project Structure
gsheets-mcp/
├── pyproject.toml # UV project configuration
├── uv.lock # Locked dependencies
├── simplemcp.py # Main MCP server
├── authenticate.py # Authentication script
├── credentials.json # OAuth2 credentials (not in git)
├── .token.json # Authentication token (not in git)
├── mcp-server-config.json # MCP client configuration
└── README.md # This file
Available Tools
Spreadsheet Management
list_sheets- List Google Sheets in your Drive with pagination supportcreate_google_sheet- Create a new Google Sheetdelete_spreadsheet- Delete a Google Sheetget_spreadsheet_info- Get spreadsheet metadata
Worksheet Management
add_worksheet- Add a new worksheet to a spreadsheetdelete_sheet- Delete a worksheet from a spreadsheetget_sheet_names- Get worksheet names with pagination supportfind_worksheet_by_title- Find worksheet by exact titlecopy_sheet_to_another_spreadsheet- Copy sheet between spreadsheets
Data Operations
get_cell_data- Get data from specific cellsupdate_sheet_data- Update cell dataappend_values_to_spreadsheet- Append data to spreadsheetbatch_update_by_filter- Update values by data filterexecute_sql_query- Execute SQL-like queries on sheets
Data Filtering
get_spreadsheet_by_data_filter- Get data using filtersbatch_get_spreadsheet_values_by_data_filter- Get values by data filterbatch_clear_spreadsheet_values- Clear multiple rangesbatch_clear_values_by_data_filter- Clear values by data filter
Table Operations
list_tables- List tables in a spreadsheet with pagination supportget_table_schema- Get table structure and schemacreate_sheet_from_json- Create sheet from JSON data
Formatting and Charts
format_cell- Apply cell formattingcreate_chart- Create charts in sheetsset_basic_filter- Set basic filtersclear_basic_filter- Clear basic filters
Dimension Management
append_dimension- Add rows/columnsinsert_dimension- Insert rows/columns at specific positionsdelete_dimension- Delete rows/columnscreate_spreadsheet_column- Create new columnscreate_spreadsheet_row- Create new rows
Developer Metadata
create_developer_metadata- Create metadatasearch_developer_metadata- Search metadatadelete_developer_metadata- Delete metadata
Properties Management
update_sheet_properties- Update worksheet propertiesupdate_spreadsheet_properties- Update spreadsheet properties
Drive Operations
search_spreadsheets- Search for spreadsheets in Drive with pagination support
Pagination Features
The server now includes smart pagination for tools that return large datasets:
Google Drive API Pagination
list_sheets: Usemax_resultsandpage_tokenfor seamless paginationsearch_spreadsheets: Usemax_resultsandpage_tokenfor search results
Manual Pagination
get_sheet_names: Usemax_sheetsandstart_indexfor worksheet nameslist_tables: Usemax_tablesandstart_indexfor table listings
Benefits
- Faster Response Times: Smaller chunks load faster
- Better Memory Management: Avoid overwhelming memory with large datasets
- Smooth User Experience: Progressive loading for better UX
- Scalable Operations: Handle thousands of items efficiently
For detailed pagination usage, see PAGINATION_GUIDE.md.
Development
Adding Dependencies
# Add new package
uv add package-name
# Sync after changes
uv sync
Testing
# Test if server can import
uv run python -c "import simplemcp; print('✅ Ready!')"
# Test credentials
uv run python -c "import simplemcp; print(f'Credentials: {simplemcp.creds is not None}')"
Troubleshooting
Common Issues
-
"Credentials file not found"
- Ensure
credentials.jsonexists in project directory - Run
uv run authenticate.pyto set up authentication
- Ensure
-
"Token file not found"
- Run
uv run authenticate.pyto create a new token
- Run
-
"Module not found"
- Run
uv syncto install dependencies
- Run
-
"Authentication required"
- Run
uv run authenticate.pyto set up authentication
- Run
UV-Specific Issues
-
"Command not found: uv"
- Install UV:
curl -LsSf https://astral.sh/uv/install.sh | sh - Restart your terminal
- Install UV:
-
"Failed to install dependencies"
- Clear UV cache:
uv cache clean - Reinstall:
uv sync --reinstall
- Clear UV cache:
Security Notes
- Never commit
credentials.jsonor.token.jsonto version control - Keep your OAuth2 credentials secure
- Tokens are automatically refreshed when needed
Support
For issues or questions:
- Check the troubleshooting section above
- Verify UV is properly installed and dependencies are synced
- Ensure Google Sheets API is enabled in your Google Cloud Project
- Check that your OAuth2 credentials have the correct scopes