3D Valley MCP
An official MCP server operated by 3D Valley that enables AI agents to search and download over 10,000 CC0 3D models, PBR textures, and HDRIs. It supports generating 3D models from images or text, retexturing and remeshing existing assets, and creating seamless PBR textures, all authenticated via OAuth with a free account.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://3dvalley.com/mcpWhat its tools do
8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (4)
Can change data (4)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to 3dvalley.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search and download CC0 3D assets by meaning and size
- Generate textured 3D models from images or text descriptions
- Retexture or remesh existing 3D models
- Generate seamless PBR texture sets from descriptions
Source and maintenance
Protocol and capabilities
- Server
- 3dvalley 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 8 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
8 advertised
search_assets — Search free CC0 3D assets
Search the free CC0 library of 3D models, PBR textures and HDRIs by meaning and filters. Every model is a GLB measured in metres, +Y up, origin at the base. Check size_m before placing an asset; use min_size_m >= 2 for floors and walls. previews (max 6) attaches thumbnails, which is cheaper than downloading the wrong asset. Each result has match (strong, good or weak); when none is better than weak the answer says so, and generate_model is the way to get the object. Read-only, free with a free account.
{
"type": "object",
"required": [],
"properties": {
"q": {
"type": "string",
"description": "What you need, in words: \"wooden barrel\", \"mossy rock\", \"sci-fi crate\"."
},
"maps": {
"type": "array",
"items": {
"enum": [
"base_color",
"normal",
"roughness",
"metallic",
"ao",
"height",
"displacement"
],
"type": "string"
},
"description": "Must have all of these maps."
},
"pack": {
"type": "string",
"description": "A pack id from a result (\"kn:mini-skate\"): only assets from that kit, to keep a game in one style."
},
"sort": {
"enum": [
"relevance",
"popular",
"newest"
],
"type": "string"
},
"type": {
"enum": [
"model",
"texture",
"hdri"
],
"type": "string"
},
"limit": {
"type": "integer",
"default": 8,
"maximum": 20,
"minimum": 1
},
"style": {
"enum": [
"realistic",
"stylized",
"lowpoly",
"scan"
],
"type": "string"
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page."
},
"format": {
"enum": [
"glb",
"zip",
"hdr",
"exr",
"png",
"jpg"
],
"type": "string",
"description": "A file format we serve it in."
},
"rigged": {
"type": "boolean"
},
"source": {
"enum": [
"polyhaven",
"ambientcg",
"kenney",
"kaykit",
"quaternius",
"gobkit",
"smithsonian",
"met",
"khronos",
"openhdri",
"cgbookcase",
"texturecan"
],
"type": "string"
},
"min_res": {
"type": "string",
"description": "Smallest texture resolution: 1k, 2k, 4k."
},
"animated": {
"type": "boolean"
},
"category": {
"type": "string",
"description": "A category slug; see the categories in the results."
},
"max_tris": {
"type": "integer",
"minimum": 0,
"description": "At most this many triangles (models)."
},
"min_tris": {
"type": "integer",
"minimum": 0,
"description": "At least this many triangles (models)."
},
"previews": {
"type": "integer",
"default": 0,
"maximum": 6,
"minimum": 0,
"description": "Attach this many thumbnails as images, so you can look before downloading."
},
"max_size_m": {
"type": "number",
"minimum": 0,
"description": "The largest side at most this many metres."
},
"min_size_m": {
"type": "number",
"minimum": 0,
"description": "The largest side at least this many metres. Use 2 or more for floors and walls."
},
"similar_to": {
"type": "string",
"description": "An asset id: the nearest to it by meaning."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"total": {
"type": "number"
},
"results": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
"next_cursor": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}get_asset — Get one CC0 asset
Full details for one library asset: download URLs per format and resolution, size in metres, up axis and origin, texture maps, a credit line (credit, credit_html), related assets, and import notes for Godot, Unity, three.js and Blender. When you write credits or a README for a project using the asset, include its credit line. Read-only, free.
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "An asset id from search_assets, e.g. \"ph:wooden_barrel_01\"."
}
},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}generate_model — Generate a 3D model
Make one 3D object (never a scene) as a textured GLB, from a picture (image) or a description (prompt). Costs credits, which the user bought: image models trellis-2 5, trellis-2-pro 15, hunyuan-3d-3-1-pro 90, tripo-3-1 50, tripo-3-1-detailed 100; from a prompt add the picture model (flux-2-klein 1). Pass max_credits to refuse anything dearer. For a game or the web pass max_faces (5000-20000; the default is 200,000 triangles), and from a prompt style lowpoly to match low-poly kits. The GLB stands on its base at the origin, like library models. Waits about 45 s, then returns job_id for get_job if it is not done. Calling again with the same arguments resumes the same job and never charges twice; pass a new idempotency_key to make another one.
{
"type": "object",
"required": [],
"properties": {
"seed": {
"type": "integer",
"minimum": 0
},
"image": {
"type": "string",
"description": "A picture of one object: an https URL, a data: URI, an upload id from upload_file, or a job id."
},
"model": {
"type": "string",
"description": "Default trellis-2. See account for every model and its price."
},
"style": {
"enum": [
"realistic",
"lowpoly",
"stylized"
],
"type": "string",
"description": "From a prompt: lowpoly draws a flat-shaded, flat-colour game asset to match low-poly kits; stylized a hand-painted look."
},
"prompt": {
"type": "string",
"description": "A description of one object: \"a weathered wooden barrel with iron bands\"."
},
"max_faces": {
"type": "integer",
"maximum": 1000000,
"minimum": 5000,
"description": "Most triangles in the model, at no extra cost: 5,000-20,000 for game or web use (the default is 200,000)."
},
"image_model": {
"type": "string",
"description": "The picture model for a prompt: flux-2-klein (default), muse-image, gpt-image-2-5."
},
"max_credits": {
"type": "integer",
"minimum": 0,
"description": "Refuse the job if it would cost more."
},
"wait_seconds": {
"type": "integer",
"default": 45,
"maximum": 50,
"minimum": 0
},
"idempotency_key": {
"type": "string",
"description": "Only to make a second, different job from identical arguments."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"error": {
"type": [
"object",
"null"
]
},
"output": {
"type": [
"object",
"null"
]
},
"status": {
"type": "string"
},
"credits": {
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": true
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}edit_model — Edit a 3D model
Change a model you have: retexture (new PBR textures from a picture or words; trellis-2-texture 5, trellis-2-texture-pro 10, tripo-texture 20, tripo-texture-detailed 40 credits) or remesh (new, clean topology at a face count; tripo-remesh 50 credits). The mesh is an https URL, an upload id from upload_file, a library id (ph:wooden_barrel_01) or a job id, so steps chain without downloading. Waits about 45 s, then returns job_id for get_job. To reduce, compress, convert or repair a file, use gltf-transform or Blender locally.
{
"type": "object",
"required": [
"operation",
"mesh"
],
"properties": {
"mesh": {
"type": "string",
"description": "The model: URL, upl_..., library id, or job_..."
},
"image": {
"type": "string",
"description": "retexture: the look as a picture."
},
"model": {
"type": "string",
"description": "retexture or remesh: the model to use."
},
"prompt": {
"type": "string",
"description": "retexture: the look in words, when there is no picture."
},
"options": {
"type": "object",
"description": "remesh: faces (500 to 20,000; 10,000 as quads), topology (quads|triangles).",
"additionalProperties": true
},
"operation": {
"enum": [
"retexture",
"remesh"
],
"type": "string"
},
"max_credits": {
"type": "integer",
"minimum": 0
},
"wait_seconds": {
"type": "integer",
"default": 45,
"maximum": 50,
"minimum": 0
},
"idempotency_key": {
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"error": {
"type": [
"object",
"null"
]
},
"output": {
"type": [
"object",
"null"
]
},
"status": {
"type": "string"
},
"credits": {
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": true
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}generate_texture — Generate a PBR texture
A seamless PBR texture set (base colour, normal, height, roughness, metallic at 2048 px) from a description, for flux-2-klein-material 2, muse-image-material 5, gpt-image-2-5-material 8 credits.
{
"type": "object",
"required": [
"prompt"
],
"properties": {
"seed": {
"type": "integer",
"minimum": 0
},
"model": {
"type": "string",
"description": "Default flux-2-klein-material."
},
"prompt": {
"type": "string",
"description": "The surface: \"mossy cobblestones\", \"brushed steel\"."
},
"max_credits": {
"type": "integer",
"minimum": 0
},
"wait_seconds": {
"type": "integer",
"default": 45,
"maximum": 50,
"minimum": 0
},
"idempotency_key": {
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"error": {
"type": [
"object",
"null"
]
},
"output": {
"type": [
"object",
"null"
]
},
"status": {
"type": "string"
},
"credits": {
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": true
}{
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_job — Wait for a job
Waits up to about 45 s for a job to finish, or reads where it stands. Safe to call again and again; never charges. When done: download URLs for every file, a preview picture, the model's size in metres and triangle count, and an asset id usable as input to the next step.
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string"
},
"wait_seconds": {
"type": "integer",
"default": 45,
"maximum": 50,
"minimum": 0
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"error": {
"type": [
"object",
"null"
]
},
"output": {
"type": [
"object",
"null"
]
},
"status": {
"type": "string"
},
"credits": {
"type": "object",
"additionalProperties": true
}
},
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}upload_file — Upload a local file
The server cannot read the user's disk. This returns an upload id and the exact curl command that sends a local file (a mesh or picture) to it; run that command, then pass the id as the image or mesh of another tool. Uploads last 24 hours.
{
"type": "object",
"required": [
"filename",
"bytes"
],
"properties": {
"bytes": {
"type": "integer",
"minimum": 1,
"description": "The file's size in bytes (ls -l or stat)."
},
"filename": {
"type": "string",
"description": "The file's name with its extension, e.g. \"chest.glb\"."
},
"content_type": {
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": true
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}account — Credits and prices
The credit balance, the price of every tool and model in credits (1 credit = $0.01), the rate limits and this key's daily spending cap. Check before spending.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": true
}{
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 390 ms
- 95th percentile latency
- 390 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 390 ms · metadata changed · 8 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http 3d-valley-mcp https://3dvalley.com/mcpCodex
codex mcp add 3d-valley-mcp --url https://3dvalley.com/mcpCursor
{
"mcpServers": {
"3d-valley-mcp": {
"url": "https://3dvalley.com/mcp"
}
}
}Cline
{
"mcpServers": {
"3d-valley-mcp": {
"type": "streamableHttp",
"url": "https://3dvalley.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"3d-valley-mcp": {
"type": "http",
"url": "https://3dvalley.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http 3d-valley-mcp https://3dvalley.com/mcpClaude Desktop
https://3dvalley.com/mcpWindsurf
{
"mcpServers": {
"3d-valley-mcp": {
"serverUrl": "https://3dvalley.com/mcp"
}
}
}Let your agent find its tools
Find servers like 3D Valley MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other design servers
Do you run 3D Valley MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.