Easy Items MCP Server
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Easy Items
ไอเทม ร้านค้า กระเป๋า ของดรอป และสูตรคราฟต์ สำหรับเกม 2D · ตลาดเช้า ร้านโชห่วย ตลาดรายอ
Describe a game's items, shops, loot tables and crafting recipes in a small JSON format (easyitems/1). Every item
has Thai / English / Malay names and a 24 or 32 px pixel icon drawn from code. Easy Items validates the whole
database (including the item ids your Easy Quest quests give and take), simulates buying, selling, equipping,
crafting and loot with one deterministic rule set, and exports a Godot 4.3+ project (Resources, an Items
autoload, a shop UI scene) or a PixiJS v8 runtime. CLI, web editor and MCP server; local only, no network.
Godot shop UI ( | PixiJS shop panel (Malay, general store) |
Starter catalog
44 items in two documents that merge into one database, so the Thai village and its Muslim neighbours share one economy. Everything is halal-appropriate: no pork, no alcohol.
Document | Items | Shop |
| food and drink (mango sticky rice, Thai iced tea, sticky rice, kanom chan, smoothie, pomelo…), ingredients (rice bag, fish sauce, coconut, eggs, chili, morning glory, mackerel), festival and gifts (krathong, sky lantern, jasmine garland, lotus, candle), bicycle parts (wheel, chain, bell, patch kit) and gear (bicycle, delivery basket, woven hat, pha khao ma, broom, paper umbrella), the quest letter | ตลาดเช้า morning market · ร้านโชห่วย general store (bicycle parts 5% off; also sells teh tarik and roti) |
| ketupat and shells, beef rendang, dates, roti canai, bubur, teh tarik, songkok, sarong, plain prayer mat (not sellable), pelita lamp, Raya money packet | ตลาดรายอ Raya bazaar: |
Loot tables: delivery_tip, market_basket, scrap_pile, raya_visit. Recipes: bicycle (2 wheels + chain + bell),
mango sticky rice, krathong, ketupat, pelita set. Item ids match the Easy Quest samples (village_delivery,
ramadan_raya): check reports 11 of 11 quest item ids found.
Content rules (enforced by check where they can be): halal shops may not stock pork, alcohol or halal: false
items; no Quran, Arabic calligraphy, sacred figures or depictions of the Prophet as items or icons.
Related MCP server: pixelbolt
Quick start
npm ci && npm run build
npx easyitems init # items/ quests/ exports/ with the starter catalog
npx easyitems list --tag raya
npx easyitems shops raya_bazaar # stock with buy / sell prices
npx easyitems check # database + Easy Quest cross-check, exit 1 on errors
npx easyitems loot market_basket --seed 42 --times 3
npx easyitems render --out icons.png --scale 3
npx easyitems export --preset all # exports/easyitems-{godot,pixi,png,json}
npx easyitems serve # editor at http://127.0.0.1:8878add-item <id> --th --en --icon [--ms --category --price --stack --tag] writes items/game.easyitems.json.
icons lists the 44 built-in icons. Set EASYITEMS_WORKSPACE or pass --workspace.
The format
{
"format": "easyitems/1",
"items": [
{ "id": "ketupat", "name": { "th": "ตูปะ", "en": "Ketupat", "ms": "Ketupat" }, "category": "food",
"price": 15, "stack": 20, "icon": "ketupat", "effects": [{ "kind": "heal", "amount": 20 }], "tags": ["raya", "halal"] }
],
"shops": [
{ "id": "raya_bazaar", "name": { "th": "ตลาดรายอ", "en": "Raya bazaar" }, "keeper": "kakna", "halal": true,
"buyMod": 1, "sellMod": 0.5, "tagMods": { "raya": 0.9 }, "stock": [{ "item": "ketupat", "qty": 20, "restock": 1 }] }
],
"loot": [{ "id": "raya_visit", "rolls": [1, 2], "entries": [{ "item": "kurma", "weight": 3 }], "guaranteed": [{ "item": "coin_pouch_gift", "n": 1 }] }],
"recipes": [{ "id": "ketupat", "name": { "th": "สานตูปะ", "en": "Weave ketupat" }, "inputs": [{ "item": "ketupat_shell", "n": 1 }, { "item": "rice_bag", "n": 1 }], "outputs": [{ "item": "ketupat", "n": 4 }] }]
}Prices: buy = stock.price or round(price × buyMod × tagMods); sell = floor(price × sellMod), only for categories
in buys. Full reference: docs/FORMAT.md.
Export
Preset | What you get |
| A Godot 4.3+ project: |
|
|
|
|
| merged |
The TypeScript engine, the Pixi runtime and the Godot autoload follow the same rules and the same seeded mulberry32 loot rolls. Tests replay a 27-step script (buy, sell, out of stock, not enough coins, equip, craft, loot, restock) in all three and compare canonical JSON states.
Items.buy("raya_bazaar", "ketupat") # {ok, coins} or {ok: false, reason: "not_enough_coins"}
Items.use("ketupat") # applies effects, returns them
var drops = Items.loot("raya_visit", 7) # same drops as the CLI with --seed 7
$ShopUI.open("market")Web editor
easyitems serve (port 8878; npm run dev uses Vite on 5185). Tabs: Items (form, icon picker, where it is
sold, recipes, export), Shops (play the shop with the real rules: buy, sell, next day restock), Loot & recipes
(12 seeds side by side) and Check (validation and quest cross-reference). Thai / English / Malay switch.
MCP server
npm run mcp (stdio) or npm run mcp:http (port 8879). Tools: workspace_info, list_items, get_item,
write_items (validates against the whole workspace, dryRun), check_items, render_icons (returns the PNG),
roll_loot, simulate, export_items. See docs/MCP.md.
Ports
Port | |
Editor + API ( | 8878 |
MCP over HTTP | 8879 |
Vite dev server | 5185 |
Writes from the browser need same-origin requests plus a per-run token; the server only answers to loopback
hosts. Workspace paths outside the workspace or EASYITEMS_ALLOWED_DIRS are refused.
Development
npm test # vitest
GODOT=/path/to/godot npx vitest run test/godot.test.ts # headless Godot check
npm run typecheck
npm run smoke # CLI + MCP (stdio and HTTP)
npm run check:pixi -- exports/easyitems-pixi shot.png # headless Chrome clicks buy / sell in the Pixi demo
node scripts/render-docs.mjs # contact sheetsEasy Suite
Thirteen small, local-first tools that share one look (teak, lantern gold, Kanit, 16/48px pixels), one
workflow (CLI · web editor · MCP server) and the same targets (Godot 4.3+ and PixiJS v8).
ชุดเครื่องมือทำเกมพิกเซลสไตล์ไทย ใช้ร่วมกันได้ทั้งชุด · Easy Kit builds a whole playable game from the other twelve.
The samples share one multicultural southern Thai village: Buddhist temple, wooden kampung mosque and
Chinese-Thai shrine on the same street. หมู่บ้านพหุวัฒนธรรม วัด มัสยิด ศาลเจ้า อยู่ร่วมกันในเมืองเดียว
Tool | What it does | Repo | |
Compose modular 48px chibi characters (top-down + side-view) and export sheets. | |||
Side-view levels: parallax layers, 16px autotiles, Thai town props. | |||
Top-down 16px maps: blob-47 autotiles, objects, collision, spawns. | |||
Branching | |||
Text | |||
Nine-slice pixel UI kit: panels, bars, inventory, menus, 30 icons. | |||
Deterministic 8-bit SFX and 4-channel chiptune loops, typing blips. | |||
Pixel particles: sparks, fire, rain, lanterns, Raya pelita; sheets + Godot particles. | |||
Seeded Thai loop music: ranat, khong wong, saw, khim, pi, kompang; seamless WAV/OGG loops. | |||
Cutscene timelines: actors, camera, dialogue, FX and music cues; Godot + Pixi runners. | |||
Easy Items ← you are here | Item database, shops, inventory, loot tables and crafting; 44 starter items with pixel icons. | ||
Versioned save slots with migrations and checksums; Thai / English / Malay string tables. | |||
One command drives all 12 tools into a playable Godot 4.3+ and PixiJS game; unified MCP server and |
Works with
Easy Quest:
checkreads.ezqfiles and reports item ids that questsgive,takeor test withhas()/count()but the database lacks (with a suggestion).Easy UI: icons follow its 24px icon style; the Godot shop UI picks up its teak theme when installed.
Easy Dialogue cast ids work as shop
keepers; Easy SFX coin and Easy FX coin-burst pair withItems.coins_changed.Easy Save: the Godot autoload's
to_dict()/from_dict()state is what a save slot stores, and item names extract into its string tables.
Credits
Icons and sample data are drawn and written in code and dedicated to the public domain (CC0 1.0). Kanit is bundled under the SIL OFL 1.1. See CREDITS.md. Code: MIT.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Persistent memory, hybrid search and a goal graph for AI agents, over stdio or remote HTTP.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Build, validate, deploy — HTTP APIs, cron jobs, webhooks and MCP tools — from your AI client.
Pixel art for your game, from your coding agent. Generate sprites, items and tiles in your game's style (64 to 1024 px), make variants, reskins and N/E/S/W directions, then edit everything in a full pixel art editor that syncs into your project. Works with Claude, Claude Code, Cursor and ChatGPT; sign in with OAuth, no API key.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to control Blockbench for 3D modeling, including geometry, UV, texturing, animation, procedural generation, quality gates, and human review via 95 tools over HTTP or stdio.MIT
- AlicenseAqualityBmaintenanceEnables agents to author, validate, inspect, patch, and render editable JSON pixel-art and animation recipes through local tools, producing PNG contact sheets, APNGs, sprite atlases, and related export bundles.281,639 npm95MIT
- AlicenseAqualityBmaintenanceEnables users to create character spritesheets from natural-language requests, preview animations, search clothing and tool items, and export engine-ready assets for Godot, Unity, and web.41139 PyPI1MIT
- AlicenseNot gradedqualityCmaintenanceA local stdio MCP server that lets agents describe, render, inspect, and preview procedural 2D pixel-art skill effects and baked sprite animations entirely offline. It reads supplied local PNG/JSON projects and writes transparent sprite sheets, playback JSON, and image previews to a chosen local directory.MIT