3DAssets.dev

Поиск и загрузка бесплатных CC0 GLB 3D-моделей и игровых ассет-паков, а также отправка новых от имени пользователя. Удалённый сервер по адресу https://3dassets.dev/mcp.

Документация

MCP server

Streamable-HTTP MCP endpoint at /mcp. No account, no key, no sign-up: connect and start searching.

Connect

One command per client, and that is the whole setup. There is nothing to sign up for: searching the catalogue, reading assets and fetching files are open to everyone, on the same rate limits an account gets. A key comes later, and only if the user wants to publish their own models.

claude mcp add --transport http 3dassets https://3dassets.dev/mcp
codex mcp add 3dassets --url https://3dassets.dev/mcp
code --add-mcp '{"name":"3dassets","type":"http","url":"https://3dassets.dev/mcp"}'
{
  "mcpServers": {
    "3dassets": { "url": "https://3dassets.dev/mcp" }
  }
}
npx -y 3dassets-mcp

Claude Desktop or any stdio mcp.json

{
  "mcpServers": {
    "3dassets": { "command": "npx", "args": ["-y", "3dassets-mcp"] }
  }
}

The npm package 3dassets-mcp is a thin stdio bridge to the same hosted server, for clients that only launch commands or want a pinned dependency. The server is also listed on the official MCP Registry as dev.3dassets/catalogue.

In ChatGPT itself, remote MCP tools arrive through plugins rather than a URL you paste; use the prompt route there. Any other client that reads a link and calls an API can use skill.md without MCP at all.

Tools

ToolAuthDoes
search_assetsnoneSearch by text, category, theme, style and tags
search_packs · get_packnoneFind cohesive game kits and fetch complete file manifests, budgets and starter scenes
list_demos · get_demononeWalkable demo scenes built from one pack each: the spawn, the bounds and every placement with its CDN URL, so an agent can rebuild the layout
get_assetnoneFull details incl. CDN URL, licence + attribution text, stats, snippets
get_asset_usagenoneLoader code or import steps for three.js, R3F, model-viewer, Blender, Godot and Unity
list_categories · list_tags · list_licensesnoneSlugs the other tools accept
list_ai_modelsnoneModel name suggestions for AI provenance, refreshed hourly; custom names are accepted
create_accountnoneCreate a contributor account; emails the user a 6-digit code
verify_accountnoneExchange the code for the user’s API key (shown once)
submit_asset_from_urlkeySubmit a.glb from a public https URL
get_upload_url → finalize_uploadkeyDirect byte upload for clients that can PUT files
my_assets · update_assetkeyTrack and edit the user’s submissions
submit_pack · my_packskeyGroup the user’s uploads into a pack proposal and track it

Resource template asset://{slug} returns the Markdown rendition of an asset.

Publishing models: adding a key

Only the tools marked key above need one, and only because a submission has to belong to somebody. Everything else keeps working exactly as it did. The key is created inside the conversation: create_account emails the user a 6-digit code, they read it back, verify_account returns the key. There are no passwords on this site. An existing key is at your account.

Give the key to the client as a Bearer token and reconnect:

claude mcp add --transport http 3dassets https://3dassets.dev/mcp --header "Authorization: Bearer <apiKey>"
THREEJSASSETS_API_KEY=<apiKey> codex mcp add 3dassets --url https://3dassets.dev/mcp --bearer-token-env-var THREEJSASSETS_API_KEY
{
  "mcpServers": {
    "3dassets": {
      "url": "https://3dassets.dev/mcp",
      "headers": { "Authorization": "Bearer <apiKey>" }
    }
  }
}

For the 3dassets-mcp stdio bridge, set THREEJSASSETS_API_KEY in its environment instead. The key stands for the user’s whole account: keep it out of chat, logs and source files, and rotating it disconnects every client using the previous one.

CC0 submissions

Uploads default to CC0 1.0 Universal. Omit license, or send cc0-1.0; other licences are rejected. Before setting attestation: true, the user must confirm their publishing rights and accept irrevocable CC0 dedication, allowing personal and commercial use without attribution. One confirmation can cover an identified batch. Do not ask the user to select a licence or tags.

list_licenses returns CC0 only. Licence and attribution fields remain in responses for compatibility and historical records.

Behaviour agents can rely on

  • Every result carries the licence. If attributionRequired is true, the exact attribution string is included. Put it in the user’s credits.
  • All files load with a plain GLTFLoader; there is never a need to configure Draco or KTX2.
  • Submissions are reviewed by a person, and so is any edit to an asset that is already published. Tell the user the outcome arrives by email and can be tracked with my_assets.
  • Rejections and failures come with a human-readable reason. Relay it verbatim.

Rate limits

Tool calls are counted the same way as REST calls, against your API key when the server is configured with one and against your IP address otherwise, with the same allowance either way: a key authenticates submissions, it does not raise the ceiling. Read tools share one bucket; submit_asset_from_url, get_upload_url, finalize_upload, update_asset and submit_pack count as submissions; create_account and verify_account count as account calls.

WhatLimit
Search & read GET /api/v1/*, /assets/{slug}.md, MCP read tools10,000/min
Downloads /download/{slug}2,500/min
Submissions & edits POST /api/v1/assets, /assets/from-url, /uploads/presign, /packs/submissions, /reports, MCP write tools60/min
Accounts POST /api/v1/accounts/verify, /accounts/session, key rotation10/hour · 30/day
Account emails POST /api/v1/accounts, /accounts/login-code, /accounts/resend6/hour · 20/day

Over the limit the call comes back as a JSON-RPC error (-32029) over HTTP 429 with a Retry-After header, and the message says how long to wait. Relay that to the user and pause: do not retry in a loop, and never split one job across several keys. Pulling a whole pack for a scene is expected and fits well inside the limits; re-fetching the catalogue is not.

AI model attribution

Set aiGenerated: true if AI helped create geometry, generating code or textures, and optionally include aiModel (up to 160 characters). Use GET /api/v1/ai-models?q=... or MCP list_ai_models for OpenRouter suggestions refreshed hourly. Custom model and 3D-tool names are accepted. Leave unknown models unspecified; never guess. Using an agent only to upload does not count as AI creation.

The asset info panel, JSON and Markdown show this as contributor-reported attribution. A model catalogue outage does not block uploading. Switching AI use off clears the model name.