SpacetimeDB MCP Server
Click on "Deploy 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., "@SpacetimeDB MCP Serverlist all tables in the database"
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.
SpacetimeDB MCP Server
A comprehensive Model Context Protocol (MCP) server for SpacetimeDB - enabling AI assistants to interact with your SpacetimeDB instances, query tables, call reducers, and manage your database operations.
Features
🔌 Connection Management: Connect to local or cloud SpacetimeDB instances
📊 Table Operations: Query tables with filtering, pagination, and real-time subscriptions
⚡ Reducer Invocation: Call server-side functions (reducers) with parameters
🗂️ Schema Introspection: Explore database schemas, tables, and available reducers
🔍 SQL Support: Execute SQL queries (where supported)
🔐 Authentication: Support for token-based authentication
📡 Real-time Subscriptions: Subscribe to table updates for live data
🎯 MCP Resources: Expose tables, schemas, and reducers as MCP resources
Related MCP server: Supabase MCP Server
What is SpacetimeDB?
SpacetimeDB is a database that functions as a server, allowing you to run your application logic directly inside the database. Perfect for:
Multiplayer game backends
Real-time collaborative applications
Chat and messaging systems
Any low-latency, state-synchronized application
Prerequisites
Node.js 18.0.0 or higher
SpacetimeDB CLI installed and configured (installation guide)
A running SpacetimeDB instance (local or cloud)
Installation
Clone or download this repository:
Bash:
cd spacetimedb-mcp-serverWindows CMD:
cd spacetimedb-mcp-serverInstall dependencies:
Bash/CMD:
npm installBuild the project:
Bash/CMD:
npm run build
Configuration
For Claude Desktop
Add to your Claude Desktop config file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"spacetimedb": {
"command": "node",
"args": [
"E:\\AI\\claude\\spacetimedb-mcp-server\\dist\\index.js"
]
}
}
}For Other MCP Clients
The server runs on stdio transport and can be used with any MCP-compatible client:
Bash/CMD:
node dist/index.jsUsage
1. Connect to SpacetimeDB
First, establish a connection to your SpacetimeDB instance:
// Connect to local instance
spacetimedb_connect({
uri: "ws://localhost:3000",
module_name: "my-game-server"
})
// Connect to cloud instance with auth
spacetimedb_connect({
uri: "wss://testnet.spacetimedb.com",
module_name: "my-production-module",
auth_token: "your-token-here"
})2. List Available Tables
spacetimedb_list_tables({
include_schema: true
})3. Query Table Data
// Simple query
spacetimedb_query_table({
table_name: "users"
})
// With filtering and pagination
spacetimedb_query_table({
table_name: "messages",
filter: '{"sender": "alice"}',
limit: 50,
offset: 0
})4. Call Reducers
Reducers are server-side functions that modify database state:
// Call a reducer with arguments
spacetimedb_call_reducer({
reducer_name: "send_message",
args: '["Hello, world!", "general"]'
})
spacetimedb_call_reducer({
reducer_name: "set_name",
args: '["Alice"]'
})5. Subscribe to Real-time Updates
spacetimedb_subscribe_table({
table_name: "users",
filter: '{"online": true}'
})6. Get Schema Information
// Get entire database schema
spacetimedb_get_schema({})
// Get specific table schema
spacetimedb_get_schema({
table_name: "messages"
})7. List Available Reducers
spacetimedb_list_reducers({
include_signatures: true
})8. Execute SQL Queries
spacetimedb_execute_sql({
query: "SELECT * FROM users WHERE online = true"
})Available Tools
Tool | Description |
| Connect to a SpacetimeDB instance |
| Disconnect from current instance |
| List all tables with optional schema |
| Query table data with filtering/pagination |
| Invoke a reducer function |
| Subscribe to real-time table updates |
| Get database or table schema |
| List available reducers |
| Get current client identity |
| Execute SQL queries |
| Get connection status |
MCP Resources
The server exposes the following resources:
spacetimedb://tables/{table_name}- Direct access to table dataspacetimedb://schema- Complete database schemaspacetimedb://reducers- List of all callable reducers
Architecture
Connection Manager
The SpacetimeDBConnectionManager class handles:
WebSocket connections to SpacetimeDB instances
CLI command execution for operations
Query and subscription management
Schema caching and introspection
Dual Implementation Approach
This MCP server uses a hybrid approach:
CLI-based operations: For module management, deployment, and admin tasks
SDK-based operations: For real-time connections and subscriptions (when bindings are generated)
This provides maximum flexibility for both development and production use.
Use Cases
For Game Development
// Check online players
spacetimedb_query_table({
table_name: "players",
filter: '{"online": true}'
})
// Send player action
spacetimedb_call_reducer({
reducer_name: "player_move",
args: '[100, 200, 50]' // x, y, z coordinates
})For Chat Applications
// Get recent messages
spacetimedb_query_table({
table_name: "messages",
limit: 100
})
// Send new message
spacetimedb_call_reducer({
reducer_name: "send_message",
args: '["Hello everyone!", "general"]'
})For Real-time Dashboards
// Subscribe to live metrics
spacetimedb_subscribe_table({
table_name: "system_metrics"
})
// Query historical data
spacetimedb_execute_sql({
query: "SELECT * FROM metrics WHERE timestamp > NOW() - INTERVAL '1 hour'"
})Development
Building
Bash/CMD:
npm run buildDevelopment Mode (with hot reload)
Bash/CMD:
npm run devWatch Mode
Bash/CMD:
npm run watchTroubleshooting
"spacetime command not found"
Make sure SpacetimeDB CLI is installed:
Bash/Linux/macOS:
curl -fsSL https://install.spacetimedb.com | bashWindows PowerShell:
iwr https://install.spacetimedb.com -useb | iexWindows CMD:
rem Visit https://spacetimedb.com/install for the installerConnection Failures
Verify SpacetimeDB is running:
spacetime startCheck URI format (ws:// for local, wss:// for cloud)
Ensure module name matches your deployed module
For cloud instances, verify authentication token
"Module not found"
List available modules:
Bash/CMD:
spacetime listDeploy your module:
Bash/CMD:
spacetime publish your-module-name --project-path ./path/to/moduleSpacetimeDB Module Development
To use this MCP server effectively, you'll need SpacetimeDB modules. Here's a quick example:
Rust Module Example
use spacetimedb::{table, reducer, SpacetimeType};
#[table(name = users)]
pub struct User {
#[primarykey]
pub identity: Identity,
pub name: String,
pub online: bool,
}
#[reducer]
pub fn set_name(ctx: &ReducerContext, name: String) -> Result<(), String> {
let user = User {
identity: ctx.sender,
name,
online: true,
};
ctx.db.users().insert(user)?;
Ok(())
}Compile and publish:
Bash/CMD:
spacetime publish my-module --project-path ./my-modulePerformance Considerations
Connection Pooling: Reuse connections across operations
Query Limits: Use pagination for large datasets
Subscription Management: Unsubscribe when no longer needed
Schema Caching: Schema information is cached to reduce overhead
Security
Authentication: Always use auth tokens for production instances
Network: Use WSS (WebSocket Secure) for cloud connections
SQL Injection: Parameterize queries when using
execute_sqlAccess Control: Respect SpacetimeDB's row-level security
Contributing
Contributions welcome! This MCP server can be enhanced with:
WebSocket connection pooling
Better error handling and retries
Automatic module binding generation
Streaming query results
Transaction support
Advanced subscription filtering
Related Resources
License
MIT
Support
SpacetimeDB Discord: discord.gg/spacetimedb
SpacetimeDB Issues: github.com/clockworklabs/SpacetimeDB
MCP Documentation: modelcontextprotocol.io
Built with ❤️ for the SpacetimeDB and MCP communities
This server cannot be deployed
Maintenance
Related MCP Connectors
- HutchDBOAuthcom.hutchdb
Store, query, and update structured data from any AI agent
Astra DB tools for agents: schema, find, vector search, guarded writes, and interactive views.
Create AgentUI data apps: define tables, read and write records, and run programs on your data.
1- OleanderOAuthdev.oleander
The all-in-one data stack for agents. Upload files, run SQL, evolve tables, and render charts.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides tools for AI assistants to interact with Airtable databases, enabling CRUD operations on Airtable bases and tables.5 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform CRUD operations on Supabase databases through natural language. Supports advanced filtering, pagination, and safety checks for seamless database interaction.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with PostgreSQL and Supabase databases through natural language. Supports secure database operations including queries, migrations, and schema management with user-provided credentials.19 npm1MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI models to interact with SQLite Cloud databases, supporting SQL queries, schema management, and performance analysis.20 npm1MIT