█

AI/TLDR

3D Asset Server

One search across 23 3D asset sites, with licences, downloads and an MCP server for AI agents

3D & CAD GenerationOpen source
Updated
14 Oct 2026
Language
TypeScript
License
Apache-2.0
Coverage
1 story
$git clone https://github.com/arielshad/3d-asset-server.git

What's new

14 Oct 2026

Covered on AI/TLDR: a self-hosted TypeScript server that searches 23 3D asset sites at once, downloads results with licence info, and exposes an MCP endpoint so AI agents can fetch assets directly.

Latest news

Overview

3D Asset Server (3d-asset-server) is a self-hosted TypeScript server that searches 23 sites for 3D models, materials, textures, HDRIs and game assets in one query and downloads what you pick, ready to drop into a game or a website. Sources include Poly Haven, ambientCG, BlenderKit, Kenney, Quaternius, Sketchfab, OpenGameArt, CGTrader and itch.io. The same engine is reachable four ways: a web UI, an HTTP API with an OpenAPI 3.1 description, a command-line tool, and a Model Context Protocol (MCP) server that lets an AI assistant such as Claude Code, Claude Desktop or Cursor search and fetch assets itself.

Architecture diagram: the web UI, curl, AI assistants over MCP and the CLI reach one Node.js process whose REST API and MCP server call an AssetService that fans out to API, scraped and link-only sources.
One process serves every client: the REST API and MCP server share an AssetService that searches each source through a caching HTTP client.3d-asset-server README ↗

Each site has its own adapter: some are queried through official or WordPress APIs, some by parsing their public pages, and a few that sit behind bot walls (Fab, Poliigon, TurboSquid) come back only as links to the same search on that site. A search picks the sources that carry the requested asset type, queries them in parallel with a timeout each, then ranks and merges the results and returns a status report for every site. A slow or broken site never fails the whole search; it appears in the report with its error and a link to the site's own search.

Results are licence-first: every asset states its licence, whether it is free, and whether the author must be credited. From sources that allow direct downloads, the server fetches glTF with its `.bin` and textures, PBR maps at a chosen resolution, HDRIs, or zipped packs that it extracts, and keeps companion files in their relative paths so a glTF loads straight away. Paid, login-gated and hotlink-protected content is never bypassed, only public http(s) hosts are fetched, and each download has a size guard. A public instance runs at 3d.shep.bot, and the project's code is licensed under Apache-2.0.

What it does

  • Searches 23 3D asset sites in parallel and returns merged, ranked results with a per-site status report (ok, error, timeout, skipped, link)
Flow of one search: pick the sources that fit the query, search them in parallel with a timeout each, rank and merge the results, and return a per-site status report.
What a single search does, from source selection to the merged results and the report for every site.3d-asset-server README ↗
  • Every result carries its licence, whether it is free and whether attribution is required; `download_asset` returns an attribution line when credit is needed
  • Direct downloads from free sources: glTF with companion files, PBR maps at a chosen resolution, HDR/EXR HDRIs and auto-extracted zip packs, preferring game- and web-friendly formats
  • MCP server over stdio or Streamable HTTP with four tools: `search_assets`, `get_asset`, `download_asset` and `list_providers`
  • REST API (`/v1/search`, `/v1/assets/{provider}:{id}`, `/v1/assets/{id}/download`) with an OpenAPI 3.1 spec, plus a web UI and a `search` / `serve` / `mcp` CLI
  • Self-hosting options including a published Docker image, an optional API key, per-client rate limiting and Prometheus metrics

Getting started

The server needs Node.js 20 or newer, or Docker. One process serves the web UI, the HTTP API and the MCP endpoint on port 8787; the commands below come from the project README.

Build from source

Clone the repository, install dependencies and build the server into `dist/`.

bashbash
git clone https://github.com/arielshad/3d-asset-server.git
cd 3d-asset-server
npm install
npm run build

Start the server

Serves the web UI, the HTTP API and MCP on http://localhost:8787. Alternatively, run the published Docker image without building.

bashbash
npm start

# or, with Docker
docker run -p 8787:8787 ghcr.io/arielshad/3d-asset-server

Search from the API or the CLI

The API returns ranked results plus a report per site; the download endpoint redirects to a single file or streams a zip with its companions.

bashbash
curl 'localhost:8787/v1/search?q=brick+wall&type=material&free=true&limit=5'
curl -OJ 'localhost:8787/v1/assets/polyhaven:WoodenChair_01/download?format=gltf&resolution=1k'

node dist/cli.js search "low poly tree" --type model --free

Add it to Claude Code over stdio

`ASSET_DOWNLOAD_DIR` sets where `download_asset` saves files (default `./assets`). Claude Desktop, Cursor and other stdio clients take the same command and args in their `mcpServers` config.

bashbash
claude mcp add 3d-assets -e ASSET_DOWNLOAD_DIR="$PWD/assets" -- node /path/to/3d-asset-server/dist/cli.js mcp
Sequence diagram: an AI assistant calls search_assets, then get_asset, then download_asset, and reports the licence and where the files were saved.
An assistant driving the MCP tools: search, inspect the files and licence, then download into the project.3d-asset-server README ↗

Or connect to the public MCP endpoint

The public server needs no setup or key. Over HTTP, `download_asset` is off by default because it would write to the server's disk; `get_asset` returns direct file URLs and a one-click `bundleUrl` zip instead. For your own server, point the client at `http://<host>:8787/mcp`.

bashbash
claude mcp add --transport http 3d-assets https://3d.shep.bot/mcp

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Let a coding assistant find a model, a material and an HDRI for a Three.js or game scene and save them into the project's assets folder
  • Check the licence and attribution terms of 3D assets across many libraries before downloading anything
  • Give a game or web pipeline one REST API for searching and downloading free CC0 assets instead of integrating each site separately
  • Self-host a shared asset search for a team, restricted to chosen sources with `ASSET_SERVER_PROVIDERS` and protected with an API key

How 3D Asset Server compares

3D Asset Server alongside other open-source 3d & cad generation tools AI/TLDR tracks, ranked by GitHub stars.

ToolStarsWhat it does
MCP for Blender★ 30.9kMCP server and Blender addon that let an LLM drive Blender directly — creating, modifying and inspecting 3D objects, materials and scenes from a chat prompt.
Pascal Editor★ 24.9kA local-first 3D building editor built on React Three Fiber and WebGPU, with a typed architectural node hierarchy and an authenticated MCP service so AI agents can inspect and edit the scene.
text-to-cad★ 20.6kA library of agent skills for CAD, CAE and CAM: plain-language to STEP models, DXF drawings, URDF/SRDF/SDF robot files, printability checks and sliced G-code.
img2threejs★ 18.2kAn agent skill that rebuilds the object in a single reference image as procedural, animation-ready Three.js code, gating each sculpting pass on a vision review against the reference.
CADAM★ 5.3kAn open-source text-to-CAD web app that has an LLM write OpenSCAD, then exposes the model's parameters as live sliders and exports STL, SCAD and DXF.
MAC (Multi-Agent CAD)★ 1kA multi-agent framework that turns natural-language design briefs into editable CAD parts and multi-part assemblies, exporting STEP, STL, GLB and URDF.
3D Asset Server★ 306One search across 23 3D asset sites, with licences, downloads and an MCP server for AI agents