Skip to content

It does not work #16

Description

@korkhau

Hi,

Just curious, am I doing everything right or not.
Following example commands e.g.:

Create a 64x64 sprite and draw a red circle in the center
Add a new layer called 'Background' and fill it with blue
Export the sprite as a PNG

I received empty black square:

Image

--health log:

./bin/pixel-mcp --health
[15:41:47 INF] AsepriteMCP: Performing health check...
[15:41:47 INF] AsepriteMCP: ✓ Aseprite executable found at /Users/<user>/Library/Application Support/Steam/steamapps/common/Aseprite/Aseprite.app/Contents/MacOS/aseprite
[15:41:47 INF] AsepriteMCP: ✓ Aseprite is accessible (version Aseprite 1.3.15.5-arm64)
[15:41:47 INF] AsepriteMCP: ✓ Temp directory is accessible at /tmp/pixel-mcp
[15:41:47 INF] AsepriteMCP: Health check passed - all systems operational

And this is a log messages from my gemini-cli with configured MCP:

"messages": [
    {
      "id": "e7740e70-a688-48a6-8f97-a9fd16ab9a58",
      "timestamp": "2025-11-11T14:36:26.966Z",
      "type": "user",
      "content": "Create a 64x64 sprite and draw a red circle in the center"
    },
    {
      "id": "38a10454-4ec8-4234-b866-8531205af525",
      "timestamp": "2025-11-11T14:36:32.109Z",
      "type": "gemini",
      "content": "",
      "toolCalls": [
        {
          "id": "create_canvas-1762871791997-9df94ca576f888",
          "name": "create_canvas",
          "args": {
            "width": 64,
            "color_mode": "indexed",
            "height": 64
          },
          "result": [
            {
              "functionResponse": {
                "id": "create_canvas-1762871791997-9df94ca576f888",
                "name": "create_canvas",
                "response": {
                  "output": "{\"file_path\":\"/tmp/pixel-mcp/sprite-1762871792020851000.aseprite\"}"
                }
              }
            }
          ],
          "status": "success",
          "timestamp": "2025-11-11T14:36:32.109Z",
          "resultDisplay": "{\"file_path\":\"/tmp/pixel-mcp/sprite-1762871792020851000.aseprite\"}",
          "displayName": "create_canvas (aseprite MCP Server)",
          "description": "Create a new Aseprite sprite with specified dimensions and color mode. Returns the path to the created .aseprite file.",
          "renderOutputAsMarkdown": true
        }
      ],
      "thoughts": [
        {
          "subject": "Analyzing Sprite Creation",
          "description": "I'm currently focused on the `create_canvas` function. I've broken down the steps: I need the width, height, and color mode for this function. So far, I've got the width figured out.",
          "timestamp": "2025-11-11T14:36:30.125Z"
        },
        {
          "subject": "Crafting Sprite Instructions",
          "description": "I'm now detailing the steps for creating the red circle. The `create_canvas` part is done, and now I'm formulating the `draw_circle` arguments. I'm defaulting to \"sprite.aseprite\" as the sprite's save path, assuming \"Layer 1\" is the initial layer and the first frame. Then I've calculated the center coordinates and am setting the radius, color, and fill value.",
          "timestamp": "2025-11-11T14:36:31.967Z"
        }
      ],
      "model": "gemini-2.5-flash",
      "tokens": {
        "input": 10517,
        "output": 11,
        "cached": 0,
        "thoughts": 332,
        "tool": 0,
        "total": 10860
      }
    },
    {
      "id": "5ad31c8f-f2a5-43b8-b495-39cdf7ec4de6",
      "timestamp": "2025-11-11T14:36:35.562Z",
      "type": "gemini",
      "content": "",
      "toolCalls": [
        {
          "id": "draw_circle-1762871795487-1a29d80ff97318",
          "name": "draw_circle",
          "args": {
            "filled": true,
            "color": "#FF0000",
            "center_y": 32,
            "frame_number": 1,
            "sprite_path": "/tmp/pixel-mcp/sprite-1762871792020851000.aseprite",
            "center_x": 32,
            "radius": 20,
            "layer_name": "Layer 1"
          },
          "result": [
            {
              "functionResponse": {
                "id": "draw_circle-1762871795487-1a29d80ff97318",
                "name": "draw_circle",
                "response": {
                  "output": "{\"success\":true}"
                }
              }
            }
          ],
          "status": "success",
          "timestamp": "2025-11-11T14:36:35.562Z",
          "resultDisplay": "{\"success\":true}",
          "displayName": "draw_circle (aseprite MCP Server)",
          "description": "Draw a circle with specified center, radius, color, and fill option.",
          "renderOutputAsMarkdown": true
        }
      ],
      "thoughts": [
        {
          "subject": "Considering Sprite Creation",
          "description": "I've successfully generated the sprite at the specified path. My next step involves implementing a red circle at the center of this 64x64 image. I plan to center it at coordinates (32, 32), with a radius of 20 pixels, and employ the color red, specifically #FF0000. I am assuming the default layer for this operation.",
          "timestamp": "2025-11-11T14:36:34.831Z"
        },
        {
          "subject": "Adding the Red Circle",
          "description": "I'm now tasked with drawing the red circle. The location is set – the center point is (32, 32), radius is 20, and color is #FF0000.  \"Layer 1\" is my target layer and the relevant frame is frame 1. After I implement the circle, I’ll examine the output.",
          "timestamp": "2025-11-11T14:36:35.480Z"
        }
      ],
      "model": "gemini-2.5-flash",
      "tokens": {
        "input": 10570,
        "output": 67,
        "cached": 0,
        "thoughts": 128,
        "tool": 0,
        "total": 10765
      }
    },
    {
      "id": "9386a9ce-3509-457a-8330-a08b45b10d82",
      "timestamp": "2025-11-11T14:36:38.064Z",
      "type": "gemini",
      "content": "I have created a 64x64 Aseprite sprite and drawn a red circle in the center. The sprite is located at `/tmp/pixel-mcp/sprite-1762871792020851000.aseprite`.",
      "thoughts": [
        {
          "subject": "Confirming Task Completion",
          "description": "The red circle is successfully rendered on the sprite, signifying the completion of this particular step. Excellent.",
          "timestamp": "2025-11-11T14:36:38.004Z"
        }
      ],
      "tokens": {
        "input": 10646,
        "output": 61,
        "cached": 10016,
        "thoughts": 18,
        "tool": 0,
        "total": 10725
      },
      "model": "gemini-2.5-flash"
    },
    {
      "id": "ed9ecae0-8da0-475b-9ea8-3b330b01b496",
      "timestamp": "2025-11-11T14:37:54.999Z",
      "type": "user",
      "content": "in aseprite Create a 64x64 sprite and draw a red circle in the center"
    },
    {
      "id": "2391ddb1-4760-46b1-a283-4e8fee21e66c",
      "timestamp": "2025-11-11T14:37:59.002Z",
      "type": "gemini",
      "content": "",
      "toolCalls": [
        {
          "id": "create_canvas-1762871878703-af6d5ff9a5e1b",
          "name": "create_canvas",
          "args": {
            "height": 64,
            "width": 64,
            "color_mode": "indexed"
          },
          "result": [
            {
              "functionResponse": {
                "id": "create_canvas-1762871878703-af6d5ff9a5e1b",
                "name": "create_canvas",
                "response": {
                  "output": "{\"file_path\":\"/tmp/pixel-mcp/sprite-1762871878704849000.aseprite\"}"
                }
              }
            }
          ],
          "status": "success",
          "timestamp": "2025-11-11T14:37:59.002Z",
          "resultDisplay": "{\"file_path\":\"/tmp/pixel-mcp/sprite-1762871878704849000.aseprite\"}",
          "displayName": "create_canvas (aseprite MCP Server)",
          "description": "Create a new Aseprite sprite with specified dimensions and color mode. Returns the path to the created .aseprite file.",
          "renderOutputAsMarkdown": true
        }
      ],
      "thoughts": [
        {
          "subject": "Initiating Redraw Sequence",
          "description": "I'm now generating a new sprite, aiming for a 64x64 canvas as requested. The central task will be the red circle, and I'm prepping for the drawing step, ensuring a precise placement to avoid any eccentricities. The code calls are set, and now I'm ready to render.",
          "timestamp": "2025-11-11T14:37:57.849Z"
        },
        {
          "subject": "Restarting Circle Creation",
          "description": "Alright, I'm back on track, building another 64x64 sprite from scratch. The focus is, again, the central red circle; drawing it precisely is key to this iteration, so I'm double-checking the parameters before the `draw_circle` function gets its chance. Ready to execute!",
          "timestamp": "2025-11-11T14:37:58.700Z"
        }
      ],
      "model": "gemini-2.5-flash",
      "tokens": {
        "input": 10727,
        "output": 11,
        "cached": 10051,
        "thoughts": 79,
        "tool": 0,
        "total": 10817
      }
    },
    {
      "id": "2d78ed07-9b82-49df-a380-6e848f92146d",
      "timestamp": "2025-11-11T14:38:03.116Z",
      "type": "gemini",
      "content": "",
      "toolCalls": [
        {
          "id": "draw_circle-1762871883041-4deeb27b9240d8",
          "name": "draw_circle",
          "args": {
            "color": "#FF0000",
            "sprite_path": "/tmp/pixel-mcp/sprite-1762871878704849000.aseprite",
            "frame_number": 1,
            "layer_name": "Layer 1",
            "center_x": 32,
            "filled": true,
            "radius": 20,
            "center_y": 32
          },
          "result": [
            {
              "functionResponse": {
                "id": "draw_circle-1762871883041-4deeb27b9240d8",
                "name": "draw_circle",
                "response": {
                  "output": "{\"success\":true}"
                }
              }
            }
          ],
          "status": "success",
          "timestamp": "2025-11-11T14:38:03.116Z",
          "resultDisplay": "{\"success\":true}",
          "displayName": "draw_circle (aseprite MCP Server)",
          "description": "Draw a circle with specified center, radius, color, and fill option.",
          "renderOutputAsMarkdown": true
        }
      ],
      "thoughts": [
        {
          "subject": "Beginning Sprite Creation",
          "description": "I've just generated the new sprite at the specified location. Currently, I need to place a red circle in the center. Given its dimensions, the calculations for the center point are underway. Next step, draw the circle!",
          "timestamp": "2025-11-11T14:38:02.177Z"
        },
        {
          "subject": "Defining Circle Parameters",
          "description": "I've located the center point for the circle: (32, 32). With a radius of 20 pixels and the color set to red (#FF0000), I'm ready to proceed. I'll utilize \"Layer 1\" on frame 1 by default to place it. Now, I should draw the circle within the designated sprite.",
          "timestamp": "2025-11-11T14:38:03.009Z"
        }
      ],
      "model": "gemini-2.5-flash",
      "tokens": {
        "input": 10780,
        "output": 67,
        "cached": 10444,
        "thoughts": 133,
        "tool": 0,
        "total": 10980
      }
    },
    {
      "id": "2044c5cf-c341-44fc-bc82-aa8bf20e1e5c",
      "timestamp": "2025-11-11T14:38:05.781Z",
      "type": "gemini",
      "content": "I have created a new 64x64 Aseprite sprite and drawn a red circle in the center. The sprite is located at `/tmp/pixel-mcp/sprite-1762871878704849000.aseprite`.",
      "thoughts": [
        {
          "subject": "Finishing the Sprite",
          "description": "I've just completed the drawing of the red circle onto the new sprite. The task, as far as I can tell, is now fully finished, and I believe it meets all requirements.",
          "timestamp": "2025-11-11T14:38:05.767Z"
        }
      ],
      "tokens": {
        "input": 10856,
        "output": 62,
        "cached": 10423,
        "thoughts": 19,
        "tool": 0,
        "total": 10937
      },
      "model": "gemini-2.5-flash"
    },
    {
      "id": "b094a697-927e-4e05-a0fb-8118a5ea84dd",
      "timestamp": "2025-11-11T14:38:28.341Z",
      "type": "user",
      "content": "Add a new layer called 'Background' and fill it with blue"
    },
    {
      "id": "9e27c677-c0a4-45af-838b-019daf2fe9c5",
      "timestamp": "2025-11-11T14:38:33.002Z",
      "type": "gemini",
      "content": "",
      "toolCalls": [
        {
          "id": "add_layer-1762871912798-edac96cf098bf8",
          "name": "add_layer",
          "args": {
            "layer_name": "Background",
            "sprite_path": "/tmp/pixel-mcp/sprite-1762871878704849000.aseprite"
          },
          "result": [
            {
              "functionResponse": {
                "id": "add_layer-1762871912798-edac96cf098bf8",
                "name": "add_layer",
                "response": {
                  "output": "{\"success\":true}"
                }
              }
            }
          ],
          "status": "success",
          "timestamp": "2025-11-11T14:38:33.002Z",
          "resultDisplay": "{\"success\":true}",
          "displayName": "add_layer (aseprite MCP Server)",
          "description": "Add a new layer to an existing Aseprite sprite. Returns success status.",
          "renderOutputAsMarkdown": true
        }
      ],
      "thoughts": [
        {
          "subject": "Adding the background",
          "description": "I'm focusing on incorporating a 'Background' layer filled with blue into the latest sprite. My primary task is to identify and target `/tmp/pixel-mcp/sprite-1762871878704849000.aseprite`.  Currently, the plan is to first create the layer, then flood-fill it with the desired color.",
          "timestamp": "2025-11-11T14:38:31.979Z"
        },
        {
          "subject": "Constructing the layer",
          "description": "I've successfully added the 'Background' layer to the target sprite. Now, I'm pivoting to fill the new layer with blue. My immediate plan involves retrieving the sprite's dimensions using `get_sprite_info` to define the fill area. I'll then use `fill_area` with the provided color and tolerance to complete the background.",
          "timestamp": "2025-11-11T14:38:32.796Z"
        }
      ],
      "model": "gemini-2.5-flash",
      "tokens": {
        "input": 10931,
        "output": 42,
        "cached": 10857,
        "thoughts": 304,
        "tool": 0,
        "total": 11277
      }
    },
    {
      "id": "c67c8dfb-6023-4450-9e6a-62fc9bf7ccdb",
      "timestamp": "2025-11-11T14:38:36.003Z",
      "type": "gemini",
      "content": "",
      "toolCalls": [
        {
          "id": "get_sprite_info-1762871915671-bf40d3be2b9f6",
          "name": "get_sprite_info",
          "args": {
            "sprite_path": "/tmp/pixel-mcp/sprite-1762871878704849000.aseprite"
          },
          "result": [
            {
              "functionResponse": {
                "id": "get_sprite_info-1762871915671-bf40d3be2b9f6",
                "name": "get_sprite_info",
                "response": {
                  "output": "{\"color_mode\":\"indexed\",\"frame_count\":1,\"height\":64,\"layer_count\":2,\"layers\":[\"Layer 1\",\"Background\"],\"width\":64}"
                }
              }
            }
          ],
          "status": "success",
          "timestamp": "2025-11-11T14:38:36.003Z",
          "resultDisplay": "{\"color_mode\":\"indexed\",\"frame_count\":1,\"height\":64,\"layer_count\":2,\"layers\":[\"Layer 1\",\"Background\"],\"width\":64}",
          "displayName": "get_sprite_info (aseprite MCP Server)",
          "description": "Retrieve metadata about an existing Aseprite sprite including dimensions, color mode, frame count, layer count, and layer names.",
          "renderOutputAsMarkdown": true
        }
      ],
      "thoughts": [
        {
          "subject": "Defining Sprite Background",
          "description": "I've successfully incorporated the 'Background' layer. My next step involves populating it with a solid blue color. To achieve this, I'm planning to use `get_sprite_info` to accurately ascertain the sprite's dimensions.",
          "timestamp": "2025-11-11T14:38:35.669Z"
        }
      ],
      "model": "gemini-2.5-flash",
      "tokens": {
        "input": 10982,
        "output": 40,
        "cached": 10762,
        "thoughts": 49,
        "tool": 0,
        "total": 11071
      }
    },
    {
      "id": "0978f9f7-a333-4b79-a8ad-382ad3ed039b",
      "timestamp": "2025-11-11T14:38:39.037Z",
      "type": "gemini",
      "content": "",
      "toolCalls": [
        {
          "id": "fill_area-1762871918960-aaa07e746b7f6",
          "name": "fill_area",
          "args": {
            "layer_name": "Background",
            "sprite_path": "/tmp/pixel-mcp/sprite-1762871878704849000.aseprite",
            "x": 0,
            "frame_number": 1,
            "y": 0,
            "tolerance": 0,
            "color": "#0000FF"
          },
          "result": [
            {
              "functionResponse": {
                "id": "fill_area-1762871918960-aaa07e746b7f6",
                "name": "fill_area",
                "response": {
                  "output": "{\"success\":true}"
                }
              }
            }
          ],
          "status": "success",
          "timestamp": "2025-11-11T14:38:39.037Z",
          "resultDisplay": "{\"success\":true}",
          "displayName": "fill_area (aseprite MCP Server)",
          "description": "Flood fill from a starting point with specified color (paint bucket tool).",
          "renderOutputAsMarkdown": true
        }
      ],
      "thoughts": [
        {
          "subject": "Processing the Sprite Data",
          "description": "I have retrieved the sprite data. The sprite is confirmed to be 64x64 pixels. Next, I'll be filling the \"Background\" layer with a solid blue color to establish the initial backdrop.",
          "timestamp": "2025-11-11T14:38:38.936Z"
        }
      ],
      "model": "gemini-2.5-flash",
      "tokens": {
        "input": 11066,
        "output": 59,
        "cached": 10386,
        "thoughts": 34,
        "tool": 0,
        "total": 11159
      }
    },
    {
      "id": "72e1f63f-670b-4315-9baf-e32ae76179d2",
      "timestamp": "2025-11-11T14:38:41.531Z",
      "type": "gemini",
      "content": "I have added a new layer named 'Background' to the sprite `/tmp/pixel-mcp/sprite-1762871878704849000.aseprite` and filled it with blue.",
      "thoughts": [
        {
          "subject": "Finishing the Task",
          "description": "The background is now completely blue, a vibrant hue. With this final step completed, the designated task is finished, and I can move on to the next.",
          "timestamp": "2025-11-11T14:38:41.475Z"
        }
      ],
      "tokens": {
        "input": 11134,
        "output": 52,
        "cached": 10800,
        "thoughts": 19,
        "tool": 0,
        "total": 11205
      },
      "model": "gemini-2.5-flash"
    },
    {
      "id": "b2a8fca7-7e91-41e4-a99b-a9c34aefeaf2",
      "timestamp": "2025-11-11T14:38:59.448Z",
      "type": "user",
      "content": "Export the sprite as a PNG"
    },
    {
      "id": "1a6903f0-3580-4c95-a96d-4e3b80dc7dec",
      "timestamp": "2025-11-11T14:39:03.592Z",
      "type": "gemini",
      "content": "",
      "toolCalls": [
        {
          "id": "export_sprite-1762871943518-f2c8581117e9d",
          "name": "export_sprite",
          "args": {
            "sprite_path": "/tmp/pixel-mcp/sprite-1762871878704849000.aseprite",
            "frame_number": 1,
            "output_path": "/tmp/pixel-mcp/sprite-1762871878704849000.png",
            "format": "png"
          },
          "result": [
            {
              "functionResponse": {
                "id": "export_sprite-1762871943518-f2c8581117e9d",
                "name": "export_sprite",
                "response": {
                  "output": "{\"exported_path\":\"/tmp/pixel-mcp/sprite-1762871878704849000.png\",\"file_size\":1145}"
                }
              }
            }
          ],
          "status": "success",
          "timestamp": "2025-11-11T14:39:03.592Z",
          "resultDisplay": "{\"exported_path\":\"/tmp/pixel-mcp/sprite-1762871878704849000.png\",\"file_size\":1145}",
          "displayName": "export_sprite (aseprite MCP Server)",
          "description": "Export sprite to common image formats (PNG, GIF, JPG, BMP).",
          "renderOutputAsMarkdown": true
        }
      ],
      "thoughts": [
        {
          "subject": "Planning the Sprite Export",
          "description": "I'm currently focused on the export process. I plan to use the `export_sprite` tool. The source sprite is at `/tmp/pixel-mcp/sprite-1762871878704849000.aseprite`. The next step is to define the output path for the PNG file.",
          "timestamp": "2025-11-11T14:39:02.187Z"
        },
        {
          "subject": "Determining Export Parameters",
          "description": "I've got the sprite path and the need to specify output parameters. I'll set the format to \"png\" and the frame number to \"1\", as requested. The output path will reside in the same directory as the sprite. I'll be sure to generate the appropriate shell commands.",
          "timestamp": "2025-11-11T14:39:03.517Z"
        }
      ],
      "model": "gemini-2.5-flash",
      "tokens": {
        "input": 11192,
        "output": 78,
        "cached": 10822,
        "thoughts": 237,
        "tool": 0,
        "total": 11507
      }
    },
    {
      "id": "1312da7b-781b-40c5-8ab9-b8c799f40e2d",
      "timestamp": "2025-11-11T14:39:06.084Z",
      "type": "gemini",
      "content": "I have exported the sprite `/tmp/pixel-mcp/sprite-1762871878704849000.aseprite` as a PNG image to `/tmp/pixel-mcp/sprite-1762871878704849000.png`.",
      "thoughts": [
        {
          "subject": "Achieving Export Completion",
          "description": "I've just successfully finalized the export of the sprite as a PNG file. It's done; the task is now fully complete. All that's left is to confirm the output looks correct.",
          "timestamp": "2025-11-11T14:39:06.079Z"
        }
      ],
      "tokens": {
        "input": 11320,
        "output": 75,
        "cached": 10797,
        "thoughts": 18,
        "tool": 0,
        "total": 11413
      },
      "model": "gemini-2.5-flash"
    }
  ]

Is there specific commands/prompt I need to add to gemini so it could understand how to use that MCP?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions