get_tables
Retrieve detailed metadata, row counts, and sizes for all tables, views, and foreign tables in a specified PostgreSQL schema on Supabase. Supports safe read operations for database inspection.
Instructions
List all tables, foreign tables, and views in a schema with their sizes, row counts, and metadata.
Provides detailed information about all database objects in the specified schema:
Table/view names
Object types (table, view, foreign table)
Row counts
Size on disk
Column counts
Index information
Last vacuum/analyze times
Parameters:
schema_name: Name of the schema to inspect (e.g., 'public', 'auth', etc.)
SAFETY: This is a low-risk read operation that can be executed in SAFE mode.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| schema_name | Yes |
Implementation Reference
- supabase_mcp/tools/registry.py:30-35 (handler)Primary MCP-registered handler for the 'get_tables' tool. Defines input (schema_name: str), output (QueryResult), description, and delegates to feature manager for execution.@mcp.tool(description=tool_manager.get_description(ToolName.GET_TABLES)) # type: ignore async def get_tables(schema_name: str) -> QueryResult: """List all tables, foreign tables, and views in a schema with their sizes, row counts, and metadata.""" return await feature_manager.execute_tool( ToolName.GET_TABLES, services_container=services_container, schema_name=schema_name )
- Core execution logic for get_tables: retrieves the SQL query via query_manager and executes it, performing the actual tool operation.async def get_tables(self, container: "ServicesContainer", schema_name: str) -> QueryResult: """List all tables, foreign tables, and views in a schema with their sizes, row counts, and metadata.""" query_manager = container.query_manager query = query_manager.get_tables_query(schema_name) return await query_manager.handle_query(query)
- supabase_mcp/core/feature_manager.py:71-72 (registration)Dispatch registration in FeatureManager.execute_tool that routes ToolName.GET_TABLES to the get_tables handler.elif tool_name == ToolName.GET_TABLES: return await self.get_tables(services_container, **kwargs)
- Helper method to generate the SQL query string for listing tables in a schema by delegating to SQLLoader.def get_tables_query(self, schema_name: str) -> str: """Get a query to list all tables in a schema.""" return self.sql_loader.get_tables_query(schema_name)
- Helper that loads the 'get_tables.sql' template and parameterizes it with the schema_name.def get_tables_query(cls, schema_name: str) -> str: """Get a query to list all tables in a schema.""" query = cls.load_sql("get_tables") return query.replace("{schema_name}", schema_name)