📦 roblox-assets-mcp
An MCP server for finding Roblox Creator Store assets.
Give an assistant a way to search, inspect, and retrieve what a game needs.
About
TL;DR: a local, asset-only MCP server for Roblox Creator Store. An assistant can search reusable assets, inspect their metadata and 2D thumbnails, and request a temporary download URL. It leaves downloading and working with the asset to the assistant's own environment.
Why it exists
I am building a Roblox game with friends and an AI agent. The agent can help with code, but it also needs the same raw material a human creator would look for: models, audio, decals, plugins, and other things already made for Roblox. This server gives it a small set of tools for that part of the work.
For example, I can ask the agent to find a free forest cabin, check who made it and whether it contains scripts, inspect its preview, and get a URL for the asset it chooses. The agent can then fetch and examine the file in its own workspace before using it in a project.
How it works
The assistant calls three tools over local stdio. The server sends HTTPS requests to Roblox with HTTPX, using an Open Cloud API key for Creator Store and Asset Delivery. It reads 2D previews from the public Thumbnails API. The API key stays in the server process and is never part of a tool response.
Philosophy
Only the asset workflow.
The three tools follow the path from a search to an inspected asset to a URL that the agent can fetch. Universe and place management belong to a different set of tools.
Let the assistant choose.
Search returns structured names, creators, prices and IDs. Details add a preview and script flag when Roblox provides them. The agent has enough information to compare candidates before downloading one.
Keep the key local.
Roblox authentication happens in the MCP process. The agent sees asset data and temporary URLs, while the key remains in the process environment. Access is checked before the server announces itself to the client.
Leave files with the caller.
The server obtains the CDN location; the assistant decides where to fetch, inspect and store the asset. This keeps filesystem access and game integration in the environment that already owns the project.
What it can do
| Tool | What it returns |
|---|---|
search_assets |
Matching Creator Store assets, including names, creators, prices when available, and a token for the next page |
get_asset_details |
One asset's metadata and the state and URL of its 2D PNG thumbnail when ready |
prepare_asset_download |
A temporary HTTPS CDN URL for one asset; the tool does not save the file |
The search tool accepts these asset types:
| Asset type | Description | Example |
|---|---|---|
Audio |
Sound effects and music | Footsteps in a forest |
Place |
A saved Roblox world and its contents | A starter map |
Model |
A group of objects that can include geometry and scripts | A forest cabin |
Decal |
An image applied to a surface | A warning sign |
Plugin |
A tool that extends Roblox Studio | A terrain editor |
MeshPart |
A custom 3D shape | A rock mesh |
Video |
A clip for an in-game screen | A looping display |
FontFamily |
A font for interface text | A pixel-style font |
Search starts with free models. The assistant can choose another type, include paid results, and request more pages. Thumbnail images may still be pending, and download URLs expire. The server returns the URL; the assistant fetches the file in its own workspace.
Getting an API key
Create a Roblox Open Cloud API key with both scopes below. On startup, the server checks Creator Store and Asset Delivery access and exits if the API key is missing, invalid, or lacks the required scopes. Later authorization or rate-limit failures appear as tool errors.
| Scope | Used for |
|---|---|
creator-store-product:read |
Searching Creator Store and reading asset details |
legacy-asset:manage |
Asking Asset Delivery for an asset's download location |
If you enable IP restrictions, allow the address of the machine running the MCP server. The public 2D thumbnail endpoint needs no additional scope. Keep the key in your MCP client's environment configuration, never in a project file that you commit. A key used only for testing can be revoked afterward.
Installation
Roblox Assets MCP is published on PyPI and runs locally over stdio. Choose your client below and replace YOUR_ROBLOX_OPEN_CLOUD_API_KEY with your key.
Hermes Agent (Pepper)
Add a server to your Hermes profile's mcp_servers configuration. Pepper's existing profiles use this uvx pattern:
mcp_servers:
roblox-assets:
command: uvx
args: [roblox-assets-mcp]
env:
ROBLOX_API_KEY: "${ROBLOX_API_KEY}"
Set ROBLOX_API_KEY in the environment that starts Hermes. See Pepper's configuration for the wider setup.
Claude Code
Run this in a terminal. The user scope makes the server available across projects:
claude mcp add --transport stdio --scope user \
--env "ROBLOX_API_KEY=YOUR_ROBLOX_OPEN_CLOUD_API_KEY" \
roblox-assets -- uvx roblox-assets-mcp
Check the connection with claude mcp get roblox-assets or /mcp inside Claude Code. See the Claude Code MCP guide.
Claude Desktop
Open Settings → Developer → Edit Config and add this entry inside mcpServers:
{
"mcpServers": {
"roblox-assets": {
"command": "uvx",
"args": ["roblox-assets-mcp"],
"env": {
"ROBLOX_API_KEY": "YOUR_ROBLOX_OPEN_CLOUD_API_KEY"
}
}
}
}
Restart Claude Desktop after saving. See Claude Desktop local MCP setup.
OpenAI Codex
Add this to ~/.codex/config.toml. The same user config is used by Codex CLI and its IDE integrations:
[mcp_servers.roblox-assets]
command = "uvx"
args = ["roblox-assets-mcp"]
env = { ROBLOX_API_KEY = "YOUR_ROBLOX_OPEN_CLOUD_API_KEY" }
Restart Codex, then check the server with codex mcp list. See the Codex configuration reference.
OpenCode
Add this server under mcp in your user ~/.config/opencode/opencode.json or project opencode.json:
{
"mcp": {
"roblox-assets": {
"type": "local",
"command": ["uvx", "roblox-assets-mcp"],
"environment": {
"ROBLOX_API_KEY": "YOUR_ROBLOX_OPEN_CLOUD_API_KEY"
},
"enabled": true
}
}
}
See the OpenCode MCP server guide.
Gemini CLI
Run:
gemini mcp add --scope user \
--env "ROBLOX_API_KEY=YOUR_ROBLOX_OPEN_CLOUD_API_KEY" \
roblox-assets uvx roblox-assets-mcp
Check with gemini mcp list. See the Gemini CLI MCP guide.
Grok Build
Add this to ~/.grok/config.toml:
[mcp_servers.roblox-assets]
command = "uvx"
args = ["roblox-assets-mcp"]
env = { ROBLOX_API_KEY = "YOUR_ROBLOX_OPEN_CLOUD_API_KEY" }
enabled = true
Reload the MCP list in Grok Build after saving. See the Grok Build MCP guide.
DeepSeek Harness
Add this MCP client entry to your DeepSeek Harness Cordis profile. Start the harness with ROBLOX_API_KEY set in its environment:
- id: mcp-roblox-assets
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: roblox-assets
transport: stdio
command: uvx
args: [roblox-assets-mcp]
env:
ROBLOX_API_KEY: !!js process.env.ROBLOX_API_KEY
See the DeepSeek Harness MCP client guide.
Cursor
Add this entry under mcpServers in .cursor/mcp.json:
{
"mcpServers": {
"roblox-assets": {
"command": "uvx",
"args": ["roblox-assets-mcp"],
"env": {
"ROBLOX_API_KEY": "YOUR_ROBLOX_OPEN_CLOUD_API_KEY"
}
}
}
}
See the Cursor MCP guide.
VS Code with GitHub Copilot
Create or edit .vscode/mcp.json:
{
"servers": {
"roblox-assets": {
"type": "stdio",
"command": "uvx",
"args": ["roblox-assets-mcp"],
"env": {
"ROBLOX_API_KEY": "YOUR_ROBLOX_OPEN_CLOUD_API_KEY"
}
}
}
}
Start the server from the MCP Servers view in Copilot Chat. See VS Code MCP setup.
Zed
Add this entry under context_servers in Zed's settings.json:
{
"context_servers": {
"roblox-assets": {
"command": "uvx",
"args": ["roblox-assets-mcp"],
"env": {
"ROBLOX_API_KEY": "YOUR_ROBLOX_OPEN_CLOUD_API_KEY"
}
}
}
}
See the Zed MCP guide.
Cline and Roo Code
In either extension's MCP settings, add a local stdio server with command uvx, argument roblox-assets-mcp, and environment variable ROBLOX_API_KEY. Both provide an MCP settings editor in the extension UI. See the Cline MCP guide and Roo Code MCP guide.
Continue
Create .continue/mcpServers/roblox-assets.yaml:
name: Roblox Assets MCP
version: 1.0.0
schema: v1
mcpServers:
- name: Roblox Assets
command: uvx
args:
- roblox-assets-mcp
env:
ROBLOX_API_KEY: YOUR_ROBLOX_OPEN_CLOUD_API_KEY
See the Continue MCP guide.
Claude.ai and ChatGPT in a browser
These web apps connect to remote MCP servers. This package runs locally over stdio and does not publish a remote endpoint, so you cannot paste uvx roblox-assets-mcp into their connector settings. Connecting a web app requires a separately hosted or securely tunneled remote MCP endpoint. See Claude remote connectors and ChatGPT MCP connectors.
Technologies
| Technology | Used for | |
|---|---|---|
| Model Context Protocol | The protocol between the assistant and the local tools | |
| FastMCP | Stdio server and typed tool registration | |
| Python | The language of the server | |
| HTTPX | Async HTTPS requests to Roblox | |
| Pydantic | Models for the data returned by tools | |
| uv | Dependencies, development and uvx distribution |
What's inside
.
├── .github/
│ └── workflows/
│ ├── quality.yml # formatting, lint, tests and build checks
│ └── release.yml # build and publish a GitHub Release to PyPI
│
├── assets/ # editable Excalidraw flow and its SVG for this README
│
├── src/roblox_assets_mcp/
│ ├── app.py # stdio server, tools and startup check
│ ├── client.py # Roblox HTTP requests and response parsing
│ ├── config.py # environment settings and their defaults
│ └── models.py # typed tool responses and asset categories
│
├── tests/ # behavior checks for the server
├── Makefile # local quality commands
└── pyproject.toml # package metadata and dependencies
Development
Requirements
- Git to work with the repository.
- uv to install Python and project dependencies.
- GNU Make to run the project commands.
Setup
From the repository root:
# Install the dependencies pinned in uv.lock.
uv sync --locked --group dev
Coding
# Format the Python files after editing them.
make format-apply
# Check Python formatting.
make format-check
# Check Python code with Ruff.
make lint
Testing and building
# Run the server tests.
make test
# Build the source distribution and wheel in dist/.
make build
# Run formatting, lint, tests and build together.
make quality
Related projects
- roblox-with-swe is the collaborative Roblox game that motivated this server.
- pepper documents the personal agent that will use it.
Disclaimer
This project is unofficial. It is not made by, affiliated with or endorsed by Roblox.
License
This repository is licensed under the MIT License.
References
- Roblox Creator Store API: search and asset metadata.
- Roblox Asset Delivery API: temporary asset download locations.
- Roblox Thumbnails API: 2D previews.
- Roblox Open Cloud scopes: the permissions used by the API key.
- Model Context Protocol: the tool protocol this server speaks.
Metadata
Release files for roblox-assets-mcp 0.2.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.2.0.tar.gz | 11.8 kB | Without provenance | Details for roblox_assets_mcp-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| roblox_assets_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for roblox_assets_mcp-0.2.0-py3-none-any.whl |
Total release size: 25.4 kB
Release files / roblox_assets_mcp-0.2.0.tar.gz
| Download URL | roblox_assets_mcp-0.2.0.tar.gz |
|---|---|
| Size | 11.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ecb8dc99015b04abafc42fadb458490e64ff0c98c853efdb758cc8646252771a
|
|
BLAKE2b-256 checksum How to use checksums |
99d22b43cfecc7e288c5eff330507f2023ea517ad74a7ad14c13b9741f48b4fa
|
| 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.2.0-py3-none-any.whl
| Download URL | roblox_assets_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 13.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
24a6047e091e180d5fb1eb9e47e8fdd3d45362951d96f0c0e6cd4e1f33cc9246
|
|
BLAKE2b-256 checksum How to use checksums |
98e7154b66a61ce02722d2e6abd2f98e50336d9402a08ae9bcf54462386f3e6c
|
| 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.2.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.