Game Asset Finder MCP
Allows indexing and searching of local game asset files with metadata from sidecar files, supporting incremental updates and SHA-256 hashing.
Enables searching for images, textures, and icon references under Creative Commons or public domain licenses.
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., "@Game Asset Finder MCPfind CC0 pixel art sprites for a dungeon crawler game"
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.
Game Asset Finder MCP
A "search-first" MCP service for game development. It queries multiple public asset sources and an optional local asset library simultaneously, unifies results from different sites into a common set of fields, and performs Chinese keyword expansion, license normalization, relevance sorting, cross-source deduplication, source diversification, caching, and cursor-based pagination.
The project is built on the current MCP TypeScript SDK v2, runs over stdio, and is suitable for Codex, ChatGPT Desktop, and other clients that support local MCP.
Design and Optimizations
The project uses a provider registry and a unified result model, with a focus on optimizing the cross-source search layer:
A single source failure does not bring down the entire search; the response explicitly marks the status of each source.
Keyword weighting and Chinese/English game term expansion improve recall for Chinese queries.
TTL/LRU caching, deduplication of identical concurrent requests, per-provider timeouts, limited retries, and
Retry-Aftersupport are implemented.Unified license filtering, canonical URL deduplication, merging of mirror sources, stable sorting, and source diversification are included.
Pagination uses
limit + nextCursorto avoid dumping a large number of results into the model context.Local indexing uses incremental scanning, SHA-256, atomic writes, root directory constraints, and symlink skipping.
The tool surface is compressed to 4 tools, reducing the chance of the agent picking the wrong tool.
Related MCP server: @codesift/mcp
Data Sources
id | Content | Credentials | License Characteristics |
| 2D, 3D, UI, audio, font asset packs | None | CC0 |
| 2D, 3D, music, sound effects | None | Varies per item |
| Free game asset listings | None | Varies per author/page |
| Images, textures, icon references | None | CC / Public Domain |
| PBR materials, HDRI, 3D | None | CC0 |
| Textures, HDRI, 3D | None | CC0 |
| Sound effects, recordings |
| Varies per item |
| Local assets in config directory | Local directory | Described by sidecar |
Any remote source may be temporarily unavailable or rate-limited. The sourceStatuses in the return value gives ok / partial / disabled / timeout / rate_limited / error for each source; other successful sources still return results.
Installation
Requires Node.js 20.18.1 or higher.
git clone https://github.com/sudoriaa/game-asset-finder-mcp.git
cd game-asset-finder-mcp
npm ci
npm run build
npm testAlternatively, you can run:
.\install.ps1Start directly:
node .\dist\index.jsstdio's standard output is the MCP JSON-RPC channel; service logs go only to standard error.
Integration with Codex
Add to ~/.codex/config.toml or a trusted project's .codex/config.toml:
[mcp_servers.game_assets]
command = "node"
args = ["C:\\path\\to\\game-asset-finder-mcp\\dist\\index.js"]
cwd = "C:\\path\\to\\game-asset-finder-mcp"
startup_timeout_sec = 30
tool_timeout_sec = 90
enabled = true
[mcp_servers.game_assets.env]
GAME_ASSET_LOCAL_ROOTS = "D:\\GameAssets;E:\\SharedAssets"
GAME_ASSET_CACHE_TTL_SECONDS = "600"If Freesound is enabled, it is recommended to forward the key from the local environment rather than writing the value into the configuration:
[mcp_servers.game_assets]
env_vars = ["FREESOUND_API_KEY"]You can also add a stdio server using the Codex CLI:
codex mcp add game-assets -- node "C:\path\to\game-asset-finder-mcp\dist\index.js"
codex mcp listAfter saving the configuration, restart the client and check the connection status with /mcp. The mcp-config.example.toml in the repository can be copied and modified directly.
MCP Tools
search_game_assets
Cross-source search. Main parameters:
{
"query": "像素风地牢角色",
"types": ["sprite", "tileset"],
"sources": ["kenney", "opengameart", "itch"],
"formats": ["png"],
"tags": ["retro"],
"license_policy": "commercial",
"include_unknown_license": false,
"limit": 12,
"refresh": false
}license_policy can be:
any: Show all results, explicitly marking unknown licenses.commercial: Keep only known commercially usable licenses; useinclude_unknown_licenseto bring back unknown items.cc0: Keep only CC0 / Public Domain Mark.no-attribution: Keep only items that are known to be commercially usable and do not require attribution.
To get the next page, put the returned nextCursor into cursor unchanged, keeping other query parameters the same. Using an old cursor after modifying query conditions will return CURSOR_QUERY_MISMATCH.
hasMore indicates whether there is a next page in the current cached candidate snapshot, not that all historical results from the remote site have been fetched; for deeper results, prioritize narrowing the keyword, type, or source range and re-search.
get_game_asset
Read the full record of an asset just searched:
{ "asset_id": "kenney:roguelike-characters" }Returns source, author, license, preview, file variants, mirror sources, match reason, and attribution text that can be directly added to credits. Remote entries are first searched, then read; local entries can also be read directly from the index.
list_asset_sources
List all providers, enabled status, supported asset types, credential requirements, cache configuration, and local index status.
index_local_assets
Scan GAME_ASSET_LOCAL_ROOTS:
{ "mode": "incremental", "max_files": 20000 }incremental reuses SHA-256 for files whose size and modification time have not changed; rebuild recomputes everything. The index is written to GAME_ASSET_DATA_DIR/local-assets.json and does not modify asset files.
Local Asset Sidecar
Place hero.png.asset.json or hero.asset.json next to hero.png:
{
"title": "Azure Knight",
"description": "32x32 pixel hero with idle and run frames",
"type": "sprite",
"tags": ["player", "knight", "pixel-art"],
"author": "Studio Name",
"author_url": "https://example.com",
"license": "CC-BY-4.0",
"license_url": "https://creativecommons.org/licenses/by/4.0/",
"source_url": "https://example.com/azure-knight"
}Local files without a sidecar can still be searched, but the license will be shown as unknown.
Environment Variables
Variable | Default | Description |
| Empty | Local asset root directories; Windows uses |
|
| Local index directory |
|
| Query cache TTL in seconds |
|
| Maximum number of query cache entries |
|
| Per-provider timeout |
|
| Maximum single remote response size |
|
| Retry count for 429/temporary errors |
|
| Default file limit for local index |
| Empty | Comma-separated provider IDs |
| Empty | Optional Freesound API key |
Development and Verification
npm run check
npm test
npm run test:unit
npm run test:mcpTests cover Chinese query expansion, type recognition, license policy, URL normalization, deduplication, cache-bust merging, partial provider failure, pagination and cursors, local incremental indexing, and tools/list / tools/call with a real stdio MCP client.
Usage Tips for Results
MCP returns asset discovery and license metadata, not a substitute for the final terms on the source page. Unknown licenses are explicitly kept as id: null; before publishing, you can narrow down with commercial, cc0, or no-attribution, and save source and attribution information from get_game_asset.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceA local MCP server for Nexus Mods mod discovery and research, backed by the v2 GraphQL API, enabling search of games, mods, collections, and users.1,8581ISC
- Alicense-qualityBmaintenanceMCP server for local-first lexical code search, providing tools for searching code, finding symbols, and reading chunks from indexed repositories.MIT
- Alicense-qualityCmaintenanceAn MCP server that aggregates web search results from multiple engines and optionally renders pages to Markdown, providing a unified search interface.103ISC
- Alicense-qualityBmaintenanceA Python MCP server for searching, downloading, extracting, inspecting, and previewing game assets from multiple public sources.MIT
Related MCP Connectors
MCP server for accessing curated awesome list documentation
An MCP server that gives your AI access to the source code and docs of all public github repos
A MCP server built for developers enabling Git based project management with project and personal…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/sudoriaa/game-asset-finder-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server