Skip to main content
Glama
josedu90

MCP Google Workspace Server

sheets_get_values

Extract specific data from a Google Sheets range using the spreadsheet ID and A1 notation. Facilitates integration with Google Workspace via natural language commands.

Instructions

Get values from a Google Sheet range

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
rangeYesA1 notation range
spreadsheet_idYesID of the spreadsheet

Implementation Reference

  • The MCP tool handler for sheets_get_values. Validates input arguments and delegates to SheetsService.get_values to fetch values from the specified spreadsheet range.
    async def _handle_sheets_get_values(
        self, context: GoogleWorkspaceContext, arguments: dict
    ) -> Dict[str, Any]:
        """Handle sheets get values requests."""
        spreadsheet_id = arguments.get("spreadsheet_id")
        range_name = arguments.get("range")
    
        if not spreadsheet_id or not range_name:
            raise ValueError("Both spreadsheet_id and range are required")
    
        logger.debug(f"Getting sheet values - ID: {spreadsheet_id}, Range: {range_name}")
        result = await context.sheets.get_values(
            spreadsheet_id=spreadsheet_id, range_name=range_name
        )
        logger.debug(f"Sheet values retrieved - Row count: {len(result.get('values', []))}")
        return result
  • Input schema definition for the sheets_get_values tool, specifying required parameters: spreadsheet_id and range.
    types.Tool(
        name="sheets_get_values",
        description="Get values from a Google Sheet range",
        inputSchema={
            "type": "object",
            "properties": {
                "spreadsheet_id": {
                    "type": "string",
                    "description": "ID of the spreadsheet",
                },
                "range": {"type": "string", "description": "A1 notation range"},
            },
            "required": ["spreadsheet_id", "range"],
        },
    ),
  • Dynamic registration of tool handlers, including sheets_get_values, by looking up _handle_sheets_get_values and adding to registry.
    for tool in self._get_tools_list():
        handler_name = f"_handle_{tool.name}"
        if hasattr(self, handler_name):
            handler = getattr(self, handler_name)
            self._tool_registry[tool.name] = handler
            logger.debug(f"Registered handler for {tool.name}")
  • Core implementation in SheetsService that interacts with Google Sheets API to retrieve values from the specified range.
    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)}
Install Server

Other Tools

Related Tools

Latest Blog Posts

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/josedu90/mcp-suiteg'

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