organon-create-image
README.md
# organon-create-image
MCP server for image generation using Gemini.
## Features
- **Text-to-image generation** via Gemini (default: `gemini-3-pro-image-preview`)
- Multiple aspect ratio support (1:1, 16:9, 9:16, etc.)
- Returns generated images both as files and inline via MCP image content type
- Supports both **AI Studio** (API key) and **Vertex AI** (service account) backends
## Prerequisites
- Node.js 18+
- One of the following:
- **AI Studio**: A Gemini API key from [Google AI Studio](https://aistudio.google.com/)
- **Vertex AI**: A Google Cloud project with Vertex AI API enabled + Application Default Credentials
## Setup
```bash
npm install
npm run build
```
## Configuration
### Environment Variables
| Variable | Required | Default | Description |
| ----------------- | -------- | ------------- | ------------------------------------------------- |
| `GEMINI_API_KEY` | Option 1 | — | AI Studio API key (takes priority over Vertex AI) |
| `VERTEX_PROJECT` | Option 2 | — | Google Cloud project ID (Vertex AI) |
| `VERTEX_LOCATION` | No | `us-central1` | Vertex AI location |
> **Note:** Set either `GEMINI_API_KEY` or `VERTEX_PROJECT`. If both are set, `GEMINI_API_KEY` takes priority.
### Claude Code MCP Registration
**AI Studio** (recommended for access to preview models):
```json
{
"mcpServers": {
"create-image": {
"command": "node",
"args": ["/path/to/organon-create-image/dist/index.js"],
"env": {
"GEMINI_API_KEY": "your-api-key"
}
}
}
}
```
**Vertex AI:**
```json
{
"mcpServers": {
"create-image": {
"command": "node",
"args": ["/path/to/organon-create-image/dist/index.js"],
"env": {
"VERTEX_PROJECT": "your-gcp-project-id"
}
}
}
}
```
## Tools
### `generate_image`
Generate an image from a text prompt.
**Parameters:**
| Parameter | Type | Required | Default | Description |
| -------------- | ------ | -------- | ------------------------------ | ------------------------------------------------------------------------------------- |
| `prompt` | string | Yes | — | Text prompt for image generation (English recommended) |
| `aspect_ratio` | enum | No | `"1:1"` | Aspect ratio: `1:1`, `3:2`, `2:3`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9`, `21:9` |
| `output_path` | string | Yes | — | File path to save the generated image (.png) |
| `model` | string | No | `"gemini-3-pro-image-preview"` | Gemini model name (e.g. `gemini-2.5-flash-image`) |
**Returns:** Generated image saved to `output_path`, plus inline image via MCP image content type.
## Quality Checks
Run all quality checks at once:
```bash
npm run check:all
```
This executes the following checks in sequence:
| Script | Check | Tool |
| ---------------- | ------------------------------ | -------------------------- |
| `typecheck` | Type checking (strict) | tsc --noEmit |
| `lint` | Linter + cyclomatic complexity | ESLint + typescript-eslint |
| `format:check` | Code formatting | Prettier |
| `test:coverage` | Tests + coverage report | Vitest + V8 |
| `audit` | Known CVE scan | npm audit |
| `audit:lockfile` | Lockfile integrity | lockfile-lint |
| `sast` | Security static analysis | Semgrep |
> **Note:** Semgrep requires a separate installation via `pip`. See [QUALITY.md](QUALITY.md) for setup details.
## License
MIT
TDQS
A4.3/5.0
Scored across 1 tool
Disambiguation5/5
Only one tool exists, so there is no possibility of confusion or overlap. The tool's purpose is clearly defined and unambiguous.
Naming Consistency5/5
The tool name 'generate_image' follows a consistent verb_noun pattern, and with only one tool, there are no inconsistencies to evaluate.
Tool Count5/5
A single tool is well-scoped for a server dedicated exclusively to image generation. The narrow domain requires no additional tools.
Completeness5/5
The tool fully covers the core operation of generating an image from a prompt, including file saving and aspect ratio support. No obvious gaps exist for the stated purpose.
Maintenance
ActivityInactive
ResponsivenessNo issues