Skip to main content
Glama
K02D

MCP Tabular Data Analysis Server

by K02D

filter_rows

Filter rows in CSV or SQLite files using comparison operators to extract specific data based on column conditions.

Instructions

Filter rows based on a condition. Args: file_path: Path to CSV or SQLite file column: Column name to filter on operator: Comparison operator - 'eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'contains', 'startswith', 'endswith' value: Value to compare against limit: Maximum number of rows to return (default 100) Returns: Dictionary containing: - filter_applied: Description of the filter - original_count: Number of rows before filtering - filtered_count: Number of rows after filtering - rows: Filtered rows (up to limit)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
file_pathYes
columnYes
operatorYes
valueYes
limitNo

Implementation Reference

  • The filter_rows tool handler function. Loads data using _load_data helper, applies conditional filtering based on operator and value, and returns filtered rows preview with counts.
    def filter_rows( file_path: str, column: str, operator: str, value: str | float | int, limit: int = 100, ) -> dict[str, Any]: """ Filter rows based on a condition. Args: file_path: Path to CSV or SQLite file column: Column name to filter on operator: Comparison operator - 'eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'contains', 'startswith', 'endswith' value: Value to compare against limit: Maximum number of rows to return (default 100) Returns: Dictionary containing: - filter_applied: Description of the filter - original_count: Number of rows before filtering - filtered_count: Number of rows after filtering - rows: Filtered rows (up to limit) """ df = _load_data(file_path) if column not in df.columns: raise ValueError(f"Column '{column}' not found. Available: {df.columns.tolist()}") original_count = len(df) # Apply filter based on operator if operator == "eq": mask = df[column] == value elif operator == "ne": mask = df[column] != value elif operator == "gt": mask = df[column] > float(value) elif operator == "gte": mask = df[column] >= float(value) elif operator == "lt": mask = df[column] < float(value) elif operator == "lte": mask = df[column] <= float(value) elif operator == "contains": mask = df[column].astype(str).str.contains(str(value), case=False, na=False) elif operator == "startswith": mask = df[column].astype(str).str.startswith(str(value), na=False) elif operator == "endswith": mask = df[column].astype(str).str.endswith(str(value), na=False) else: raise ValueError( f"Unknown operator: {operator}. Use: eq, ne, gt, gte, lt, lte, contains, startswith, endswith" ) filtered_df = df[mask] return { "filter_applied": f"{column} {operator} {value}", "original_count": original_count, "filtered_count": len(filtered_df), "rows": filtered_df.head(limit).to_dict(orient="records"), "truncated": len(filtered_df) > limit, }

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/K02D/mcp-tabular'

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