
Research
Malicious npm Packages Impersonate Flashbots SDKs, Targeting Ethereum Wallet Credentials
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
mcp-google-sheets-server
Advanced tools
Advanced MCP Server for Google Sheets - 40+ tools for complete sheet management, charts, and formatting
Complete MCP Server for Google Sheets - 40+ tools for professional sheet management, advanced charts, and enterprise features!
npm install -g mcp-google-sheets-server
npm install mcp-google-sheets-server
npx mcp-google-sheets-server
See GOOGLE_SERVICE_ACCOUNT_SETUP.md for step-by-step instructions on how to get Google Service Account Key.
{
"mcpServers": {
"mcp-google-sheets": {
"command": "npx",
"args": ["mcp-google-sheets-server"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "your-service-account-json"
}
}
}
}
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 |
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 |
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 |
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 |
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 |
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 |
Tool | Description | Parameters |
---|---|---|
sheets_set_formula | Set formulas in cells | spreadsheetId , range , formulas |
sheets_calculate_formula | Calculate formula results | spreadsheetId , formula |
Tool | Description | Parameters |
---|---|---|
sheets_batch_update | Multiple operations in one request | spreadsheetId , requests |
sheets_batch_get | Get data from multiple ranges | spreadsheetId , ranges , valueRenderOption |
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 |
Tool | Description | Parameters |
---|---|---|
sheets_clear_range | Clear content and formatting | spreadsheetId , range |
sheets_copy_to | Copy sheets between spreadsheets | spreadsheetId , sheetId , destinationSpreadsheetId |
{
"mcpServers": {
"mcp-google-sheets": {
"command": "npx",
"args": ["mcp-google-sheets-server"],
"env": {
"GOOGLE_SERVICE_ACCOUNT_KEY": "your-service-account-json"
}
}
}
}
// 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
});
// 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,
});
// 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,
});
}
Error | Solution |
---|---|
"GOOGLE_SERVICE_ACCOUNT_KEY not found" | โข Check environment variable in mcp.json โข Ensure JSON is properly escaped |
"Permission denied" | โข Check service account access permissions โข Ensure Google Sheets are shared with service account |
"Invalid credentials" | โข Check service account JSON file โข Ensure Google Sheets API is enabled |
MIT License - See LICENSE file for details.
All contributions are welcome! Please:
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)If you encounter issues:
If this project is helpful, please give it a star! โญ
Made with โค๏ธ by Longtran2404
๐ Now with 40+ Tools for Complete Google Sheets Management! ๐
FAQs
Advanced MCP Server for Google Sheets - 40+ tools for complete sheet management, charts, and formatting
The npm package mcp-google-sheets-server receives a total of 78 weekly downloads. As such, mcp-google-sheets-server popularity was classified as not popular.
We found that mcp-google-sheets-server demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.ย It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Four npm packages disguised as cryptographic tools steal developer credentials and send them to attacker-controlled Telegram infrastructure.
Security News
Ruby maintainers from Bundler and rbenv teams are building rv to bring Python uv's speed and unified tooling approach to Ruby development.
Security News
Following last weekโs supply chain attack, Nx published findings on the GitHub Actions exploit and moved npm publishing to Trusted Publishers.