MCP server for Roblox Open Cloud Datastore API v2 — 18 tools for reading, writing, and querying game datastores from AI agents
Roblox Datastore MCP Server
An MCP (Model Context Protocol) server that gives AI agents direct access to Roblox game datastores via the Open Cloud API v2. Read, write, query, and manage player/game data across multiple Roblox universes from Claude Desktop, Claude Code, Cursor, or any MCP client.
Features
- 18 tools covering standard datastores, ordered datastores, bulk operations, and query helpers
- Multi-universe support — manage multiple games from one server
- Dual transport — stdio for local use, HTTP (Streamable HTTP) for remote hosting
- Rate limiting — built-in sliding-window limiter (300 req/min/universe)
- Auto-pagination — query tools automatically page through large result sets
- Railway-ready — Dockerfile and env var config for one-click deployment
Quick Start
1. Install
git clone https://github.com/YOUR_USER/roblox-datastore-mcp.git
cd roblox-datastore-mcp
npm install
npm run build
2. Configure
Copy config.example.json to roblox-mcp-config.json and add your Roblox Open Cloud API key and universe ID:
{
"universes": {
"my-game": {
"universeId": "123456789",
"apiKey": "your-open-cloud-api-key"
}
},
"defaults": {
"universe": "my-game"
}
}
3. Add to your MCP client
Claude Desktop / Claude Code:
{
"mcpServers": {
"roblox-datastore": {
"command": "node",
"args": ["/path/to/roblox-datastore-mcp/dist/index.js"]
}
}
}
Tools
Standard Datastore (7)
| Tool | Description |
|------|-------------|
| standard_list_datastores | List all datastores in a universe |
| standard_list_entries | List entries in a datastore |
| standard_get_entry | Get a single entry by key |
| standard_create_entry | Create a new entry |
| standard_update_entry | Update an entry (supports upsert) |
| standard_delete_entry | Delete an entry (30-day soft delete) |
| standard_increment_entry | Atomically increment a numeric value |
Ordered Datastore (6)
| Tool | Description |
|------|-------------|
| ordered_list_entries | List with sorting and range filtering |
| ordered_get_entry | Get a single ordered entry |
| ordered_create_entry | Create with integer value |
| ordered_update_entry | Update (supports upsert) |
| ordered_delete_entry | Delete (immediate) |
| ordered_increment_entry | Atomically increment |
Bulk Operations (2)
| Tool | Description |
|------|-------------|
| bulk_get_entries | Read up to 100 entries in parallel |
| bulk_update_entries | Write up to 100 entries in parallel |
Query Helpers (3)
| Tool | Description |
|------|-------------|
| query_find_entries_by_prefix | Auto-paginated prefix search |
| query_search_player_data | Cross-datastore player lookup |
| query_list_all_entries | Auto-paginated full listing |
Configuration
Config is resolved in this order:
ROBLOX_UNIVERSE_ID+ROBLOX_API_KEYenv vars (single universe)ROBLOX_CONFIG_JSONenv var (full JSON config)--config <path>CLI argumentROBLOX_MCP_CONFIGenv var (file path)./roblox-mcp-config.json~/.config/roblox-mcp/config.json
Hosting on Railway
Deploy
- Push this repo to GitHub
- Create a new Railway project from the repo
- Set environment variables:
ROBLOX_UNIVERSE_ID— your universe IDROBLOX_API_KEY— your Open Cloud API keyPORT— Railway sets this automatically
The Dockerfile runs in HTTP mode (--http) automatically. The /health endpoint is used for health checks.
Connect MCP clients to your Railway URL
Use the Streamable HTTP transport with your Railway URL:
https://your-app.up.railway.app/mcp
Development
npm install # Install dependencies
npm run build # Build with tsup
npm run typecheck # Type check
npm run dev # Run locally (stdio mode)
HTTP mode (for testing remote transport)
MCP_HTTP=1 node dist/index.js
# or
node dist/index.js --http
Getting a Roblox Open Cloud API Key
- Go to Roblox Creator Hub
- Create an API key
- Add the DataStore permission for your universe
- Copy the key into your config
License
ISC