Skip to main content

makehuman-core (mhcore)

A GUI-free (no Qt, no OpenGL) Python library for building MakeHuman characters programmatically: set body properties, apply modifiers, equip clothes/hair/eyes/skin, and save/export — from a script, a server, or CI, with no running MakeHuman app.

It works by vendoring the unmodified MakeHuman source (_vendor/) and driving it through a small headless shim (mhcore/) that stubs the GUI/GL modules and supplies a headless application object. The character/geometry pipeline in MakeHuman is pure numpy, so nothing here needs a display or a GPU.

Use with a coding agent

Needs uv. First launch downloads ~430 MB of character data to ~/.cache/mhcore (one time).

OpenCode / Cursor (opencode.json):

{
  "mcp": {
    "makehuman": {
      "type": "local",
      "command": ["uvx", "makehuman-mcp"]
    }
  }
}

Claude Desktop / Claude Code (claude_desktop_config.json / .mcp.json):

{
  "mcpServers": {
    "makehuman": {
      "command": "uvx",
      "args": ["makehuman-mcp"]
    }
  }
}

Until the package is on PyPI, point uvx at this repo:

"command": ["uvx", "--from", "git+https://github.com/vidya-hub/makehuman-core", "makehuman-mcp"]

Library install

A git clone already contains the data. Editable install:

git clone https://github.com/vidya-hub/makehuman-core.git
cd makehuman-core
python3 -m venv .venv
./.venv/bin/pip install -e .

Or uvx makehuman-mcp / pip install makehuman-mcp — data is fetched on first import mhcore if data/ is not next to the package. Override with MHCORE_DATA=/path/to/data.

Usage

import mhcore

h = mhcore.new_human()

# body macros (0.0 - 1.0)
h.set_gender(1.0).set_age(0.5).set_weight(0.6).set_muscle(0.8).set_height(0.7)

# fine detail modifiers
print(len(h.list_modifiers()))          # ~269 available
h.apply_modifier("head/head-oval", 0.4)

# assets (discover, then equip by path)
h.set_skeleton(mhcore.data_path("rigs/default.mhskel"))
h.equip_clothes(h.list_available("clothes")[0])
h.equip_hair(h.list_available("hair")[0])
h.equip_eyes(h.list_available("eyes")[0])
h.set_skin(h.list_available("skins")[0])

# save the native format and export meshes
h.save_mhm("out/hero.mhm")
h.export("out/hero.obj")                 # also .fbx, .dae

See examples/build_character.py for a runnable end-to-end script.

The MCP server is the makehuman-mcp console script (same package). An optional socket-bridge for a running MakeHuman GUI is in mcp-server/socket-bridge/.

API (mhcore.MHHuman)

Area Methods
Macros set_gender/set_age/set_weight/set_muscle/set_height(0.0–1.0)
Modifiers list_modifiers(), apply_modifier(name, power), get_applied_targets()
Assets list_available(kind), equip_clothes/equip_hair/equip_eyes/equip_eyebrows/equip_eyelashes/equip_teeth/equip_tongue(path), unequip_clothes/unequip_all_clothes/unequip_hair, set_skin(path)
Rig/pose set_skeleton(path), set_pose(bvh), set_expression(mhpose)
Persist save_mhm(path), load_mhm(path)
Export export(path, format=None)obj | fbx | dae

kind for list_available: clothes, hair, eyes, eyebrows, eyelashes, teeth, tongue, skins, poses, expressions.

Status / limitations

  • Blender-ready export by default. FBX/DAE bind a clean, skinned "deform" rig automatically (no separate set_skeleton call, no face-bone spikes), and all formats import at real human size (~1.7 m). Use rig="full" for the complete 163-bone rig, rig="none" for an unrigged mesh, or scale=/unit= to override (e.g. scale=0.01 for centimetre pipelines).
  • Full .mhm round-trip: modifiers, skeleton, proxies (clothes/hair/eyes/…), skin + per-proxy materials all save and reload faithfully.
  • Export: OBJ, FBX, DAE.
  • set_pose applies a .bvh (or .mhp) to the base skeleton and skins the mesh. set_expression blends a .mhpose onto the face bones. Both are written into the .mhm and re-applied on load.
  • Skin textures are referenced by path in exports; the library never loads pixel data (that path is the only Qt dependency and is intentionally avoided).

License

AGPL-3.0-or-later. This is a derivative of MakeHuman; see LICENSE and NOTICE.md for attribution and asset licensing.

Release files for makehuman-mcp 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for makehuman-mcp 0.1.3
File Size Uploaded
makehuman_mcp-0.1.3.tar.gz 387.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for makehuman-mcp 0.1.3
File Interpreter ABI Platform
makehuman_mcp-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 859.1 kB

Release files / makehuman_mcp-0.1.3.tar.gz

Download URL makehuman_mcp-0.1.3.tar.gz
Size 387.3 kB
Tags Source
SHA-256 checksum
How to use checksums
8a7086ca280b96b1932daf90fbf3d931880eb468b6a1c65bc38c571394dc8052
BLAKE2b-256 checksum
How to use checksums
b1725834a99b561fc0518686d1c34d031ca1deb5f28cf6d34d446c72b983c9dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Release files / makehuman_mcp-0.1.3-py3-none-any.whl

Download URL makehuman_mcp-0.1.3-py3-none-any.whl
Size 471.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
78d28ba67f962367fa456cb7f16ae5b83d422b28d63199666318911675ac17c9
BLAKE2b-256 checksum
How to use checksums
ac3fdc962d84737bff0df98fd3312ba86817342e49d83b49e071ef0b4012a908
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page