Skip to main content
Glama
README.md
# Umodel-MCP

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/CHA1007/Umodel-MCP/blob/main/LICENSE)
[![GitHub](https://img.shields.io/badge/GitHub-CHA1007%2FUmodel--MCP-black?logo=github)](https://github.com/CHA1007/Umodel-MCP)

**English** | [简体中文](README.zh-CN.md)

An MCP server for [umodel](https://www.gildor.org/en/projects/umodel) that lets any MCP client
**list, extract, and export** Unreal Engine game assets through natural language.

## Features

- **Zero-dependency extraction**: `pak_list` / `pak_extract` are pure TypeScript implementations
  that parse the .pak index directly and extract raw `.uasset/.uexp` files — no umodel download required
- **Encrypted pak support**: AES-256 index/entry encryption, including the standard mode and the
  bitflip variant; keys are held in session memory only
- **Full export pipeline**: meshes, textures, animations, and sounds are exported to gltf, psk,
  png, dds, and other formats (requires the umodel executable)

## Requirements

- Node.js 18 or later
- Any MCP-capable client (Hermes, Claude Code, Cursor, PI, Codex, etc.)
- Only needed for export/conversion: [umodel](https://www.gildor.org/en/projects/umodel)

## Installation

### Standard config

```json
{
  "mcpServers": {
    "umodel": {
      "command": "npx",
      "args": ["-y", "umodel-mcp"]
    }
  }
}
```

You can also just tell your agent: "Install and register umodel-mcp, reload the MCP connection, and verify it works."

<details>
<summary>Claude Code / Codex (one-line CLI)</summary>

```bash
claude mcp add umodel npx -- -y umodel-mcp
```

```bash
codex mcp add umodel npx "-y" "umodel-mcp"
```

</details>

<details>
<summary>Run from source</summary>

```bash
git clone git@github.com:CHA1007/Umodel-MCP.git
cd Umodel-MCP
npm install
npm run build
```

Then register it in your MCP client config:

```json
{
  "mcpServers": {
    "umodel": {
      "command": "node",
      "args": ["<absolute path to this repo>/dist/index.js"]
    }
  }
}
```

</details>

## Tools

| Tool | umodel command | Description |
|------|----------------|-------------|
| `umodel_session_get` | — | Show the current in-memory session settings |
| `umodel_session_set` | — | Remember session settings (in memory only, nothing written to disk) |
| `umodel_find_exe` | — | Auto-search for the umodel executable (fallback only, when the user does not know the path) |
| `umodel_version` | `-version` | Verify the executable (pass `exe` to test and remember a new path) |
| `umodel_game_list` | `-gamelist` / `-taglist` | List supported games and their `-game=` tags |
| `umodel_list_packages` | — | Recursively scan a directory for `.pak/.upk/.uasset/.ut2` package files |
| `umodel_list_objects` | `-list` | List objects in a package (filtering and pagination supported) |
| `umodel_package_info` | `-pkginfo` | Show package info (name/export tables) |
| `umodel_export` | `-export` | Export meshes/textures/animations/sounds (psk, gltf, png, dds…) |
| `umodel_save` | `-save` | Copy raw package files out as-is (.upk + .uexp/.ubulk) |
| `umodel_list_output` | — | Show the exported directory tree (with file sizes) |
| `pak_list` | — | Parse the .pak index directly (no umodel), AES-encrypted indexes supported, search asset paths |
| `pak_extract` | — | Extract raw .uasset/.uexp files from a .pak (encrypted paks supported) |

Command-line arguments follow the official UEViewer source (`UmodelTool/Main.cpp`);
each tool's parameters can be inspected via its schema in your MCP client.

## Disclaimer

- This project is intended only for unpacking, viewing, and exporting game assets that
  **the user legally owns**, for learning, research, backup, and other lawful purposes
- Please comply with the user agreement of the game in question and the laws and regulations
  of your jurisdiction; the author assumes no responsibility for any copyright or agreement
  disputes or damages arising from the use of this project

## License

[MIT](LICENSE) © CHA1007

TDQS

A3.9/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a distinct action: session management, exe discovery, directory scanning, pak parsing, export/save, and listing outputs/objects. Even similar list tools are differentiated by input type (directory, pak index, package, output folder). Descriptions clearly specify each tool's unique role.

Naming Consistency3/5

All tools share a umodel_ or pak_ prefix, providing a clear family relationship, but the verb-noun structure is inconsistent: some are verb-first (umodel_list_objects, umodel_export), some noun-first (umodel_game_list, umodel_package_info), and some use noun-verb pairs (umodel_session_get/set). While readable, there is no uniform naming pattern.

Tool Count5/5

13 tools is well-scoped for an asset extraction workflow. Each tool earns its place, covering exe management, session settings, scanning, listing, exporting, saving, and pak operations without redundancy.

Completeness5/5

The tool set covers the full pipeline from finding the umodel executable and setting session config to scanning directories, listing packages/paks, exporting/saving assets, and verifying output. Necessary helpers like game tag lookup and version checking are included, leaving no significant gaps for the domain.

Maintenance

ActivitySlowing
ResponsivenessNo issues