Image Generation MCP Server
by manascb1344
# Image Generation MCP Server
A Model Context Protocol (MCP) server that enables seamless generation of high-quality images using the Flux.1 Schnell model via Together AI. This server provides a standardized interface to specify image generation parameters.
## Features
- High-quality image generation powered by the Flux.1 Schnell model
- Support for customizable dimensions (width and height)
- Clear error handling for prompt validation and API issues
- Easy integration with MCP-compatible clients
- Optional image saving to disk in PNG format
## Installation
```bash
npm install together-mcp
```
Or run directly:
```bash
npx together-mcp@latest
```
### Configuration
Add to your MCP server configuration:
<summary>Configuration Example</summary>
```json
{
"mcpServers": {
"together-image-gen": {
"command": "npx",
"args": ["together-mcp@latest -y"],
"env": {
"TOGETHER_API_KEY": "<API KEY>"
}
}
}
}
```
## Usage
The server provides one tool: `generate_image`
### Using generate_image
This tool has only one required parameter - the prompt. All other parameters are optional and use sensible defaults if not provided.
#### Parameters
```typescript
{
// Required
prompt: string; // Text description of the image to generate
// Optional with defaults
model?: string; // Default: "black-forest-labs/FLUX.1-schnell-Free"
width?: number; // Default: 1024 (min: 128, max: 2048)
height?: number; // Default: 768 (min: 128, max: 2048)
steps?: number; // Default: 1 (min: 1, max: 100)
n?: number; // Default: 1 (max: 4)
response_format?: string; // Default: "b64_json" (options: ["b64_json", "url"])
image_path?: string; // Optional: Path to save the generated image as PNG
}
```
#### Minimal Request Example
Only the prompt is required:
```json
{
"name": "generate_image",
"arguments": {
"prompt": "A serene mountain landscape at sunset"
}
}
```
#### Full Request Example with Image Saving
Override any defaults and specify a path to save the image:
```json
{
"name": "generate_image",
"arguments": {
"prompt": "A serene mountain landscape at sunset",
"width": 1024,
"height": 768,
"steps": 20,
"n": 1,
"response_format": "b64_json",
"model": "black-forest-labs/FLUX.1-schnell-Free",
"image_path": "/path/to/save/image.png"
}
}
```
#### Response Format
The response will be a JSON object containing:
```json
{
"id": string, // Generation ID
"model": string, // Model used
"object": "list",
"data": [
{
"timings": {
"inference": number // Time taken for inference
},
"index": number, // Image index
"b64_json": string // Base64 encoded image data (if response_format is "b64_json")
// OR
"url": string // URL to generated image (if response_format is "url")
}
]
}
```
If image_path was provided and the save was successful, the response will include confirmation of the save location.
### Default Values
If not specified in the request, these defaults are used:
- model: "black-forest-labs/FLUX.1-schnell-Free"
- width: 1024
- height: 768
- steps: 1
- n: 1
- response_format: "b64_json"
### Important Notes
1. Only the `prompt` parameter is required
2. All optional parameters use defaults if not provided
3. When provided, parameters must meet their constraints (e.g., width/height ranges)
4. Base64 responses can be large - use URL format for larger images
5. When saving images, ensure the specified directory exists and is writable
## Prerequisites
- Node.js >= 16
- Together AI API key
1. Sign in at [api.together.xyz](https://api.together.xyz/)
2. Navigate to [API Keys settings](https://api.together.xyz/settings/api-keys)
3. Click "Create" to generate a new API key
4. Copy the generated key for use in your MCP configuration
## Dependencies
```json
{
"@modelcontextprotocol/sdk": "0.6.0",
"axios": "^1.6.7"
}
```
## Development
Clone and build the project:
```bash
git clone https://github.com/manascb1344/together-mcp-server
cd together-mcp-server
npm install
npm run build
```
### Available Scripts
- `npm run build` - Build the TypeScript project
- `npm run watch` - Watch for changes and rebuild
- `npm run inspector` - Run MCP inspector
## Contributing
Contributions are welcome! Please follow these steps:
1. Fork the repository
2. Create a new branch (`feature/my-new-feature`)
3. Commit your changes
4. Push the branch to your fork
5. Open a Pull Request
Feature requests and bug reports can be submitted via GitHub Issues. Please check existing issues before creating a new one.
For significant changes, please open an issue first to discuss your proposed changes.
## License
This project is licensed under the MIT License. See the LICENSE file for details.