Skip to main content
Glama
Fervoyush

Plotnine MCP Server

by Fervoyush

batch_create_plots

Generate multiple publication-quality statistical graphics in a single batch operation for data visualization tasks like pairwise comparisons, categorical analysis, and numeric column plotting.

Instructions

Create multiple plots in one batch operation.

Useful for:

  • Creating plots for all numeric columns in a dataset

  • Generating pairwise scatter plots

  • Creating plots for each category separately

  • Comparing different plot types

Each plot configuration is processed independently, and all plots are created in sequence.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
plotsYesArray of plot configurations (same structure as create_plot)

Implementation Reference

  • Registration of the batch_create_plots tool, including name, description, and input schema defining an array of plot configurations.
            Tool(
                name="batch_create_plots",
                description="""Create multiple plots in one batch operation.
    
    Useful for:
    - Creating plots for all numeric columns in a dataset
    - Generating pairwise scatter plots
    - Creating plots for each category separately
    - Comparing different plot types
    
    Each plot configuration is processed independently, and all plots are created in sequence.""",
                inputSchema={
                    "type": "object",
                    "properties": {
                        "plots": {
                            "type": "array",
                            "description": "Array of plot configurations (same structure as create_plot)",
                            "items": {"type": "object"},
                        },
                    },
                    "required": ["plots"],
                },
            ),
  • The handler function that implements batch_create_plots by iterating over the provided list of plot configurations and delegating to create_plot_handler for each, collecting results and providing a summary.
    async def batch_create_plots_handler(arguments: dict[str, Any]) -> list[TextContent]:
        """Handle batch_create_plots tool calls."""
        try:
            plots = arguments.get("plots", [])
    
            if not plots:
                return [
                    TextContent(
                        type="text",
                        text="No plots provided. Please include an array of plot configurations in the 'plots' parameter.",
                    )
                ]
    
            message = f"Batch Plot Creation\n" + "=" * 60 + "\n\n"
            message += f"Creating {len(plots)} plot(s)...\n\n"
    
            results = []
            successful = 0
            failed = 0
    
            for i, plot_config in enumerate(plots, 1):
                try:
                    # Create plot using existing handler
                    result = await create_plot_handler(plot_config)
    
                    if result and "successfully" in result[0].text:
                        successful += 1
                        # Extract filename from result
                        result_text = result[0].text
                        if "Output file:" in result_text:
                            filename_line = [
                                line for line in result_text.split("\n") if "Output file:" in line
                            ][0]
                            filename = filename_line.split(": ")[1]
                            message += f"{i}. ✓ {filename}\n"
                        else:
                            message += f"{i}. ✓ Plot created\n"
                    else:
                        failed += 1
                        error_msg = result[0].text if result else "Unknown error"
                        message += f"{i}. ✗ Failed: {error_msg[:100]}...\n"
    
                    results.append({"index": i, "success": successful > failed, "result": result})
    
                except Exception as e:
                    failed += 1
                    message += f"{i}. ✗ Error: {str(e)[:100]}...\n"
                    results.append({"index": i, "success": False, "error": str(e)})
    
            message += "\n" + "=" * 60 + "\n"
            message += f"Summary:\n"
            message += f"  • Total: {len(plots)}\n"
            message += f"  • Successful: {successful}\n"
            message += f"  • Failed: {failed}\n"
    
            if successful > 0:
                message += f"\n✓ {successful} plot(s) created successfully!"
    
            return [TextContent(type="text", text=message)]
    
        except Exception as e:
            return [
                TextContent(
                    type="text",
                    text=f"Batch creation error: {str(e)}\n\nPlease check your plot configurations.",
                )
            ]
  • Input schema definition for batch_create_plots, specifying an array of plot configuration objects.
    inputSchema={
        "type": "object",
        "properties": {
            "plots": {
                "type": "array",
                "description": "Array of plot configurations (same structure as create_plot)",
                "items": {"type": "object"},
            },
        },
        "required": ["plots"],
    },

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/Fervoyush/plotnine-mcp'

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