Metadata-Version: 2.4
Name: figurify-mcp
Version: 0.2.2
Summary: Ship-ready MCP server for Gemini + Imagen diagram/plot generation. Runs on Claude, ChatGPT, VSCode Copilot, Cursor.
Project-URL: Homepage, https://github.com/genaimanoj/figurify-mcp
Project-URL: Repository, https://github.com/genaimanoj/figurify-mcp
Project-URL: Issues, https://github.com/genaimanoj/figurify-mcp/issues
Project-URL: Changelog, https://github.com/genaimanoj/figurify-mcp/blob/main/CHANGELOG.md
Author-email: Manoj Bhandari <genaimanoj@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: chatgpt,claude,diagram,gemini,imagen,infographic,mcp,model-context-protocol
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Multimedia :: Graphics
Classifier: Topic :: Scientific/Engineering :: Visualization
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: fastmcp>=0.2.0
Requires-Dist: google-genai>=1.0
Requires-Dist: matplotlib>=3.8
Requires-Dist: mcp>=1.0.0
Requires-Dist: pillow>=10.0
Requires-Dist: pydantic-settings>=2.0
Requires-Dist: pydantic>=2.0
Requires-Dist: python-dotenv>=1.0
Provides-Extra: dev
Requires-Dist: mypy>=1.10; extra == 'dev'
Requires-Dist: pre-commit>=3.8; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Description-Content-Type: text/markdown

# figurify-mcp

[![PyPI](https://img.shields.io/pypi/v/figurify-mcp.svg)](https://pypi.org/project/figurify-mcp/)
[![Python](https://img.shields.io/pypi/pyversions/figurify-mcp.svg)](https://pypi.org/project/figurify-mcp/)
[![CI](https://github.com/genaimanoj/figurify-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/genaimanoj/figurify-mcp/actions/workflows/ci.yml)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/genaimanoj/figurify-mcp/blob/main/LICENSE)

An MCP server that adds image generation to Claude, Cursor, VSCode Copilot,
and any other MCP-compatible host that does not have native image generation.

Currently supports **Google Gemini + Imagen**.
Support for other image-generation providers is on the roadmap.

## Install

```bash
pip install figurify-mcp
```

You will need a Gemini API key — create one at
[aistudio.google.com/apikey](https://aistudio.google.com/apikey).

## Setup in your host

### Claude Desktop

Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):

```json
{
  "mcpServers": {
    "figurify": {
      "command": "uvx",
      "args": ["figurify-mcp"],
      "env": { "GOOGLE_API_KEY": "your-key" }
    }
  }
}
```

### Claude Code / Cursor

```bash
claude mcp add figurify -s user \
  -e GOOGLE_API_KEY=$GOOGLE_API_KEY \
  -- uvx figurify-mcp
```

### VSCode Copilot

Create `.vscode/mcp.json`:

```json
{
  "servers": {
    "figurify": {
      "command": "uvx",
      "args": ["figurify-mcp"],
      "env": { "GOOGLE_API_KEY": "your-key" }
    }
  }
}
```

Restart the host. Ten tools become available automatically.

## Tools

| Tool | What it does |
| --- | --- |
| `create_simple_diagram` | Prompt → image. One call. |
| `create_infographic` | Topic → styled poster (VLM designs layout, Imagen renders). |
| `create_methodology_diagram` | Academic paper figure with iterative critique. |
| `create_statistical_plot` | Tabular data → matplotlib chart. |
| `evaluate_diagram` | VLM-as-judge comparison of two diagrams. |

Five additional meta-tools help the host pick the right tool without loading
every schema upfront: `search_tools`, `describe_tool`, `recommend_model`,
`estimate_cost`, `list_available_models`.

All generation tools default to **1K resolution** so images render inline
without hitting the ~1 MB tool-result cap enforced by Claude.

## Configuration

All environment variables are optional except `GOOGLE_API_KEY`.

| Variable | Default | Description |
| --- | --- | --- |
| `GOOGLE_API_KEY` | *required* | Gemini + Imagen API key |
| `FIGURIFY_OUTPUT_DIR` | `~/.figurify/outputs` | Where generated PNGs are saved |
| `FIGURIFY_VLM_MODEL` | auto-routed | Pin a specific Gemini text/vision model |
| `FIGURIFY_IMAGE_MODEL` | auto-routed | Pin a specific image-generation model |
| `FIGURIFY_MAX_METHODOLOGY_ITERATIONS` | `4` | Upper bound for the critique loop |

## Transports

```bash
figurify-mcp                                             # stdio (default)
figurify-mcp --transport http --host 0.0.0.0 --port 8765 # streamable HTTP
```

Stdio is what hosts like Claude Desktop use. HTTP is useful for remote
deployments (ChatGPT Apps SDK, VSCode Copilot remote MCP).

## Development

```bash
git clone https://github.com/genaimanoj/figurify-mcp
cd figurify-mcp
uv venv && source .venv/bin/activate
uv pip install -e '.[dev]'
cp .env.example .env   # set GOOGLE_API_KEY
pytest -q
```

Issues, feature requests, and pull requests welcome at
[github.com/genaimanoj/figurify-mcp](https://github.com/genaimanoj/figurify-mcp).

## License

[MIT](https://github.com/genaimanoj/figurify-mcp/blob/main/LICENSE) ·
© 2026 Manoj Bhandari
