mcp-google-sheets-server
Enables professional Google Sheets management with 40+ tools for sheet operations, formatting, charts, and enterprise features.
README
๐ MCP Google Sheets Server v2.1.0
Complete MCP Server for Google Sheets - 40+ tools for professional sheet management, advanced charts, and enterprise features!
โจ NEW in v2.1.0 - Complete Sheet Management & Enhanced Charts!
- ๐ Complete Sheet Management - Create, rename, hide/show, move, duplicate, delete sheets
- ๐ Advanced Chart Creation - Create charts with data, from tables, update chart data
- ๐ Sheet Information - Get detailed sheet properties, list all sheets
- ๐จ Professional Formatting - Colors, fonts, borders, conditional formatting
- ๐ Data Protection - Validation rules, range protection, access control
- โก Performance Optimized - Batch operations, efficient API usage
- ๐ Enterprise Ready - 40+ tools for professional Google Sheets management
๐ Quick Installation
Method 1: Install from npm (Recommended)
npm install -g mcp-google-sheets-server
Method 2: Local installation
npm install mcp-google-sheets-server
Method 3: Use npx (No installation needed)
npx mcp-google-sheets-server
๐ Google Service Account Authentication
Detailed Guide
See GOOGLE_SERVICE_ACCOUNT_SETUP.md for step-by-step instructions on how to get Google Service Account Key.
Quick Configuration
{
"mcpServers": {
"mcp-google-sheets": {
"command": "npx",
"args": ["mcp-google-sheets-server"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "your-service-account-json"
}
}
}
}
๐ Complete Tool Collection (40+ Tools!)
๐ง Basic Operations
| Tool | Description | Parameters |
|---|---|---|
sheets_get_data |
Get data with formatting options | spreadsheetId, range, valueRenderOption, dateTimeRenderOption |
sheets_update_data |
Update data with input options | spreadsheetId, range, values, valueInputOption |
sheets_create |
Create spreadsheet with theme | title, initialData, theme |
๐จ Advanced Formatting
| Tool | Description | Parameters |
|---|---|---|
sheets_format_cells |
Apply professional formatting | spreadsheetId, range, backgroundColor, textColor, fontSize, bold, italic, alignment, borders |
sheets_conditional_formatting |
Set conditional rules | spreadsheetId, range, ruleType, value, colors |
sheets_merge_cells |
Merge cells with options | spreadsheetId, range, mergeType |
๐ Enhanced Charts & Visualization
| Tool | Description | Parameters |
|---|---|---|
sheets_create_chart |
Create basic charts | spreadsheetId, chartType, dataRange, title, position |
sheets_create_chart_with_data |
Create charts with data | spreadsheetId, chartType, dataRange, title, position, chartOptions |
sheets_create_chart_from_table |
Create charts from tables | spreadsheetId, chartType, tableRange, title, useFirstRowAsLabels |
sheets_update_chart |
Update existing charts | spreadsheetId, chartId, title, dataRange |
sheets_update_chart_data |
Update chart data | spreadsheetId, chartId, newDataRange, updateTitle |
sheets_delete_chart |
Delete charts | spreadsheetId, chartId |
sheets_list_charts |
List all charts | spreadsheetId |
๐ Complete Sheet Management
| Tool | Description | Parameters |
|---|---|---|
sheets_create_sheet |
Create new sheets | spreadsheetId, title, index |
sheets_duplicate_sheet |
Duplicate existing sheets | spreadsheetId, sheetId, newTitle |
sheets_delete_sheet |
Delete sheets | spreadsheetId, sheetId |
sheets_rename_sheet |
Rename sheets | spreadsheetId, sheetId, newTitle |
sheets_hide_sheet |
Hide sheets from view | spreadsheetId, sheetId |
sheets_show_sheet |
Show hidden sheets | spreadsheetId, sheetId |
sheets_move_sheet |
Move sheets to new position | spreadsheetId, sheetId, newIndex |
sheets_get_sheet_info |
Get all sheet information | spreadsheetId, includeGridData |
sheets_get_sheet_properties |
Get specific sheet properties | spreadsheetId, sheetId |
๐ Data Validation & Protection
| Tool | Description | Parameters |
|---|---|---|
sheets_set_data_validation |
Set validation rules | spreadsheetId, range, ruleType, values, message |
sheets_protect_range |
Protect ranges from editing | spreadsheetId, range, description, warningOnly |
๐ Advanced Data Operations
| Tool | Description | Parameters |
|---|---|---|
sheets_insert_rows |
Insert rows at position | spreadsheetId, sheetId, startIndex, endIndex |
sheets_insert_columns |
Insert columns at position | spreadsheetId, sheetId, startIndex, endIndex |
sheets_delete_rows |
Delete rows from position | spreadsheetId, sheetId, startIndex, endIndex |
sheets_delete_columns |
Delete columns from position | spreadsheetId, sheetId, startIndex, endIndex |
๐ Formula & Calculation
| Tool | Description | Parameters |
|---|---|---|
sheets_set_formula |
Set formulas in cells | spreadsheetId, range, formulas |
sheets_calculate_formula |
Calculate formula results | spreadsheetId, formula |
โก Batch Operations
| Tool | Description | Parameters |
|---|---|---|
sheets_batch_update |
Multiple operations in one request | spreadsheetId, requests |
sheets_batch_get |
Get data from multiple ranges | spreadsheetId, ranges, valueRenderOption |
๐ Search & Sharing
| Tool | Description | Parameters |
|---|---|---|
sheets_search |
Search spreadsheets | query, maxResults |
sheets_share |
Share with permissions | spreadsheetId, email, role, message |
sheets_get_metadata |
Get comprehensive metadata | spreadsheetId, includeGridData |
๐งน Utility Operations
| Tool | Description | Parameters |
|---|---|---|
sheets_clear_range |
Clear content and formatting | spreadsheetId, range |
sheets_copy_to |
Copy sheets between spreadsheets | spreadsheetId, sheetId, destinationSpreadsheetId |
๐ ๏ธ Advanced Setup Examples
Create Professional Spreadsheet with Multiple Sheets
{
"mcpServers": {
"mcp-google-sheets": {
"command": "npx",
"args": ["mcp-google-sheets-server"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "your-service-account-json"
}
}
}
}
๐ Advanced Usage Examples
Complete Sheet Management Workflow
// 1. Create spreadsheet
const spreadsheet = await mcp.callTool("sheets_create", {
title: "Business Dashboard 2024",
theme: "LIGHT",
});
// 2. Create multiple sheets
await mcp.callTool("sheets_create_sheet", {
spreadsheetId: spreadsheet.spreadsheetId,
title: "Sales Data",
index: 1,
});
await mcp.callTool("sheets_create_sheet", {
spreadsheetId: spreadsheet.spreadsheetId,
title: "Charts",
index: 2,
});
// 3. Add data to Sales Data sheet
await mcp.callTool("sheets_update_data", {
spreadsheetId: spreadsheet.spreadsheetId,
range: "Sales Data!A1:D6",
values: [
["Month", "Revenue", "Expenses", "Profit"],
["January", 50000, 30000, 20000],
["February", 55000, 32000, 23000],
["March", 60000, 35000, 25000],
["April", 65000, 38000, 27000],
["May", 70000, 40000, 30000],
],
});
// 4. Create professional chart
await mcp.callTool("sheets_create_chart_from_table", {
spreadsheetId: spreadsheet.spreadsheetId,
chartType: "COLUMN",
tableRange: "Sales Data!A1:D6",
title: "Monthly Financial Performance",
useFirstRowAsLabels: true,
});
// 5. Rename and organize sheets
await mcp.callTool("sheets_rename_sheet", {
spreadsheetId: spreadsheet.spreadsheetId,
sheetId: 0, // First sheet
newTitle: "Summary",
});
// 6. Move Charts sheet to the end
await mcp.callTool("sheets_move_sheet", {
spreadsheetId: spreadsheet.spreadsheetId,
sheetId: 2, // Charts sheet
newIndex: 3, // Move to end
});
// 7. Hide a temporary sheet if needed
await mcp.callTool("sheets_hide_sheet", {
spreadsheetId: spreadsheet.spreadsheetId,
sheetId: 1, // Hide Sales Data sheet
});
Advanced Chart Management
// Create chart with custom options
await mcp.callTool("sheets_create_chart_with_data", {
spreadsheetId: "your-spreadsheet-id",
chartType: "LINE",
dataRange: "A1:C10",
title: "Trend Analysis",
chartOptions: {
colors: ["#4285F4", "#34A853"],
legendPosition: "RIGHT_LEGEND",
},
});
// Update chart data when source data changes
await mcp.callTool("sheets_update_chart_data", {
spreadsheetId: "your-spreadsheet-id",
chartId: 12345,
newDataRange: "A1:C15", // Extended range
updateTitle: "Updated Trend Analysis",
});
// List all charts in spreadsheet
const charts = await mcp.callTool("sheets_list_charts", {
spreadsheetId: "your-spreadsheet-id",
});
// Delete unwanted charts
await mcp.callTool("sheets_delete_chart", {
spreadsheetId: "your-spreadsheet-id",
chartId: 12345,
});
Sheet Information and Properties
// Get information about all sheets
const sheetInfo = await mcp.callTool("sheets_get_sheet_info", {
spreadsheetId: "your-spreadsheet-id",
includeGridData: false,
});
// Get properties of specific sheet
const sheetProps = await mcp.callTool("sheets_get_sheet_properties", {
spreadsheetId: "your-spreadsheet-id",
sheetId: 0,
});
// Check if sheet is hidden
if (sheetProps.properties.hidden) {
// Show the sheet
await mcp.callTool("sheets_show_sheet", {
spreadsheetId: "your-spreadsheet-id",
sheetId: 0,
});
}
๐ง Troubleshooting
Common errors:
| Error | Solution |
|---|---|
| "GOOGLE_SERVICE_ACCOUNT_KEY not found" | โข Check environment variable in mcp.json<br>โข Ensure JSON is properly escaped |
| "Permission denied" | โข Check service account access permissions<br>โข Ensure Google Sheets are shared with service account |
| "Invalid credentials" | โข Check service account JSON file<br>โข Ensure Google Sheets API is enabled |
๐ Advantages Over Other Solutions
- โ 40+ Advanced Tools - Most comprehensive Google Sheets MCP server
- โ Complete Sheet Management - Full control over sheets (create, rename, hide, move, delete)
- โ Enhanced Chart Creation - Create charts with data, from tables, update dynamically
- โ Professional Formatting - Colors, fonts, borders, conditional formatting
- โ Data Validation - Set rules and protect sensitive data
- โ Batch Operations - High-performance multiple operations
- โ Sheet Information - Get detailed properties and status of all sheets
- โ Performance Optimized - Efficient API usage and batch processing
๐ License
MIT License - See LICENSE file for details.
๐ค Contributing
All contributions are welcome! Please:
- ๐ด Fork the project
- ๐ฟ Create a feature branch (
git checkout -b feature/AmazingFeature) - ๐พ Commit your changes (
git commit -m 'Add some AmazingFeature') - ๐ Push to the branch (
git push origin feature/AmazingFeature) - ๐ Open a Pull Request
๐ Support
If you encounter issues:
- ๐ Check Issues first
- ๐ Create a new issue if none exists
- ๐ Describe the problem in detail and how to reproduce it
โญ Star the Project
If this project is helpful, please give it a star! โญ
<div align="center">
Made with โค๏ธ by Longtran2404
๐ Now with 40+ Tools for Complete Google Sheets Management! ๐
</div>
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.