data_mean_horizontal
Calculate row-wise mean values across columns for input data files using MCP Data Wrangler, enabling efficient horizontal data aggregation and preprocessing.
Instructions
Mean values across columns for each row
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| input_data_file_path | No | Path to the input data file |
Implementation Reference
- The core handler function for the 'data_mean_horizontal' tool. It loads the input data file, computes the mean across columns (horizontal mean) for each row using pandas DataFrame.mean_horizontal(), converts the result to a JSON dictionary, and returns it as TextContent. Includes error handling.async def handle_data_mean_horizontal( arguments: dict[str, Any], ) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]: data_mean_input = DataMeanInputSchema.from_args(arguments) try: mean_horizontal_df = data_mean_input.df.mean_horizontal() # Convert the DataFrame to a dictionary format mean_horizontal_dict = { "description": "Mean values across columns for each row", "mean_values": {str(i): str(val) if val is not None else None for i, val in enumerate(mean_horizontal_df)}, } return [ types.TextContent( type="text", text=json.dumps(mean_horizontal_dict), ) ] except Exception as e: logger.error(f"Error calculating mean: {e}") return [ types.TextContent( type="text", text=json.dumps( { "error": "Failed to calculate mean values.", "message": str(e), } ), ) ]
- Pydantic-based input schema (DataMeanInputSchema) for validating the tool's input, which requires 'input_data_file_path'. Provides static methods for schema definition used in MCP Tool inputSchema, loading data, and conversion from arguments.class DataMeanInputSchema(Data): model_config = ConfigDict( validate_assignment=True, frozen=True, extra="forbid", arbitrary_types_allowed=True, ) @staticmethod def input_schema() -> dict: return { "type": "object", "properties": { "input_data_file_path": { "type": "string", "description": "Path to the input data file", }, }, } @staticmethod def from_schema(input_data_file_path: str) -> "DataMeanInputSchema": data = Data.from_file(input_data_file_path) return DataMeanInputSchema(df=data.df) @staticmethod def from_args(arguments: dict[str, Any]) -> "DataMeanInputSchema": input_data_file_path = arguments["input_data_file_path"] return DataMeanInputSchema.from_schema(input_data_file_path=input_data_file_path)
- src/mcp_server_data_wrangler/tools/tools.py:117-121 (registration)Tool registration within MCPServerDataWrangler.tools() method, defining the 'data_mean_horizontal' tool's name, description from enum, and inputSchema from DataMeanInputSchema.types.Tool( name=MCPServerDataWrangler.data_mean_horizontal.value[0], description=MCPServerDataWrangler.data_mean_horizontal.value[1], inputSchema=DataMeanInputSchema.input_schema(), ),
- src/mcp_server_data_wrangler/tools/tools.py:149-168 (registration)Handler mapping dictionary in MCPServerDataWrangler.tool_to_handler(), mapping 'data_mean_horizontal' tool name to the handle_data_mean_horizontal function.@staticmethod def tool_to_handler() -> dict[str, Callable]: return { MCPServerDataWrangler.data_shape.value[0]: handle_data_shape, MCPServerDataWrangler.data_schema.value[0]: handle_data_schema, MCPServerDataWrangler.describe_data.value[0]: handle_describe_data, MCPServerDataWrangler.data_estimated_size.value[0]: handle_data_estimated_size, MCPServerDataWrangler.data_count.value[0]: handle_data_count, MCPServerDataWrangler.data_max.value[0]: handle_data_max, MCPServerDataWrangler.data_max_horizontal.value[0]: handle_data_max_horizontal, MCPServerDataWrangler.data_min.value[0]: handle_data_min, MCPServerDataWrangler.data_min_horizontal.value[0]: handle_data_min_horizontal, MCPServerDataWrangler.data_mean.value[0]: handle_data_mean, MCPServerDataWrangler.data_mean_horizontal.value[0]: handle_data_mean_horizontal, MCPServerDataWrangler.data_median.value[0]: handle_data_median, MCPServerDataWrangler.data_product.value[0]: handle_data_product, MCPServerDataWrangler.data_quantile.value[0]: handle_data_quantile, MCPServerDataWrangler.data_std.value[0]: handle_data_std, MCPServerDataWrangler.data_var.value[0]: handle_data_var, }
- Enum definition MCPServerDataWrangler that holds tool names and descriptions, used for registration; specifically data_mean_horizontal at line 50.class MCPServerDataWrangler(Enum): data_shape = ("data_shape", "Data shape of the input data") data_schema = ("data_schema", "Data schema of the input data") describe_data = ("describe_data", "Summary statistics of the input data") data_estimated_size = ("data_estimated_size", "Estimated size of the input data") data_count = ("data_count", "Number of non-null elements for each column") data_max = ("data_max", "Maximum values for each column") data_max_horizontal = ("data_max_horizontal", "Maximum values across columns for each row") data_min = ("data_min", "Minimum values for each column") data_min_horizontal = ("data_min_horizontal", "Minimum values across columns for each row") data_mean = ("data_mean", "Mean values for each column") data_mean_horizontal = ("data_mean_horizontal", "Mean values across columns for each row") data_median = ("data_median", "Median values for each column") data_product = ("data_product", "Product values for each column") data_quantile = ("data_quantile", "Quantile values for each column") data_std = ("data_std", "Standard deviation values for each column") data_var = ("data_var", "Variance values for each column")