describe_view
Retrieve the SQL definition and column structure of PostgreSQL views to understand database schema and query logic.
Instructions
Get the definition and columns of a view.
Args:
view_name: Name of the view
schema: Schema name (default: public)
Returns:
View definition SQL and column list
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| view_name | Yes | ||
| schema | No | public |
Implementation Reference
- postgres_mcp/postgres_client.py:392-432 (handler)Core handler function that executes the SQL queries to fetch view definition from information_schema.views and column details from information_schema.columns.def describe_view(self, view_name: str, schema: str = "public") -> dict[str, Any]: """Get view definition and columns. Args: view_name: View name schema: Schema name Returns: Dict with view definition and columns """ result = { "name": view_name, "schema": schema, "definition": "", "columns": [], } with self.get_cursor() as cursor: # Get view definition cursor.execute(""" SELECT view_definition FROM information_schema.views WHERE table_schema = %s AND table_name = %s """, (schema, view_name)) row = cursor.fetchone() if row: result["definition"] = row["view_definition"] # Get columns cursor.execute(""" SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_schema = %s AND table_name = %s ORDER BY ordinal_position """, (schema, view_name)) result["columns"] = [dict(row) for row in cursor.fetchall()] return result
- postgres_mcp/server.py:332-350 (registration)MCP tool registration using @mcp.tool() decorator. This is the entry point for the tool, which delegates to the PostgresClient instance and adds error handling and not-found response.@mcp.tool() @handle_db_error def describe_view(view_name: str, schema: str = "public") -> dict: """Get the definition and columns of a view. Args: view_name: Name of the view schema: Schema name (default: public) Returns: View definition SQL and column list """ client = get_client() result = client.describe_view(view_name, schema) if not result["definition"]: return not_found_response("View", f"{schema}.{view_name}") return result