Skip to main content
Glama

search_object

Find design objects by name within Penpot files using search queries, including regex patterns, to locate specific elements quickly.

Instructions

Search for objects within a Penpot file by name.

Args: file_id: The ID of the Penpot file to search in query: Search string (supports regex patterns)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
file_idYes
queryYes

Implementation Reference

  • Main handler implementation for the 'search_object' tool. Searches object names case-insensitively using regex within the file's pagesIndex, returns matching objects with id, name, page_id, page_name, object_type.
    def search_object(file_id: str, query: str) -> dict: """Search for objects within a Penpot file by name. Args: file_id: The ID of the Penpot file to search in query: Search string (supports regex patterns) """ try: file_data = get_cached_file(file_id) if "error" in file_data: return file_data pattern = re.compile(query, re.IGNORECASE) matches = [] data = file_data.get('data', {}) for page_id, page_data in data.get('pagesIndex', {}).items(): page_name = page_data.get('name', 'Unnamed') for obj_id, obj_data in page_data.get('objects', {}).items(): obj_name = obj_data.get('name', '') if pattern.search(obj_name): matches.append({ 'id': obj_id, 'name': obj_name, 'page_id': page_id, 'page_name': page_name, 'object_type': obj_data.get('type', 'unknown') }) return {'objects': matches} except Exception as e: return self._handle_api_error(e) if include_resource_tools:
  • Helper function used by search_object to retrieve and cache file data from Penpot API.
    def get_cached_file(file_id: str) -> dict: """Internal helper to retrieve a file, using cache if available. Args: file_id: The ID of the Penpot file """ cached_data = self.file_cache.get(file_id) if cached_data is not None: return cached_data try: file_data = self.api.get_file(file_id=file_id) self.file_cache.set(file_id, file_data) return file_data except Exception as e: return self._handle_api_error(e)
  • The _register_tools method where search_object is registered via @self.mcp.tool() decorator.
    """Register all MCP tools. If include_resource_tools is True, also register resource logic as tools.""" @self.mcp.tool()

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/montevive/penpot-mcp'

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