Skip to main content
Glama

MCP Google Suite

by adexltd
MIT License
3
  • Linux
  • Apple
service.py3.76 kB
from typing import Any, Dict, List, Optional from googleapiclient.errors import HttpError from mcp_google_suite.base_service import BaseGoogleService class SheetsService(BaseGoogleService): """Google Sheets service implementation.""" def __init__(self, auth=None): super().__init__("sheets", "v4", auth) def create_spreadsheet(self, title: str, sheets: Optional[List[str]] = None) -> Dict[str, Any]: """Create a new Google Spreadsheet with optional sheets.""" try: spreadsheet_body = {"properties": {"title": title}} if sheets: spreadsheet_body["sheets"] = [ {"properties": {"title": sheet_name}} for sheet_name in sheets ] spreadsheet = self.service.spreadsheets().create(body=spreadsheet_body).execute() return {"success": True, "spreadsheet": spreadsheet} except HttpError as error: return {"success": False, **self.handle_error(error)} def get_values(self, spreadsheet_id: str, range_name: str) -> Dict[str, Any]: """Get values from a specific range in a spreadsheet.""" try: result = ( self.service.spreadsheets() .values() .get(spreadsheetId=spreadsheet_id, range=range_name) .execute() ) return {"success": True, "values": result.get("values", [])} except HttpError as error: return {"success": False, **self.handle_error(error)} def update_values( self, spreadsheet_id: str, range_name: str, values: List[List[Any]], major_dimension: str = "ROWS", ) -> Dict[str, Any]: """Update values in a specific range of a spreadsheet.""" try: body = {"values": values, "majorDimension": major_dimension} result = ( self.service.spreadsheets() .values() .update( spreadsheetId=spreadsheet_id, range=range_name, valueInputOption="USER_ENTERED", body=body, ) .execute() ) return {"success": True, "result": result} except HttpError as error: return {"success": False, **self.handle_error(error)} def append_values( self, spreadsheet_id: str, range_name: str, values: List[List[Any]], major_dimension: str = "ROWS", ) -> Dict[str, Any]: """Append values to a spreadsheet.""" try: body = {"values": values, "majorDimension": major_dimension} result = ( self.service.spreadsheets() .values() .append( spreadsheetId=spreadsheet_id, range=range_name, valueInputOption="USER_ENTERED", body=body, ) .execute() ) return {"success": True, "result": result} except HttpError as error: return {"success": False, **self.handle_error(error)} def clear_values(self, spreadsheet_id: str, range_name: str) -> Dict[str, Any]: """Clear values from a specific range in a spreadsheet.""" try: result = ( self.service.spreadsheets() .values() .clear(spreadsheetId=spreadsheet_id, range=range_name, body={}) .execute() ) return {"success": True, "result": result} except HttpError as error: return {"success": False, **self.handle_error(error)}

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/adexltd/mcp-google-suite'

If you have feedback or need assistance with the MCP directory API, please join our Discord server