🧱 roblox-assets-mcp
Find Roblox Creator Store assets and hand their download URLs to an AI assistant.
About
TL;DR: a local stdio MCP server that searches Roblox Creator Store assets, reads their details and 2D thumbnails, and gets temporary CDN URLs for downloading them. It does not write files or change assets.
Why it exists
An assistant building a Roblox experience needs to discover reusable models, audio, decals, plugins, and other Creator Store assets. This server exposes the asset part of Roblox Open Cloud as three focused tools. Pepper can choose an asset here, then fetch its temporary URL inside her own sandbox.
How it works
The server uses FastMCP over stdio and HTTPX for HTTPS requests. It sends ROBLOX_API_KEY only to Roblox's Open Cloud endpoints. Search and details use the Creator Store API; download URLs come from Asset Delivery; 2D previews come from the public Thumbnails API.
| Tool | What it returns |
|---|---|
search_assets |
Creator Store assets matching a query, category, optional free-only filter, and page token |
get_asset_details |
An asset's metadata, 2D thumbnail state, and PNG URL when ready |
prepare_asset_download |
A temporary HTTPS CDN URL for an asset, without downloading it |
search_assets accepts Audio, Place, Model, Decal, Plugin, MeshPart, Video, and FontFamily. It defaults to free Model assets. Use free_only=false to include paid results. For later pages, pass the returned next_page_token back as page_token. A thumbnail may still be pending, in which case thumbnail_url is null. CDN URLs are temporary; fetch them promptly, and handle compressed responses in the downloading environment.
Installation
Create a Roblox Open Cloud API key with these scopes:
creator-store-product:readfor Creator Store search and asset details.legacy-asset:managefor Asset Delivery download locations.
Allow the machine running the MCP server in the key's IP restrictions. The public 2D thumbnail endpoint needs no additional scope. Keep the key in your MCP client's environment configuration, and revoke temporary keys after use.
Once published to PyPI, most MCP clients can run it with uvx:
{
"mcpServers": {
"roblox-assets": {
"command": "uvx",
"args": ["roblox-assets-mcp"],
"env": {
"ROBLOX_API_KEY": "YOUR_ROBLOX_OPEN_CLOUD_API_KEY"
}
}
}
}
For local development, use uv sync and launch uv run roblox-assets-mcp with ROBLOX_API_KEY set. Before starting MCP, the server makes one Creator Store search and one Asset Delivery request to check that the key works for both operations. It exits if the key is missing, blank, invalid, or lacks either scope. Roblox authorization and rate-limit failures during later tool calls are returned as explicit errors.
The server also reads .env from its working directory. The following values are optional; each uses the shown default when unset. Process environment variables take precedence over .env values.
| Variable | Default |
|---|---|
CREATOR_STORE_URL |
https://apis.roblox.com/toolbox-service/v2/assets |
DELIVERY_URL |
https://apis.roblox.com/asset-delivery-api/v1/assetId |
THUMBNAILS_URL |
https://thumbnails.roblox.com/v1/assets |
REQUEST_TIMEOUT |
20.0 seconds |
ROBLOX_API_KEY can also come from .env. The file is ignored by Git.
Development and release
After uv sync, run make quality to check formatting, lint, test, and build the package. Use make format-apply to format the code. The quality workflow calls the same Makefile targets for pull requests and pushes to main.
The release workflow follows FAM MCP: publish a GitHub Release tagged with the package version, such as v0.1.0. It checks that the tag matches pyproject.toml, builds the distributions, and publishes them to PyPI with GitHub OIDC. Before the first release, configure a PyPI Trusted Publisher for this repository and the PyPI - Production GitHub environment.
License
MIT. See LICENSE.md.
Metadata
Release files for roblox-assets-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| roblox_assets_mcp-0.1.0.tar.gz | 7.6 kB | Without provenance | Details for roblox_assets_mcp-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| roblox_assets_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for roblox_assets_mcp-0.1.0-py3-none-any.whl |
Total release size: 16.7 kB
Release files / roblox_assets_mcp-0.1.0.tar.gz
| Download URL | roblox_assets_mcp-0.1.0.tar.gz |
|---|---|
| Size | 7.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
85fd7b9431afe7e7dc5c0454005cc49701c48bbbda1c087b1bfd3c11660f86c7
|
|
BLAKE2b-256 checksum How to use checksums |
3576e9fc15f3f87f0301228e9e485443e5f3675e1391cdccfad8d8543297a7fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / roblox_assets_mcp-0.1.0-py3-none-any.whl
| Download URL | roblox_assets_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9d41dc12e1d84cd8761bf2f48b6908b47d810783caa6c6b3509c5b1e36deb080
|
|
BLAKE2b-256 checksum How to use checksums |
08d0f981942898894cc514722d51459be51e5d6c6d2975c8cb5884b8012621ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for roblox-assets-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.