MCP Server for Generating Chart Image (FastMCP + FastAPI)
@qnnpnet
Overview
What is MCP Server for Generating Chart Image (FastMCP + FastAPI)?
This is an MCP server that generates chart images from Python plotting code. It converts Python code using matplotlib into a static PNG image and returns a URL to the saved file. It is built with FastMCP and FastAPI and intended for developers who need to programmatically generate charts from code snippets.
How to use MCP Server for Generating Chart Image (FastMCP + FastAPI)?
Clone the repository, install dependencies with uv sync, and run uv run main.py to start the server. The server listens on port 8107 by default. Send a POST request to /generate_chart with a JSON body containing the code field (Python code using matplotlib) to receive an image URL in the response.
Key features of MCP Server for Generating Chart Image (FastMCP + FastAPI)
- Generates chart images from arbitrary matplotlib Python code
- Returns a URL to the saved PNG image
- Built on FastMCP and FastAPI for easy integration
- Uses
uvfor dependency and environment management - Stores generated images in a static directory
Use cases of MCP Server for Generating Chart Image (FastMCP + FastAPI)
- Embedding dynamic chart generation in AI assistant workflows
- Converting text-based plotting instructions into shareable images
- Automating chart creation from code snippets in applications
- Serving as a tool inside MCP-based agents to produce visual outputs
FAQ from MCP Server for Generating Chart Image (FastMCP + FastAPI)
What are the runtime requirements?
Python 3.11 or higher is required. Dependencies include FastMCP, FastAPI, uvicorn, python-dotenv, requests, and matplotlib.
How do I start the server?
Clone the repository, run uv sync to install dependencies, then execute uv run main.py. The server will start on the default port.
How do I generate a chart?
Send a POST request to http://localhost:8107/generate_chart with a JSON body: {"code": "import matplotlib.pyplot as plt\nplt.plot([1,2,3],[4,5,6])\nplt.title(\"My Chart\")"}.
Where are the generated images stored?
Images are saved under static/images/ with a timestamped filename. The response includes a full URL to access the image.
What does the response look like?
The response is a JSON object: { "image_url": "http://localhost:8107/static/images/20250419160332_d8b758e9.png" }.