Skip to content

Bug: SyntaxError in late-sdk[mcp] — spaces in GMB function names break MCP server #1

@Ahmed-aleryani

Description

@Ahmed-aleryani

Summary

late-sdk[mcp] v1.2.27 fails to start due to syntax errors in auto-generated Google Business (GMB) function names in late/mcp/generated_tools.py. Spaces appear where underscores should be, making the entire MCP server unusable.

Error

$ uvx --from "late-sdk[mcp]" late-mcp
Traceback (most recent call last):
  File ".../late/mcp/server.py", line 796, in <module>
    from .generated_tools import register_generated_tools
  File ".../late/mcp/generated_tools.py", line 1005
    def gmb attributes_get_google_business_attributes(account_id: str) -> str:
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: expected '('

Root Cause

late/mcp/generated_tools.py contains 12 function definitions and 12 method calls with spaces in identifiers where underscores are needed. This appears to be a code generation issue — the GMB resource names (gmb attributes, gmb food menus, etc.) are being inserted with spaces instead of being converted to valid Python identifiers.

Affected Identifiers

Function definitions (12 total)

Broken Should Be
def gmb attributes_get_google_business_attributes def gmb_attributes_get_google_business_attributes
def gmb attributes_update_google_business_attributes def gmb_attributes_update_google_business_attributes
def gmb food menus_get_google_business_food_menus def gmb_food_menus_get_google_business_food_menus
def gmb food menus_update_google_business_food_menus def gmb_food_menus_update_google_business_food_menus
def gmb location details_get_google_business_location_details def gmb_location_details_get_google_business_location_details
def gmb location details_update_google_business_location_details def gmb_location_details_update_google_business_location_details
def gmb media_list_google_business_media def gmb_media_list_google_business_media
def gmb media_create_google_business_media def gmb_media_create_google_business_media
def gmb media_delete_google_business_media def gmb_media_delete_google_business_media
def gmb place actions_list_google_business_place_actions def gmb_place_actions_list_google_business_place_actions
def gmb place actions_create_google_business_place_action def gmb_place_actions_create_google_business_place_action
def gmb place actions_delete_google_business_place_action def gmb_place_actions_delete_google_business_place_action

Method calls (12 total, same pattern)

# Broken
response = client.gmb attributes.get_google_business_attributes(...)
response = client.gmb food menus.get_google_business_food_menus(...)
response = client.gmb location details.get_google_business_location_details(...)
response = client.gmb media.list_google_business_media(...)
response = client.gmb place actions.list_google_business_place_actions(...)

# Fixed
response = client.gmb_attributes.get_google_business_attributes(...)
response = client.gmb_food_menus.get_google_business_food_menus(...)
response = client.gmb_location_details.get_google_business_location_details(...)
response = client.gmb_media.list_google_business_media(...)
response = client.gmb_place_actions.list_google_business_place_actions(...)

Suggested Fix

In the code generator that produces generated_tools.py, ensure resource names are sanitized to valid Python identifiers by replacing spaces with underscores:

resource_name = resource_name.replace(" ", "_")

Environment

  • late-sdk version: 1.2.27 (latest on PyPI)
  • Python: 3.13 (via uvx)
  • OS: macOS (Darwin 25.2.0)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions