alpsei/aseprite-lua-mcp

GitHub ↗ · How this check works

Per-setup public labels: Linux / Luna: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/alpsei--aseprite-lua-mcp.svg).

mcp-server

Works

README claims checked out on 1 recorded setup.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyes

Linux / Luna: yes · Oct 25, 2026 · d55f986547e3 · codex / codex-cli 0.163.0
Recorded operation: node dist/index.js · local stdio MCP start + initialize + tools/list

Does what it says
1 of 1 claims checked out
  • The documentation tool returns an Aseprite Lua API cheat sheet.: Real input produced the expected result: # Aseprite Lua API cheat sheet

    Source: Returns a compact cheat sheet of the Aseprite Lua API (Sprite, Layer, Cel, Image, Color, Palette, `saveCopyAs`) so the agent doesn't need to guess.

    Input: {"tool": "get_aseprite_lua_docs", "arguments": {}}

    Expected: # Aseprite Lua API cheat sheet

    Command: node dist/index.js tools/call {"tool": "get_aseprite_lua_docs", "arguments": {}}

    Observed: # Aseprite Lua API cheat sheet (run with: aseprite --batch --script file.lua)\n\n## Globals\napp.sprite -- active sprite (nil in batch unless you open/create one)\napp.activeLayer / app.activeFrame / app.activeCel\napp.params -- script params (--script-param key=value)\nprint(...) -- goes to stdout\nRect(x,y,w,h) Point(x,y) Size(w,h)\nColor{ r=255, g=0, b=0, a=255 } or Color(255,0,0,255) or Color{ gray=128 }\napp.pixelColor.rgba(r,g,b,a) -- integer pixel value (RGB mode)\n\n## Sprite\nlocal spr = Sprite(width, height) -- new RGB sprite (also: S

MCP
Yes, observed
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Maintained
actively maintained: last commit 1 days ago; 2 commits and 0 merged PRs in 90 days; 0 open issues, 0 open PRs; no releases

Last commit Oct 22, 2026

Setup time
5 min 29 s
5 min 29 s to a working result
Issue
none found in recorded check
Examples
1 of 1 ran as expected
  • Build the documented development entrypoint: command completed successfully

    Source: README.md / Development

    Input: npm install && npm run build

    Expected: TypeScript build completes

    Command: npm run build

    Observed: > [email protected] build > tsc

Evidence
README behavior checked
Agent interfaces
MCP
MCP

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

MCP context
2 tools · about 296 tokens
2 tools · about 296 tokens

Largest returned tools/list page in these observations. Compact UTF-8 definition bytes ÷ 4, rounded up; approximate, excluding client framing and tool results. This is context size, not proof that every tool works.

Measured on linux with Luna · Oct 25, 2026 on d55f986547e3

Tested with
Codex / Luna
  • Linux: Codex / Luna · agent codex-cli 0.163.0 · Checked operation passed · Oct 25, 2026 on d55f986547e3

Each entry describes its recorded operation and source revision.

Safety
No unexpected network or file activity found in these checks

No problems traced to this repository code in these checks; a short run cannot prove safety. 12 listed items (named-host connections, static matches, dependency advisories) are below and do not change this verdict.

OSV reports a known vulnerability in this dependency version. 3 distinct locations. 6 findings.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

Full event, path and process lists for each observed setup:

Repair history and test corrections
Current diagnosis: unknown · pending

OSV scan failed (exit 127)

Repair record fix-5ac4c87b05013f9bab4a · current status JSON. Original run outcomes remain unchanged.

Current diagnosis: unknown · pending

OSV scan failed (exit 127)

Repair record fix-a7b504e77e8a1284c891 · current status JSON. Original run outcomes remain unchanged.

Current diagnosis: unknown · pending

OSV scan failed (exit 127)

Repair record fix-cfc87731a6fcc66f78f1 · current status JSON. Original run outcomes remain unchanged.

Current diagnosis: unknown · pending

OSV scan failed (exit 127)

Repair record fix-74edc6276750f156a698 · current status JSON. Original run outcomes remain unchanged.

Current diagnosis: unknown · pending

OSV scan failed (exit 127)

Repair record fix-3f43531a09496cbad005 · current status JSON. Original run outcomes remain unchanged.

Run details
Earlier attempts (1)

Luna

Native agent · Checked operation passed

Checked operation node dist/index.js · local stdio MCP start + initialize + tools/list

Agent-reported scope: MCP initialization and get_aseprite_lua_docs tool call

MCP server returned: aseprite-mcp · version 0.1.1.

MCP tools returned: execute_aseprite_script, get_aseprite_lua_docs. Tool listing does not establish authenticated tool-call success.

Run details
run
alpsei--aseprite-lua-mcp-gpt-6-luna-1792959653773058500
date
Oct 25, 2026
time to working
328.7s
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
product operation
model
gpt-6-luna
agent / version
codex / codex-cli 0.163.0
platform
linux
reported cost
not reported (not assumed free)
Recorded source
https://github.com/alpsei/aseprite-lua-mcp
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "d55f986547e3c5de620a25a9e8b2da5feaa8d124", "url": "https://github.com/alpsei/aseprite-lua-mcp"}
Test version
readme-28be396a13b37d359c3180d70d32e54f628c075f93f36a825acbf4adbf9e947c
revision
d55f986547e3c5de620a25a9e8b2da5feaa8d124
Whose fault: not assigned · resolved

Safety: Review signals: 6 known vulnerability.

Review signals: 6 known vulnerability.

OSV reports a known vulnerability in this dependency version. 3 distinct locations. 6 findings.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

A short run cannot establish that code is safe.

Connections show IP addresses; proxies can hide the final hostname.

Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing.

Full safety evidence →

Answers recorded for this run
  • The documentation tool returns an Aseprite Lua API cheat sheet.: Real input produced the expected result: # Aseprite Lua API cheat sheet

    Source: Returns a compact cheat sheet of the Aseprite Lua API (Sprite, Layer, Cel, Image, Color, Palette, `saveCopyAs`) so the agent doesn't need to guess.

    Input: {"tool": "get_aseprite_lua_docs", "arguments": {}}

    Expected: # Aseprite Lua API cheat sheet

    Command: node dist/index.js tools/call {"tool": "get_aseprite_lua_docs", "arguments": {}}

    Observed: # Aseprite Lua API cheat sheet (run with: aseprite --batch --script file.lua)\n\n## Globals\napp.sprite -- active sprite (nil in batch unless you open/create one)\napp.activeLayer / app.activeFrame / app.activeCel\napp.params -- script params (--script-param key=value)\nprint(...) -- goes to stdout\nRect(x,y,w,h) Point(x,y) Size(w,h)\nColor{ r=255, g=0, b=0, a=255 } or Color(255,0,0,255) or Color{ gray=128 }\napp.pixelColor.rgba(r,g,b,a) -- integer pixel value (RGB mode)\n\n## Sprite\nlocal spr = Sprite(width, height) -- new RGB sprite (also: S

Examples

  • Build the documented development entrypoint: command completed successfully

    Source: README.md / Development

    Input: npm install && npm run build

    Expected: TypeScript build completes

    Command: npm run build

    Observed: > [email protected] build > tsc

Local or hosted: local

What the agent did

MCP initialization and get_aseprite_lua_docs tool call

