Skip to main content
Glama

plot_multiple_functions

Plot multiple mathematical functions simultaneously on a single graph to compare relationships and visualize interactions between equations.

Instructions

Plots multiple functions on the same graph.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
formulasYes
x_rangeNo
y_rangeNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • src/main.py:198-198 (registration)
    Registers the 'plot_multiple_functions' tool using the @mcp.tool() decorator.
    @mcp.tool()
  • The main handler function that plots multiple mathematical functions on a single graph using SymPy's plotting capabilities. It processes each formula, appends series to a plot, saves to desktop, encodes as base64 data URI, and returns the image.
    async def plot_multiple_functions(
        ctx: MCPContext,
        formulas: List[str],
        x_range: Optional[List[float]] = [-10, 10],
        y_range: Optional[List[float]] = None,
    ) -> str:
        """Plots multiple functions on the same graph."""
        try:
            await ctx.progress.start(total=len(formulas) + 1, message="Starting multi-plot...")
            x = sympy.symbols('x')
            p = sympy.plot(show=False)
            
            for i, formula in enumerate(formulas):
                await ctx.progress.report(i + 1, message=f"Processing formula {i+1}: {formula}")
                expr = sympy.sympify(formula)
                line_label = formula
                line_color = f"C{i}"
                series = sympy.plot(expr, (x, x_range[0], x_range[1]), show=False, line_color=line_color, label=line_label)[0]
                p.append(series)
    
            if x_range:
                p.xlim = x_range
            if y_range:
                p.ylim = y_range
            
            p.legend = True
    
            # Save the plot to a file
            desktop_path = os.path.join(os.path.expanduser('~'), 'Desktop')
            save_dir = os.path.join(desktop_path, 'Desmos-MCP')
            os.makedirs(save_dir, exist_ok=True)
            timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
            filename = f"multi_plot_{timestamp}.png"
            p.save(os.path.join(save_dir, filename))
    
            await ctx.progress.report(len(formulas) + 1, message="Encoding image...")
            buf = io.BytesIO()
            p.save(buf)
            buf.seek(0)
            img_base64 = base64.b64encode(buf.read()).decode('utf-8')
            data_uri = f"data:image/png;base64,{img_base64}"
            
            await ctx.progress.end()
            return f"Successfully plotted {len(formulas)} functions. Image: {data_uri}"
    
        except Exception as e:
            await ctx.progress.end()
            return f"Error plotting multiple functions. Details: {e}"

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

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/TheGrSun/Desmos-MCP'

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