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.json
from 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_results
andpage_token
for seamless paginationsearch_spreadsheets
: Usemax_results
andpage_token
for search results
Manual Pagination
get_sheet_names
: Usemax_sheets
andstart_index
for worksheet nameslist_tables
: Usemax_tables
andstart_index
for 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.json
exists in project directory - Run
uv run authenticate.py
to set up authentication
- Ensure
-
"Token file not found"
- Run
uv run authenticate.py
to create a new token
- Run
-
"Module not found"
- Run
uv sync
to install dependencies
- Run
-
"Authentication required"
- Run
uv run authenticate.py
to 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.json
or.token.json
to 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