paper-banana
Integrates with Google's Gemini API for AI-powered image generation and analysis, enabling proposal diagram creation and iterative refinement.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@paper-bananaGenerate a CONOPS diagram for the missile defense proposal"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Paper Banana — Proposal Image Generator
A multiagent AI pipeline for generating process diagrams and CONOPS visuals for government and defense proposals. Based on the Paper Banana framework (arXiv 2601.23265), adapted for proposal-domain aesthetics and distributed as an MCP server.
Architecture
User Input (proposal text + caption/intent)
|
v
[1] Classifier Agent Determines: process diagram vs. CONOPS image
|
v
[2] Retriever Agent Selects N most relevant examples from library
| (library starts empty; grows via add_example)
v
[3] Planner Agent Synthesizes detailed visual description (few-shot)
|
v
[4] Stylist Agent Applies proposal-specific aesthetic guidelines
|
v
[5] Visualizer Agent Calls gemini-3-pro-image-preview -> generates PNG
| ^
| | (refined description, up to T=3 rounds)
v |
[6] Critic Agent Evaluates image, produces refined description
|
v
Final Image (PNG)
Related MCP server: mmc-mcp
Models
Agent | Model | Role |
Extractor | gemini-3.6-flash | Pulls the relevant section from a full document |
Optimizer | gemini-3.6-flash | Enriches context + sharpens caption (2 concurrent calls) |
Classifier | gemini-3.6-flash | Fast classification, no deep reasoning needed |
Retriever | gemini-3.6-flash | Relevance scoring across examples |
Planner | gemini-3.1-pro-preview | Best reasoning for synthesizing visual descriptions |
Stylist | gemini-3.1-pro-preview | Creative + domain-aware aesthetic refinement |
Visualizer | gemini-3-pro-image | Image generation |
Critic | gemini-3.6-flash | Different model family from Planner/Stylist (anti-bias) |
Prerequisites
A Gemini API key with access to the models listed above (get one at aistudio.google.com/apikey)
SSH or HTTPS access to the repo
Quick Start
Automatic (recommended)
git clone git@github.com:lexicalninja/paper-banana.git
cd paper-banana
./install.shThe install script will:
Install
uvif neededPrompt for your
GOOGLE_API_KEYDetect Claude Code and/or VS Code and configure them
Optionally seed the example library
On Windows, use install.ps1 instead.
Manual — Claude Code
claude mcp add paper-banana -e GOOGLE_API_KEY=your-key -- \
uvx --from "git+ssh://git@github.com/lexicalninja/paper-banana.git" paper-bananaManual — VS Code
You can install at the user level (available in every workspace) or the workspace level (scoped to one project).
User-level — edit ~/Library/Application Support/Code/User/mcp.json (macOS) or ~/.config/Code/User/mcp.json (Linux) or %APPDATA%\Code\User\mcp.json (Windows). Add paper-banana inside the top-level servers object:
{
"servers": {
"paper-banana": {
"command": "uvx",
"args": ["--from", "git+ssh://git@github.com/lexicalninja/paper-banana.git", "paper-banana"],
"env": { "GOOGLE_API_KEY": "your-key" }
}
}
}Workspace-level — add the same block to .vscode/mcp.json in your project root. This is safe to commit so teammates get the server automatically.
Local Development
pip install -e .
export GOOGLE_API_KEY=your-key
paper-bananaAfter setup, the generate_proposal_image and add_example tools will appear in your MCP client.
MCP Tools
generate_proposal_image
Generate a proposal diagram image.
Parameter | Type | Default | Description |
| string | required | Communicative intent for the diagram |
| string |
| Raw proposal text to diagram |
| string |
| Path to a document file; |
| string |
| Section heading to extract from |
| string |
|
|
| integer |
| Max visualizer/critic refinement cycles (1–5) |
| string |
| Where to save the generated PNG |
| boolean |
| Save per-iteration PNGs + critique JSON to |
| boolean |
| Append structured diagram YAML/JSON to critique file |
| string |
| Visual identity profile: |
| string |
| Pin output dimensions: |
| string |
| Path to a |
| string |
| Freeform feedback about the prior output; overrides original intent in the critic |
Returns the absolute path to the saved PNG.
Resuming a run
Each run saves state to {output_stem}_run/run_input.json. Pass that directory to resume_from to skip the full pipeline and iterate from where you left off:
generate_proposal_image(
caption="",
resume_from="output/my_diagram_run",
user_feedback="Add a decision diamond after step 2 with yes/no branches",
iterations=2
)Use user_feedback to steer the next generation. The pipeline critiques the existing image first, bakes the feedback into a revised description, then generates.

add_example
Add a reference image to the example library. The library starts empty; add examples over time to improve retrieval quality.
Parameter | Type | Description |
| string | Written description of what the image shows |
| string | Path to the image file |
| string | Caption associated with the image |
| string |
|
Returns the unique ID assigned to the new example.
Cold Start
The library starts empty (examples/metadata.json contains []). On an empty library, the pipeline proceeds zero-shot (a warning is logged). Use add_example to build up a reference library over time. Retrieval quality improves noticeably after ~5 examples per diagram type.
Design Aesthetic
Two brand profiles ship with the server, selected via the brand parameter.
mlst (default) — MLST purple
Token | Hex | Usage |
Brand purple |
| Primary boxes, borders, headers, flow arrows |
Muted purple |
| Secondary elements, highlights |
Pale purple |
| Interior fill of content boxes |
Blue |
| Data flows, supporting links |
Coral |
| Critical path, key decisions |
Amber |
| Alternate emphasis |
Green |
| Confirmation states, approved paths |
Off-white |
| Page background |
Light gray |
| Swimlanes, grouping zones |
Near-black |
| Body text |
default — government/defense
Token | Hex | Usage |
Navy blue |
| Primary boxes, header bars, key actors |
White |
| Text on dark backgrounds, box interiors |
Gray |
| Connectors, borders, annotations |
Light gray |
| Swimlane backgrounds, grouping zones |
Deep orange |
| Decisions, critical path, highlights |
Teal |
| Data flows, supporting systems, feedback paths |
Running Directly
# Start the MCP server (used by VS Code / Claude Code)
python -m paper_banana.server
# Or via the installed entry point
paper-bananaPipeline I/O

Conncurrent Optimization

Run state persistence

Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/lexicalninja/paper-banana'
If you have feedback or need assistance with the MCP directory API, please join our Discord server