Assetmcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Assetmcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
ASSET_MANIFEST.json.CREDITS.md for attribution-required assets..zip, .tar, .tar.gz, .tar.bz2, .tar.xz, .tgz, and .7z archives.blender_* tools and production-quality model screenshotsThe project uses these main Python libraries:
mcphttpxbeautifulsoup4lxmlpillowtrimeshpygltflibpy7zrAll provider results are normalized to:
idtitlesource_namesource_urlauthorlicenselicense_urlattribution_requiredasset_typetagspreview_image_urldownload_urlfile_formatsconfidence_scorewarningsSee docs/PROVIDERS.md for provider-specific notes.
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.serverThis repository includes a convenience installer:
.\install.ps1It creates .venv, installs dependencies, and installs ASSETMCP in editable mode.
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.
ASSETMCP uses these environment variables:
| Variable | Default | Purpose |
|---|---|---|
ASSETMCP_LIBRARY_DIR | ./assets | Where downloads and extracted files are stored. |
ASSETMCP_PREVIEW_DIR | ./previews | Where generated contact sheets, galleries, and model viewers are stored. |
ASSETMCP_MAX_DOWNLOAD_MB | 512 | Maximum size for a single download. |
ASSETMCP_BLENDER_PATH | auto-detected | Absolute path to blender.exe or blender for Blender-backed tools. |
ASSETMCP_TRANSPORT | stdio | MCP transport: stdio, sse, or streamable-http. |
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 from iso, front, back, left, right, or top.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.
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.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.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 refresh ASSET_MANIFEST.json.generate_credits: Generate CREDITS.md.audit_project_assets: Check manifest, credits, suspicious files, and blocked licenses.find_replacement_assets: Find safe CC0/public-domain replacements for blocked assets.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 .glb or .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.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.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.
api/v3/assets endpoint and are generally CC0.ASSETMCP treats downloaded files and archives as untrusted.
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 -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 previewsThis project is released under the MIT License. See LICENSE.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.