ASSETMCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ASSETMCPsearch for 'fantasy sword' assets on OpenGameArt"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ASSETMCP
ASSETMCP is a Python Model Context Protocol server for safe game asset search, download, import, organization, and playable prototype scaffolding.
It is designed for coding agents that need a practical "Game Asset Forge" workflow: search multiple public sources, check license safety, download files into a managed local library, unpack asset packs safely, inspect images and 3D models, generate previews, track credits, and scaffold playable prototypes.
Features
Search Kenney, OpenGameArt, Quaternius, Poly Haven, ambientCG, Openverse, itch.io, Godot Asset Library, GitHub repositories, and local asset folders.
Search several sources at once with normalized result records and non-fatal provider errors.
Check licenses before download or import.
Track downloaded/imported assets in
ASSET_MANIFEST.json.Generate
CREDITS.mdfor attribution-required assets.Download safe individual URLs or source-specific asset packs.
Extract
.zip,.tar,.tar.gz,.tar.bz2,.tar.xz,.tgz, and.7zarchives.Inspect images for dimensions, transparency, dominant colors, content bounds, edge density, and rough shape.
Inspect 3D assets for geometry counts, bounds, extents, GLTF metadata, animation/material counts, and rough shape.
Use Blender, when installed, for deeper model hierarchy/bone/material inspection, real PNG renders, and simple generated idle GLB exports.
Generate PNG contact sheets for image folders.
Generate local HTML galleries for images and GLB/GLTF models.
Create local browser viewers for GLB/GLTF files.
Build JSON indexes of local asset folders.
Search downloaded files by name, kind, and optional image dimensions.
Slice sprite sheets and tilesets into individual PNG frames.
Scaffold playable HTML Canvas, Phaser, Three.js, and Godot 4 prototypes.
Audit projects for blocked licenses, missing files, missing credits, and suspicious executables.
Related MCP server: easy-code-reader
Requirements
Python 3.11 or newer
Git, if you want to clone or contribute
An MCP client that supports stdio servers
Optional: Blender 4.x/5.x for the
blender_*tools and production-quality model screenshots
The project uses these main Python libraries:
mcphttpxbeautifulsoup4lxmlpillowtrimeshpygltflibpy7zr
Provider Result Format
All provider results are normalized to:
idtitlesource_namesource_urlauthorlicenselicense_urlattribution_requiredasset_typetagspreview_image_urldownload_urlfile_formatsconfidence_scorewarnings
See docs/PROVIDERS.md for provider-specific notes.
Quick Start
Clone the repository:
git clone https://github.com/evonar543/ASSETMCP.git
cd ASSETMCPCreate and install the local environment:
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m pip install -e .Run the MCP server over stdio:
.\run_assetmcp.ps1Or run it directly:
.\.venv\Scripts\python.exe -m assetmcp.serverWindows Installer Script
This repository includes a convenience installer:
.\install.ps1It creates .venv, installs dependencies, and installs ASSETMCP in editable mode.
MCP Client Configuration
Use this shape in your MCP client config. Update the paths if you cloned the project somewhere else.
{
"mcpServers": {
"ASSETMCP": {
"command": "C:\\path\\to\\ASSETMCP\\.venv\\Scripts\\python.exe",
"args": ["-m", "assetmcp.server"],
"env": {
"ASSETMCP_LIBRARY_DIR": "C:\\path\\to\\ASSETMCP\\assets",
"ASSETMCP_PREVIEW_DIR": "C:\\path\\to\\ASSETMCP\\previews",
"ASSETMCP_MAX_DOWNLOAD_MB": "512",
"ASSETMCP_BLENDER_PATH": "C:\\Program Files\\Blender Foundation\\Blender 5.1\\blender.exe"
}
}
}
}A ready-to-edit example is included at assetmcp.mcp.example.json.
Configuration
ASSETMCP uses these environment variables:
Variable | Default | Purpose |
|
| Where downloads and extracted files are stored. |
|
| Where generated contact sheets, galleries, and model viewers are stored. |
|
| Maximum size for a single download. |
| auto-detected | Absolute path to |
|
| MCP transport: |
Optional Blender Setup
ASSETMCP works without Blender, but Blender unlocks higher-fidelity model reading and real screenshots:
$env:ASSETMCP_BLENDER_PATH = "C:\Program Files\Blender Foundation\Blender 5.1\blender.exe"
.\.venv\Scripts\python.exe -m assetmcp.serverThe Blender-backed tools run Blender in background mode with generated scripts that only import local model files and write outputs inside the configured preview directory:
blender_info: Check whether Blender is available.blender_inspect_model: Read scene objects, mesh stats, dimensions, hierarchy, materials, armatures, bones, animation clips, and semantic name hints such as head/torso/arm/leg.blender_render_model: Render a real PNG screenshot fromiso,front,back,left,right, ortop.blender_create_idle_animation: Export a GLB with a part-aware generated idle/walk loop for quick prototyping. It uses named body-part meshes such as arms, legs, torso, and head when they exist.
These tools are separate from live Blender MCP bridges. A live bridge can control an open Blender GUI and may execute arbitrary Blender Python, so only enable that bridge in clients and projects you trust.
Tool Reference
Discovery
search_assets: Search normalized providers with license-safety metadata.search_asset_sources: Search several supported sources at once.search_opengameart: Search OpenGameArt asset pages.search_kenney_assets: Search Kenney CC0 asset packs.search_ambientcg_assets: Search ambientCG materials, atlases, HDRIs, images, and 3D models.search_openverse_images: Search Openverse image results.search_itch_assets: Search itch.io game asset pages.get_asset_details: Normalize an asset and return license decision plus discoverable downloads.suggest_asset_plan: Suggest asset searches and folders for a game idea.discover_page_assets: Scrape an arbitrary web page for image, model, audio, archive, and file links.
Downloading
download_asset: Download one URL into the asset library after license validation.download_page_assets: Discover a page and attempt downloads; unclear licenses are blocked.download_kenney_asset: Download the primary archive from a Kenney asset page.download_ambientcg_asset: Download an ambientCG archive by asset id and preferred format.import_asset_to_project: Copy a local asset into a game project and track it in manifest/credits.
Local Library
library_info: Show storage paths, limits, and supported formats.list_library: List downloaded files by kind.find_local_assets: Search downloaded files by path, filename, kind, and optional image size.index_library: Write a JSON index of downloaded files and optional metadata/hashes.create_asset_manifest: Create or refreshASSET_MANIFEST.json.generate_credits: GenerateCREDITS.md.audit_project_assets: Check manifest, credits, suspicious files, and blocked licenses.find_replacement_assets: Find safe CC0/public-domain replacements for blocked assets.
Inspection and Preview
inspect_asset: Inspect images, 3D models, archives, or generic files.make_image_contact_sheet: Build a PNG contact sheet for image browsing.create_asset_gallery: Build a local HTML gallery for images and GLB/GLTF models.create_3d_viewer: Build a local browser viewer for.glbor.gltf.blender_info: Check Blender availability for advanced model jobs.blender_inspect_model: Inspect model hierarchy, shapes, materials, bones, and animations using Blender.blender_render_model: Render a real PNG screenshot of a model using Blender.blender_create_idle_animation: Export a part-aware generated idle/walk animation as GLB.slice_sprite_sheet: Slice a sprite sheet or tileset into PNG frames.extract_archive: Extract supported archives safely inside the asset library.convert_assets: Convert image assets to PNG, WebP, JPG, or JPEG.
Game Generation
create_game_project: Create a playable prototype for HTML Canvas, Phaser, Three.js, or Godot 4.generate_game_from_assets: Scaffold a project and import selected local assets.
Example Agent Workflows
Search several sources:
Use search_assets with query "low poly trees" and sources ["kenney", "ambientcg", "polyhaven", "quaternius"].Download and extract a Kenney pack:
Use search_kenney_assets for "platformer", then pass the selected result URL to download_kenney_asset with auto_extract true.Inspect downloaded sprites:
Use find_local_assets for kind image, then inspect_asset on likely sprite files, then make_image_contact_sheet for the folder.Slice a sprite sheet:
Use slice_sprite_sheet with frame_width 16 and frame_height 16 on the selected PNG.Create a playable prototype:
Use create_game_project with engine "phaser", title "Dungeon Lantern", and project_path "./prototypes/dungeon-lantern".Audit licenses:
Use audit_project_assets on "./prototypes/dungeon-lantern", then use find_replacement_assets for any blocked assets.More prompts are in docs/EXAMPLE_PROMPTS.md.
Source Notes
Kenney asset pages mark game assets as CC0.
ambientCG results come from the public
api/v3/assetsendpoint and are generally CC0.Poly Haven results come from the public API and are generally CC0.
Quaternius assets are treated as CC0 where public page metadata supports it; use discovery/details for exact downloads.
Godot Asset Library results may be code plugins. Audit before enabling them.
GitHub repository licenses may not cover every contained asset file. Audit after download.
Openverse returns license metadata from its upstream providers.
itch.io search results link to asset pages. Check each page's license and download flow before using the files.
OpenGameArt assets have per-page license metadata; check the result page for exact terms.
Safety Model
ASSETMCP treats downloaded files and archives as untrusted.
Downloads are streamed with a size limit.
Archive extraction validates every member path before writing.
Archive extraction blocks suspicious executables and scripts by default.
Downloads and extracted files are kept inside the configured asset library.
Preview files are kept inside the configured preview directory.
Existing files are not overwritten; ASSETMCP creates numbered filenames when needed.
Direct URL downloads without license metadata are blocked by default.
ASSETMCP never bypasses logins, paywalls, DRM, or marketplace restrictions.
Development
Install in editable mode:
.\install.ps1Run a syntax check:
.\.venv\Scripts\python.exe -m compileall srcRun tests:
.\.venv\Scripts\python.exe -m unittest discover -s testsVerify that the MCP server starts and lists tools:
@'
import asyncio
from assetmcp.server import mcp
async def main():
tools = await mcp.list_tools()
print(len(tools))
print([tool.name for tool in tools])
asyncio.run(main())
'@ | .\.venv\Scripts\python.exe -Repository Layout
src/assetmcp/server.py MCP server and tool implementations
src/assetmcp/providers/ provider integrations and search registry
src/assetmcp/services/ license, manifest, scanner, and scaffolding services
src/assetmcp/schemas.py normalized asset schemas
src/assetmcp/__init__.py package version
tests/ unit tests
requirements.txt runtime dependencies
pyproject.toml package metadata and console script
install.ps1 Windows setup helper
run_assetmcp.ps1 Windows stdio launcher
assets/ ignored local asset library
previews/ ignored generated previewsLicense
This project is released under the MIT License. See LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/evonar543/ASSETMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server