L2 Modding MCP

L2 Modding MCP

MCP server for Lineage 2 / Unreal Engine 2.5 asset modding, enabling texture extraction, modification, repackaging, and procedural mesh generation.

Category
Visit Server

README

L2 Modding MCP

MCP Server for Lineage 2 / Unreal Engine 2.5 asset modding — 25 tools. Extract, modify, repackage textures (.utx), generate procedural meshes (.usx), parse animations (.ukx), sounds (.uax), and maps (.unr).

Features

Textures

  • Extract/inspect/import textures from .utx packages
  • Codec: DXT1/DXT3/DXT5/P8/RGBA8/RGB8/G16 (decode + encode)
  • Batch process: grayscale, invert, brightness, contrast, resize, blur, sharpen
  • Batch import: folder of PNGs → .utx in one step
  • Normal map, AO map, specular map generation
  • Texture atlas builder (grid packing)
  • PBR channel packer (metallic/roughness/AO/height → RGBA)

3D Meshes

  • Procedural castle generator (towers, walls, battlements, gate, keep, floor)
  • StaticMesh serializer for .usx packages
  • Export to OBJ and FBX ASCII
  • Import from OBJ back into the pipeline
  • LOD generator (vertex decimation, LOD0–LOD3)
  • Collision mesh generator (box, cylinder)
  • Procedural heightmap terrain (hills, mountains, plains, island, noise)

Animations (.ukx)

  • Parse AnimationSequence data (frames, bones, tracks)
  • Export to BVH format (Blender/Maya compatible)

Sounds (.uax)

  • List sound assets
  • Extract sounds to WAV (PCM and embedded WAV)

Maps (.unr)

  • Parse level data: brushes, static meshes, lights, player starts

Package Management

  • Package browser: scan directories for mesh↔texture cross-references
  • Package optimizer: remove dead exports, reduce size
  • Package comparator: diff two packages

Installation

pip install -e .

Usage with opencode

Add to opencode.json:

{
  "mcp": {
    "l2-modding": {
      "type": "local",
      "command": ["python", "-m", "l2_mcp.server"],
      "enabled": true
    }
  }
}

MCP Tools (25)

Textures

Tool Description
l2_list_package List all assets in .utx/.usx/.ukx
l2_list_names List name table entries
l2_texture_info Detailed texture info (format, mips, palette)
l2_extract_texture Extract single texture to PNG
l2_extract_all_textures Extract all textures to directory
l2_import_texture Replace texture with PNG (repacks .utx)
l2_batch_process Batch transform (grayscale, invert, etc.)
l2_batch_import_textures Folder of PNGs → .utx
l2_gen_normal_map Generate normal/AO/specular map
l2_build_atlas Pack textures into atlas grid
l2_pack_pbr Pack metallic/roughness/AO/height → RGBA

Meshes & Level Design

Tool Description
l2_create_castle Generate procedural 3D castle
l2_generate_textures Generate stone/roof/floor/gate textures
l2_create_usx_package Export meshes to .usx
l2_export_obj Export meshes to OBJ or FBX
l2_import_obj Import OBJ → mesh pipeline
l2_generate_lods Generate LOD0–LOD3 by decimation
l2_gen_collision Generate collision mesh (box/cylinder)
l2_gen_terrain Procedural heightmap terrain

Animations

Tool Description
l2_animation_info List animations in .ukx
l2_export_animation Export animation to BVH

Sounds

Tool Description
l2_list_sounds List sounds in .uax
l2_extract_sound Extract sound to WAV
l2_extract_all_sounds Extract all sounds to WAV

Package Management

Tool Description
l2_compare_packages Diff two packages
l2_scan_directory Scan L2 folder for mesh↔texture refs
l2_optimize_package Strip dead exports, reduce size
l2_parse_map Read .unr maps (brushes, actors, lights)

Supported Texture Formats

ID Format Description
0 P8 256-color paletted
1 RGBA8 32-bit RGBA
3 DXT1/BC1 4 bpp, optional 1-bit alpha
4 RGB8 24-bit RGB
5 DXT3/BC2 8 bpp, explicit alpha
6 DXT5/BC3 8 bpp, interpolated alpha
B G16 16-bit grayscale

Project Structure

src/l2_mcp/
├── server.py          # MCP server (25 tools)
└── upk/
    ├── reader.py      # Binary reader (compact indices, GUIDs)
    ├── package.py     # UPK parser (.utx/.usx/.ukx) + serializer
    ├── texture.py     # DXT codec + texture decode/encode
    ├── writer.py      # Package rebuilder / repacker
    ├── mesh.py        # StaticMesh serializer + primitives
    ├── castle.py      # Procedural castle generator
    ├── obj_io.py      # OBJ/FBX export
    ├── obj_import.py  # OBJ import
    ├── animation.py   # .ukx parser + BVH export
    ├── normal_map.py  # Normal/AO/specular map generator
    ├── batch_builder.py # Batch import + heightmap terrain
    ├── lod.py         # LOD generator + collision mesh
    ├── browser.py     # Package scanner + optimizer
    ├── atlas.py       # Texture atlas + PBR packer
    ├── sound.py       # .uax sound extractor
    └── unr.py         # .unr map parser

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured