Metadata-Version: 2.4
Name: renderdeck-mcp
Version: 0.1.5
Summary: MCP server for generating PowerPoint presentations via Gemini
Project-URL: Homepage, https://github.com/exjch/renderdeck
Project-URL: Repository, https://github.com/exjch/renderdeck
Project-URL: Issues, https://github.com/exjch/renderdeck/issues
Author: Francis Rosario
License-Expression: MIT
Keywords: ai,gemini,llm,mcp,powerpoint,pptx,presentations,slides
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Multimedia :: Graphics :: Presentation
Classifier: Topic :: Office/Business
Requires-Python: >=3.12
Requires-Dist: cryptography>=42.0
Requires-Dist: google-genai>=1.0
Requires-Dist: mcp[cli]>=1.0
Requires-Dist: pillow>=10.0
Requires-Dist: python-pptx>=1.0
Provides-Extra: dev
Requires-Dist: mypy>=1.10; 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.4; extra == 'dev'
Description-Content-Type: text/markdown

# RenderDeck

**AI-powered presentation generation as an MCP server.** Describe the presentation you want in conversation with your LLM, and RenderDeck generates a `.pptx` with Gemini-created slide images.

## Getting Started

### 1. Install

```bash
pip install renderdeck-mcp
# or run directly with uvx (no install needed):
uvx renderdeck-mcp serve
```

### 2. Configure your LLM client

Add RenderDeck as an MCP server in your client's config.

**Claude Desktop** — add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "renderdeck": {
      "command": "uvx",
      "args": ["renderdeck-mcp", "serve"],
      "env": {
        "GOOGLE_GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

**Claude Code** — add to `.claude/settings.json` or `~/.claude/settings.json`:

```json
{
  "mcpServers": {
    "renderdeck": {
      "command": "uvx",
      "args": ["renderdeck-mcp", "serve"],
      "env": {
        "GOOGLE_GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

**Cursor** — add to `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "renderdeck": {
      "command": "uvx",
      "args": ["renderdeck-mcp", "serve"],
      "env": {
        "GOOGLE_GEMINI_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

### 3. Set up your API key

Ask your LLM to run the `setup_gemini_key` tool with your [Gemini API key](https://aistudio.google.com/apikey), or set `GOOGLE_GEMINI_API_KEY` in the server's environment.

### 4. Develop your storyline

Tell your LLM what presentation you need — the topic, audience, tone, and any specific points to cover. The LLM reads the `renderdeck://reference` resource to learn the slide prompt format, then collaborates with you to develop:

- **Storyline and structure** — how many slides, what each one covers, the narrative arc
- **Visual direction** — style, color palette, imagery for each slide
- **Speaker notes** — what to say on each slide, with timing guidance

You iterate in conversation until the storyline feels right. The LLM then writes the slide prompt file — a structured markdown document — so you never need to learn the format yourself.

### 5. Validate and generate

The LLM calls `validate_prompt_file` to catch any formatting issues, then `generate_deck` to produce a `.pptx` with Gemini-generated slide images.

### 6. Iterate

Review the generated deck. Ask the LLM to tweak specific slides — adjust the visual prompt, reword speaker notes, or restructure the flow. Use `regenerate_slide` to re-render individual slides without rebuilding the entire deck.

## MCP Tools

| Tool | Description |
|------|-------------|
| `generate_deck` | Generate a .pptx from a slide prompt file |
| `validate_prompt_file` | Validate a prompt file (dry-run, no API key needed) |
| `regenerate_slide` | Regenerate specific slides (bypasses cache) |
| `setup_gemini_key` | Store Gemini API key securely (Fernet-encrypted) |
| `get_setup_status` | Check configuration readiness |
| `update_settings` | Update model, aspect ratio, and other settings |

## MCP Resources

| Resource | Description |
|----------|-------------|
| `renderdeck://reference` | Complete reference document for writing slide prompt files |

## MCP Prompts

| Prompt | Description |
|--------|-------------|
| `create_deck` | Guided workflow: read reference, write prompt, validate, generate |
| `check_and_fix` | Validate a prompt file and get error-by-error fix suggestions |

## Cost Guidance

- **Nano Banana** (`gemini-2.5-flash-image`): ~$0.039 per slide image
- **Nano Banana Pro** (`gemini-3-pro-image-preview`): ~$0.12 per slide image
- Cached images are reused automatically when the prompt hasn't changed
