PicoBerry MCP Server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Generate **3D models, images, and animations** for game and 3D workflows from any
MCP client — Claude Code, Cursor, Claude Desktop, Cline — with no HTTP glue. A thin
wrapper over the PicoBerry /v1 API, so you get PicoBerry's
multi-engine pipeline directly inside your agent. Several 3D and image engines
sit behind one API; call list_models for the live set and each engine's cost.
Generated assets are drafts — useful for prototyping and iteration, and can be
reviewed or refined for your project.
📖 **Full reference:** API + MCP docs · PicoBerry API
> **There's no separate subscription for the MCP or the API.** Generation spends
> the same prepaid PicoBerry credits as the web app, per engine, at rates you can
> read with list_models before you spend anything. (Using the API does require
> a completed purchase — see Get an API key.)
Install
No install needed — run it with npx:
Cursor uses the same shape in ~/.cursor/mcp.json.
Get an API key
Sign in at , open the **API Keys**
tab in your dashboard, and hit **Create key**. The key is shown once — copy it
immediately and treat it like a password.
API access needs a completed purchase: a subscription **or a one-off credit
pack**. A purchase entitles you permanently — you don't need a *current*
subscription. (An active paid subscription works too, of course.)
Environment variables
| Var | Required | Default | Notes |
|-----|----------|---------|-------|
| PICOBERRY_API_KEY | ✅ | — | pb_live_... |
| PICOBERRY_API_BASE | — | https://api.picoberry.ai | leave unset unless you were given a different host |
Tools
| Tool | What it does |
|------|--------------|
| list_models | Engines + credit cost for a category (3d / image / parts-board / remesh / texture / animate). Call before generating — don't hardcode engines. |
| list_animation_presets | Animation preset ids (engine-specific), with optional substring filter. |
| get_credits | Current credit balance. |
| generate_image | Text → image (+ optional reference image URLs). |
| generate_3d_from_text | Text → 3D model (GLB). |
| generate_3d_from_image | Image → 3D model. Single: image_url or local image_path. Multi-view (2–4 views, higher fidelity): image_urls or image_paths, ordered [front, left, back, right] — tripo\*/meshy6/hunyuan-3.x only. |
| parts_board | Decompose one image into an exploded parts-board image (server-fixed engine). Input asset_id, image_url, or local image_path; feed the result to generate_3d_from_image for a parts-separated mesh. |
| remesh | Retopologize an existing 3D asset → new asset. |
| texture | Re-texture (PBR) an existing 3D asset → new asset. |
| animate | Auto-rig + animate an existing 3D character → new asset. |
| get_asset | Status + result URLs for one asset. |
| wait_for_asset | Poll until an asset finishes (or times out), then return it. |
| list_my_assets | Browse your generated assets. |
| download_asset | Export a completed 3D asset (glb / fbx / obj) → signed URL. |
How generation works
Generation is **asynchronous**:
1. generate_3d_from_text({ prompt }) → returns an asset { id }.
2. wait_for_asset({ asset_id: id }) → polls until taskStatus === 2 (succeeded).
3. Read the result URL from files.model (GLB) or files.image (PNG).