pwd; vault-search 'aseprite lua mcp repository quickstart operation' 2>&1; cat <host-path> 2>&1; rg --files -g 'README*' -g 'AGENTS.md' -g 'pyproject.toml' -g 'package.json' -g 'Cargo.toml' -g 'go.mod' -g '*.md' | head -80; git status --short --branch; git rev-parse --show-toplevel; rg -n "" README.md | head -240
ls -la; find .. -name AGENTS.md -o -name README.md; find . -maxdepth 2 -type f | head -100
cat README.md; cat package.json; cat .claude/mcp.json; python3 --version; node --version 2>&1; npm --version 2>&1; id -u; sudo -n true; echo sudo_status:$?
sudo apt-get -o DPkg::Lock::Timeout=300 update && sudo apt-get -o DPkg::Lock::Timeout=300 install -y nodejs npm
npm install && npm run build
node --version; npm --version; command -v aseprite || true; apt-cache policy aseprite; find .coldpass -maxdepth 2 -type f -print; sed -n '1,240p' src/index.ts; sed -n '1,240p' src/aseprite.ts
node -e 'const {spawn}=require("node:child_process"); const p=spawn("node",["dist/index.js"],{cwd:"<guest-path>",stdio:["pipe","pipe","inherit"]}); let b=""; p.stdout.on("data",d=>{b+=d; while(b.includes("\n")){let i=b.indexOf("\n"),l=b.slice(0,i);b=b.slice(i+1);if(!l)continue;let n=JSON.parse(l);if(n.id===2){console.log(JSON.stringify(n));p.kill();}}}); p.stdin.write(JSON.stringify({jsonrpc:"2.0",id:1,method:"initialize",params:{protocolVersion:"2024-11-05",capabilities:{},clientInfo:{name:"coldpass-probe",version:"1"}}})+"\n"); setTimeout(()=>{p.stdin.write(JSON.stringify({jsonrpc:"2.0",method:"notifications/initialized"})+"\n");p.stdin.write(JSON.stringify({jsonrpc:"2.0",id:2,method:"tools/call",params:{name:"get_aseprite_lua_docs",arguments:{}}})+"\n");},100); setTimeout(()=>p.kill(),5000);'
mkdir -p .coldpass; cat > .coldpass/probe.json <<'EOF'
{"kind":"mcp","argv":["node","dist/index.js"],"cwd":"<guest-path>","tool":"get_aseprite_lua_docs","arguments":{},"expected_text":"# Aseprite Lua API cheat sheet"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"The documentation tool returns an Aseprite Lua API cheat sheet.","source":"Returns a compact cheat sheet of the Aseprite Lua API (Sprite, Layer, Cel, Image, Color, Palette, `saveCopyAs`) so the agent doesn't need to guess.","input":"get_aseprite_lua_docs with empty arguments","expected":"# Aseprite Lua API cheat sheet","probe_kind":"mcp","argv":["node","dist/index.js"],"tool":"get_aseprite_lua_docs","arguments":{},"expected_text":"# Aseprite Lua API cheat sheet","cwd":"<guest-path>"}]
EOF
cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Build the documented development entrypoint","source":"README.md / Development","input":"npm install && npm run build","expected":"TypeScript build completes","argv":["npm","run","build"],"cwd":"<guest-path>","expected_text":"tsc"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"reason":"Inspected README command entrypoints and src/index.ts: the program serves MCP tool calls on stdio and contains no cron, timer, loop, webhook, or one-shot cycle scheduler." ,"checks":[]}
EOF

<env-var>=<guest-path> python3 -I <guest-path> --validate --replay
cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"MCP initialization and get_aseprite_lua_docs tool call","operation_scope":"Node.js 18.19.1 stdio server, with documentation result replayed; README's Aseprite-dependent script execution could not be exercised because Aseprite is not installed and unavailable through the guest apt package index.","steps":["Read README Quick start and Development sections.","Installed Node.js and npm with sudo apt-get -o DPkg::Lock::Timeout=300 install -y nodejs npm; versions are 18.19.1 and 9.2.0.","Ran npm install and npm run build successfully.","Started documented server entrypoint node dist/index.js and called get_aseprite_lua_docs using MCP initialize and tools/call.","Saved and replayed a README claim and MCP probe; checker validation and replay passed."],"deviations":["Aseprite required for execute_aseprite_script is not installed; command -v aseprite found none and apt-cache policy aseprite returned no package. Therefore script execution and sprite output remain unverified."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":null}
EOF