{"name":"io.github.moooonad/mcp-google-sheets-full","slug":"moooonad-mcp-google-sheets-full","title":null,"description":"Full Google Sheets MCP: 26 tools + run_sheets_script escape hatch. User OAuth, no service account.","url":"https://mcp.market/server/moooonad-mcp-google-sheets-full","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":16,"stars":0,"forks":0,"downloads_week":92,"last_push_at":"2026-05-23T01:02:28.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/moooonad/mcp-google-sheets-full","website":null,"version":"0.2.0","remotes":[],"packages":[{"registryType":"npm","identifier":"mcp-google-sheets-full","version":"0.2.0","transport":{"type":"stdio"}}],"tools":[{"name":"add_sheet","description":"Add a new tab (sheet) to the spreadsheet. Returns the new sheetId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"append_values","description":"Append rows to the end of a table. The range is used as the search hint.","write_action":false,"price_micros":0,"input_schema":null},{"name":"auth_status","description":"Report the current auth configuration. Two modes: 'oauth' (default, interactive user account) or 'service_account' (GOOGLE_APPLICATION_CREDENTIALS env set, headless). Returns mode, expected file paths, and which files are present. Use to debug setup problems.","write_action":false,"price_micros":0,"input_schema":null},{"name":"batch_get_values","description":"Read multiple A1 ranges in one call.","write_action":false,"price_micros":0,"input_schema":null},{"name":"batch_update","description":"Run a structural batchUpdate on the spreadsheet (add/delete sheets, formatting, merges, freeze, conditional formatting, etc.). 'requests' is the Google Sheets API batchUpdate request array. See https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request.","write_action":true,"price_micros":0,"input_schema":null},{"name":"batch_update_values","description":"Update multiple A1 ranges in one call. Each item is { range, values }.","write_action":true,"price_micros":0,"input_schema":null},{"name":"clear_values","description":"Clear all values from one or more A1 ranges. Pass a single range or use ranges[].","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_spreadsheet","description":"Create a new spreadsheet owned by the authenticated user. Returns the new spreadsheetId and URL.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_columns","description":"Delete columns in range [start_index, end_index) (0-based, half-open).","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_rows","description":"Delete rows in range [start_index, end_index) (0-based, half-open).","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_sheet","description":"Delete a tab. Pass either sheet_id (gid) or sheet_name.","write_action":true,"price_micros":0,"input_schema":null},{"name":"duplicate_sheet","description":"Duplicate a tab within the same spreadsheet. Returns the new sheetId.","write_action":false,"price_micros":0,"input_schema":null},{"name":"format_cells","description":"Apply a CellFormat to a range. Pass a partial CellFormat object as 'format' (e.g. { backgroundColor: { red: 1 }, textFormat: { bold: true, fontSize: 12 }, horizontalAlignment: 'CENTER', numberFormat: { type: 'NUMBER', pattern: '#,##0.00' } }). Only the provided keys are updated. See https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/cells#CellFormat.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_spreadsheet","description":"Return spreadsheet metadata: title, list of sheets (tabs) with sheetId/title/index/gridProperties. Use this first when working on an unknown spreadsheet to discover tab names and gids. Set include_grid_data=true to also return cell data (large).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_values","description":"Read values from an A1 range (e.g. 'Sheet1!A1:D100'). Returns a 2D array of cell values.","write_action":false,"price_micros":0,"input_schema":null},{"name":"insert_columns","description":"Insert N empty columns starting at start_index (0-based).","write_action":true,"price_micros":0,"input_schema":null},{"name":"insert_rows","description":"Insert N empty rows starting at start_index (0-based, half-open: rows [start_index, start_index+count) are inserted).","write_action":true,"price_micros":0,"input_schema":null},{"name":"list_spreadsheets","description":"List Google Sheets files in the user's Drive (most-recently-modified first). Returns id, name, modifiedTime, webViewLink. Use this when the user mentions a sheet by name without giving the ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"merge_cells","description":"Merge a cell range. merge_type controls how: MERGE_ALL (default), MERGE_COLUMNS (merge each column), MERGE_ROWS (merge each row).","write_action":false,"price_micros":0,"input_schema":null},{"name":"rename_sheet","description":"Rename a tab.","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve_url","description":"Parse a Google Sheets URL and extract spreadsheetId and gid (tab id). Convenience helper so the user can paste a URL and the caller can grab the IDs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"run_sheets_script","description":"Escape hatch: execute an arbitrary Node.js script with full Google Sheets/Drive access. Use when no dedicated tool covers the operation, or when multiple coordinated calls are needed. The script runs in a fresh Node process with these globals already prepared: `sheets` (Sheets v4 client), `drive` (Drive v3 client), `google` (googleapis namespace), `auth` (OAuth2Client), `spreadsheetId` (string). U","write_action":true,"price_micros":0,"input_schema":null},{"name":"search_spreadsheets","description":"Search spreadsheets in the user's Drive by name (substring, case-insensitive) and/or full-text content. At least one of `name_contains` or `full_text` is required. Use this when the user refers to a sheet by part of its title.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_borders","description":"Set borders on a range. Pass per-side Border objects in 'borders' (top/bottom/left/right/innerHorizontal/innerVertical). Each Border = { style: 'SOLID'|'DOTTED'|'DASHED'|'SOLID_MEDIUM'|'SOLID_THICK'|'DOUBLE'|'NONE', color?: { red,green,blue,alpha } }.","write_action":false,"price_micros":0,"input_schema":null},{"name":"unmerge_cells","description":"Unmerge all merges within the given cell range.","write_action":false,"price_micros":0,"input_schema":null},{"name":"update_values","description":"Write a 2D array of values into an A1 range. Use value_input_option='USER_ENTERED' to evaluate formulas, 'RAW' to write literal strings.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-09-27T17:07:31.763Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T17:07:31.747Z","components":{"code":{"score":25,"max":25,"notes":["4 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":8,"max":15,"notes":["last push 128 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"mcp-google-sheets-full","version":"0.2.0","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-05-23T00:45:09.583Z","repositoryUrl":"git+https://github.com/moooonad/mcp-google-sheets-full.git","weeklyDownloads":92}],"repo":{"found":true,"owner":"moooonad","repo":"mcp-google-sheets-full","archived":false,"pushedAt":"2026-05-23T01:02:28Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/6061785?v=4","ownerCreatedAt":"2013-11-28T20:38:48Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/6061785?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":92,"license":"MIT","lastPushAt":"2026-05-23T01:02:28.000Z","score":16}}}},"grade_history":[],"reviews":[]}