umdgencli-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@umdgencli-mcpBuild a compilation with the PSP games in my downloads folder, then save as ISO"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
UMDGenCLI MCP Server
An MCP (Model Context Protocol) server that lets AI agents drive UMDGenCLI — the command-line tool for creating and editing PSP UMD images (ISO / CSO / DAX). Every major function of UMDGenCLI is exposed as a dedicated tool, so agents can build compilations, save images, convert formats, patch, extract, and inspect without learning the CLI syntax.
Requirements
Node.js 18+ (developed and tested on Node 22 / Windows)
The UMDGenCLI executable (
umdgen-win-x64.exe/umdgen-win-x86.exe/umdgen.exe), from the GitHub Releases page
Related MCP server: local-skills-mcp
Setup
npm install
npm run build # compiles TypeScript into dist/Installing from npm (other PCs)
The server is published as the umdgencli-mcp npm package. On any machine with
Node.js, install it globally (or use npx), then point an MCP client at the
umdgen-mcp binary with the UMDGENCLI_PATH env var set to that machine's
UMDGenCLI executable:
npm install -g umdgencli-mcp{
"mcpServers": {
"umdgencli": {
"command": "umdgen-mcp",
"env": {
"UMDGENCLI_PATH": "C:\\tools\\umdgen.exe",
"UMDGENCLI_CWD": "C:\\workspace\\psp-images"
}
}
}
}No local build or install step is needed — the published package contains the
compiled server (dist/). The UMDGenCLI executable itself is not bundled; it
must exist on the target machine (it's self-contained, so no .NET runtime is
needed there either).
Configuration
The server is configured entirely through environment variables:
Variable | Required | Default | Description |
| yes | — | Path to the UMDGenCLI executable. The server refuses to start without it. |
| no |
| Path of the persistent compilation state file. UMDGenCLI keeps the in-memory compilation (folder/file tree + volume metadata) in this file between invocations, so a compilation can be built up across many tool calls. |
| no | server working directory | Working directory for the CLI subprocess. Relative paths in tool arguments (source files, output images) resolve against this. |
The server starts the CLI as a subprocess per tool call with --state <file>
prepended automatically. Call umdgen_reset_session to discard the current
compilation, and umdgen_get_session to see the active configuration.
Registering with an MCP client
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"umdgencli": {
"command": "node",
"args": ["H:\\path\\to\\UMDGenCLI MCP\\dist\\server.js"],
"env": {
"UMDGENCLI_PATH": "H:\\path\\to\\umdgen.exe",
"UMDGENCLI_CWD": "H:\\workspace\\psp-images"
}
}
}
}Kilo (kilo.json)
{
"mcp": {
"umdgencli": {
"type": "stdio",
"command": "node",
"args": ["H:/path/to/UMDGenCLI MCP/dist/server.js"],
"env": {
"UMDGENCLI_PATH": "H:/path/to/umdgen.exe",
"UMDGENCLI_CWD": "H:/workspace/psp-images"
}
}
}
}Cursor / generic
Any client that supports stdio MCP servers works the same way: run
node <path-to-repo>/dist/server.js with the environment variables above.
Tools
All tools are prefixed with umdgen_ (per MCP naming conventions, to avoid
collisions with tools from other MCP servers). All tools return the CLI's
stdout/stderr plus the process exit code; a non-zero exit code is surfaced as
an error result (isError: true). Every tool carries MCP annotations
(readOnlyHint, destructiveHint, idempotentHint, openWorldHint) so
clients can show accurate approval prompts — e.g. umdgen_set_version is
marked destructive when patching in place, and umdgen_reset_session /
umdgen_new_compilation discard unsaved work. Outputs longer than 25,000
characters are truncated with a message telling the agent how to narrow the
result.
Session & environment
Tool | Description |
| Show executable path, state file, working directory |
| Delete the state file and start a fresh compilation |
| Print the UMDGenCLI version |
| Show help (optionally for one command) |
| Escape hatch: run any command with raw arguments |
Compilation building
Tool | CLI equivalent |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Display
Tool | CLI equivalent |
|
|
|
|
|
|
Image operations
Tool | CLI equivalent |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Agent workflow example
umdgen_get_session # confirm executable + state file
umdgen_reset_session # start clean
umdgen_new_compilation { label: "GAME001", padding: "umd" }
umdgen_new_folder { name: "PSP_GAME" }
umdgen_new_folder { name: "SYSDIR", to: "PSP_GAME" }
umdgen_add_file { src: ["EBOOT.BIN"], to: "PSP_GAME/SYSDIR" }
umdgen_add_file { src: ["PARAM.SFO"], to: "PSP_GAME" }
umdgen_list_contents # review the compilation
umdgen_save_image { out: "GAME001.iso", padding: "umd" }
umdgen_image_info { image: "GAME001.iso" } # inspect the result
umdgen_convert_image { input: "GAME001.iso", output: "GAME001.cso" }Notes
Paths: relative paths in tool arguments resolve against
UMDGENCLI_CWD(or the server's working directory). Agents should prefer absolute paths for source files and outputs.add-filereads source data at save time: the on-disk source files must still exist whensave_imageruns.iml-importonly relocates existing files: open the image (or build the compilation) first, then import the IML to apply the listed LBA layout.set-versionandppf-applyrequire raw ISOs; CSO/DAX inputs are rejected by UMDGenCLI itself.--padding umdreproduces UMDGen v4.00's output byte-for-byte; the default is no padding.
Tests
test/run-tests.mjs is an end-to-end suite that spawns the server over stdio,
builds a compilation from generated fixtures (including a valid PARAM.SFO),
and exercises every tool against a real UMDGenCLI executable:
$env:UMDGENCLI_PATH = "H:\path\to\umdgen.exe"
node test\run-tests.mjsEvaluation
test/evaluation.xml contains 10 read-only, independent, verifiable questions
designed to measure how well an agent can use the server with no other
context. The corpus is deterministic:
$env:UMDGENCLI_PATH = "H:\path\to\umdgen.exe"
npm run eval:fixtures # builds test/eval/work/eval1.iso, eval2.iso, eval2.cso
npm run eval:verify # solves all 10 questions through the server; asserts answersTo run the questions through an LLM harness (requires Python 3.10+ and an
ANTHROPIC_API_KEY), point it at the server with the working directory set to
test/eval/work so the relative image paths in the questions resolve. Any
standard MCP evaluation harness works — for example the one shipped with the
mcp-builder skill (install its dependencies with pip install anthropic mcp
first) — run against this server as:
python evaluation.py `
-t stdio -c node -a dist/server.js `
-e UMDGENCLI_PATH=H:\path\to\umdgen.exe `
-e UMDGENCLI_CWD=test/eval/work `
test/evaluation.xmlThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceAn MCP server that publishes CLI tools on your machine for discoverability by LLMs81MIT
- AlicenseAqualityCmaintenanceA universal MCP server that enables any LLM or AI agent to access expert skills from your local filesystem.34234MIT
- AlicenseBqualityFmaintenanceA universal MCP server that automatically discovers and registers CLI tools as AI-powered agents with persona configuration, enabling any CLI tool to be used as an MCP tool.41MIT
- Alicense-qualityAmaintenanceUniversal MCP server that wraps any CLI tool, enabling AI assistants to run commands via natural language.MIT
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
MCP server for AI dialogue using various LLM models via AceDataCloud
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/quickstraw/umdgencli-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server