Grok Imagine Image 2 MCP Server
by Anil-matcha
README.md
# Grok Imagine Image 2.0 API (Grok Imagine Image 2 API) — Python SDK & MCP Server
[](https://muapi.ai)
[](LICENSE)
[](https://www.python.org/)
A focused Python SDK and MCP server for the Grok Imagine Image 2.0 API through MuAPI. Also known as the Grok Imagine Image 2 API or Grok Imagine API, it provides xAI image generation, text-to-image, chained follow-up image editing, local uploads, and asynchronous job polling from Python or an MCP-capable agent.
> **Availability:** Live on MuAPI as two endpoints — `grok-imagine-image-2` for text-to-image and `grok-imagine-image-2-edit` for follow-up edits.
## Related Projects
- [MuAPI](https://muapi.ai) — Unified API for image, video, and audio generation across hundreds of AI models.
- [Grok Imagine Image 2.0 on MuAPI](https://muapi.ai/grok-imagine-image-2) — Official model landing page for Grok Imagine Image 2.0 generation and editing.
- [Grok Imagine Image 2.0 playground](https://muapi.ai/playground/grok-imagine-image-2) — Try the model in the browser when access is enabled.
- [MuAPI API reference](https://muapi.ai/docs/api-reference) — REST endpoint and asynchronous prediction lifecycle documentation.
- [MuAPI access keys](https://muapi.ai/access-keys) — Create the x-api-key credential required by this SDK.
- [awesome-ai-image-models](https://github.com/Anil-matcha/awesome-ai-image-models) — Compare image models by API, price, quality, and use case.
- [Awesome-GPT-Image-2-API-Prompts](https://github.com/Anil-matcha/Awesome-GPT-Image-2-API-Prompts) — Reusable prompt patterns for image generation, typography, editing, and visual design.
- [Open-Generative-AI](https://github.com/Anil-matcha/Open-Generative-AI) — Open-source image and video studio powered by MuAPI.
- [muapi-skills](https://github.com/SamurAIGPT/muapi-skills) — Agent-ready skills for driving image, video, and audio models from coding assistants.
- [muapi-cli](https://github.com/SamurAIGPT/muapi-cli) — Command-line access to MuAPI image, video, and audio endpoints.
- [Wan-3.0-API](https://github.com/Anil-matcha/Wan-3.0-API) — the companion Python SDK and MCP server for Wan video generation.
- [Flux-3-Dev-API](https://github.com/Anil-matcha/Flux-3-Dev-API) — MuAPI access to FLUX image and video workflows.
## Install
~~~bash
git clone https://github.com/Anil-matcha/Grok-Imagine-Image-2-API.git
cd Grok-Imagine-Image-2-API
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
~~~
Set **MUAPI_API_KEY** in the env file. The client uses **https://api.muapi.ai/api/v1** by default. Set **GROK_IMAGINE_IMAGE_2_API_BASE_URL** to target a compatible self-hosted or proxy endpoint instead. **GROK_API_BASE_URL** is also accepted as a shorter alias.
## Quick start
~~~python
from grok_imagine_image_2_api import GrokImagineImage2API
api = GrokImagineImage2API()
job = api.text_to_image(
"A high-contrast halftone portrait in fine white dots on a black background",
aspect_ratio="1:1",
)
result = api.wait_for_completion(job["request_id"])
print(result)
~~~
The API is asynchronous: submit a prompt, keep the returned request ID, and poll until the task is completed.
## Follow-up editing
Grok Imagine Image 2.0's edit model doesn't take a freshly uploaded photo — it applies a targeted edit to an image it previously generated, referenced by that job's `request_id`. Pass **edit_image()** the `request_id` from a prior `text_to_image()` (or `edit_image()`) call along with a prompt describing the change:
~~~python
job = api.text_to_image("A raccoon in a teal Hawaiian shirt at a beach club table", aspect_ratio="1:1")
base = api.wait_for_completion(job["request_id"])
edit_job = api.edit_image(
prompt="Change the Hawaiian shirt to a plain white t-shirt, keep everything else unchanged.",
request_id=job["request_id"],
)
result = api.wait_for_completion(edit_job["request_id"])
print(result)
~~~
Pass an optional `mask_indexs` list of integers to scope the edit to specific segments of the source image instead of the whole frame. Each edit call returns its own `request_id`, so edits can be chained repeatedly to keep refining the same image.
## Upload a local reference
~~~python
uploaded = api.upload_file("reference.png")
print(uploaded)
~~~
Useful for storing your own reference assets alongside a job; note that Grok Imagine Image 2.0 itself doesn't accept uploaded images as edit input — see **Follow-up editing** above.
## API surface
| Method | Purpose |
| --- | --- |
| **text_to_image()** | Create an image from a text prompt. |
| **edit_image()** | Apply a follow-up edit to a prior generation, referenced by its request_id. |
| **upload_file()** | Upload a local reference asset. |
| **get_result() / wait_for_completion()** | Retrieve an asynchronous job and wait for its output. |
## Supported aspect ratios
The current catalog contract supports:
**1:1**, **2:3**, **3:2**, **16:9**, and **9:16**.
## MCP server
Expose the model to MCP-capable clients:
~~~bash
python mcp_server.py
~~~
The server provides **text_to_image**, **edit_image**, and **get_task_status** tools. Configure it in an MCP client with the repository's Python interpreter and pass **MUAPI_API_KEY** through the process environment.
Example configuration:
~~~json
{
"mcpServers": {
"grok-imagine-image-2": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["/absolute/path/to/Grok-Imagine-Image-2-API/mcp_server.py"],
"env": {
"MUAPI_API_KEY": "your_muapi_api_key"
}
}
}
}
~~~
## Endpoint compatibility
The client calls these MuAPI paths beneath the configured base URL:
- **POST /grok-imagine-image-2** — `{prompt, aspect_ratio}`
- **POST /grok-imagine-image-2-edit** — `{prompt, request_id, mask_indexs?}`
- **POST /upload_file**
- **GET /predictions/{request_id}/result**
The SDK uses the **x-api-key** header and JSON request bodies.
## Development
Run the local tests and syntax checks with:
~~~bash
python -m unittest discover -s tests -v
python -m py_compile grok_imagine_image_2_api.py mcp_server.py
~~~
## License
[MIT](LICENSE)
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues