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_skeletoncall, no face-bone spikes), and all formats import at real human size (~1.7 m). Userig="full"for the complete 163-bone rig,rig="none"for an unrigged mesh, orscale=/unit=to override (e.g.scale=0.01for centimetre pipelines). - Full
.mhmround-trip: modifiers, skeleton, proxies (clothes/hair/eyes/…), skin + per-proxy materials all save and reload faithfully. - Export: OBJ, FBX, DAE.
set_poseapplies a.bvh(or.mhp) to the base skeleton and skins the mesh.set_expressionblends a.mhposeonto the face bones. Both are written into the.mhmand 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.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| makehuman_mcp-0.1.2.tar.gz | 386.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| makehuman_mcp-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 857.9 kB
Release files / makehuman_mcp-0.1.2.tar.gz
| Download URL | makehuman_mcp-0.1.2.tar.gz |
|---|---|
| Size | 386.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5b9a4926d2891b8d97a545349fb2d8e1734ff91e2fc60fe8ce11d536eae9c557
|
|
BLAKE2b-256 checksum How to use checksums |
987e7d76dadde20e60840a83c89e9d85108015b0ddcb01baf649939b72f61d54
|
| 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 19, 2026.
Transparency logRelease files / makehuman_mcp-0.1.2-py3-none-any.whl
| Download URL | makehuman_mcp-0.1.2-py3-none-any.whl |
|---|---|
| Size | 471.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c25e572f6c2edbdaa6c511e507a3c47be86007a33f32cbfce5046de760d5a4fa
|
|
BLAKE2b-256 checksum How to use checksums |
10825e7590b636e4a2775cfd8759a0f2d5c2567dcfd2471577db8fa72a439947
|
| 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 19, 2026.
Transparency log