Exposes TurboSteed web-hosting, site generation, and library features to AI coding agents.
Runs on your machine from its package; the steps are below.
Not assessed yet.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @turbosteed/cli
MCP client config
{
"mcpServers": {
"turbosteed-mcp": {
"command": "npx",
"args": [
"-y",
"@turbosteed/cli"
]
}
}
}Deploy and manage TurboSteed sites from your terminal or CI/CD pipeline.
npm install -g @turbosteed/cli
Verify installation:
turbosteed --version
npm install --save-dev @turbosteed/cli
Run via npx:
npx turbosteed deploy
Or add to package.json scripts:
{
"scripts": {
"deploy": "turbosteed deploy --source ./dist"
}
}
export TURBOSTEED_ACCOUNT_SID="your-account-sid"
export TURBOSTEED_API_KEY="your-api-key"
export TURBOSTEED_SITE_ID="your-site-id"
For permanent setup, add these to your shell profile (~/.bashrc, ~/.zshrc, etc.).
Create turbosteed.json in your project root:
{
"version": "1",
"site": {
"id": "your-site-id",
"accountSid": "your-account-sid"
},
"deploy": {
"source": "./dist",
"exclude": ["**/*.map", ".DS_Store"]
}
}
Note: Never put your API key in config files. Always use environment variables for secrets.
| Variable | Required | Description |
|---|---|---|
TURBOSTEED_ACCOUNT_SID | Yes | Your account identifier |
TURBOSTEED_API_KEY | Yes | Your API key (keep secret) |
TURBOSTEED_SITE_ID | Yes* | Site ID (*can be in config file) |
TURBOSTEED_API_BASE | No | API base URL (defaults to production) |
# Deploy from ./dist (default)
turbosteed deploy
# Deploy from a specific directory
turbosteed deploy --source ./build
# Preview what would be deployed
turbosteed deploy --dry-run
# Output result as JSON
turbosteed deploy --json
Requirements:
index.html file# Upload a file
turbosteed assets upload ./images/logo.png
# List first page of assets
turbosteed assets list
# List ALL assets (automatic pagination)
turbosteed assets list --all
# Manual pagination (next page)
turbosteed assets list --page <token>
# Delete an asset
turbosteed assets delete logo.png
# List first page of submissions
turbosteed forms list
# List ALL submissions (automatic pagination)
turbosteed forms list --all
# Manual pagination (next page)
turbosteed forms list --page <formId>
# Get a specific submission
turbosteed forms get <formId>
# List first page of schemas
turbosteed cms schema list
# List ALL schemas (automatic pagination)
turbosteed cms schema list --all
# Create a schema from JSON file
turbosteed cms schema create ./blog-schema.json
# List first page of entries in a schema
turbosteed cms entry list <schemaId>
# List ALL entries (automatic pagination)
turbosteed cms entry list <schemaId> --all
# Create an entry
turbosteed cms entry create <schemaId> ./post.json
# Publish an entry
turbosteed cms entry publish <schemaId> <entryId>
Example schema file (blog-schema.json):
{
"display_name": "Blog Posts",
"schema_mode": "custom",
"fields": [
{ "name": "title", "type": "text", "required": true, "max_length": 200 },
{ "name": "slug", "type": "slug", "source_field": "title", "required": true },
{ "name": "body", "type": "richtext", "required": true },
{ "name": "published_date", "type": "date", "required": false }
]
}
Example entry file (post.json):
{
"title": "My First Post",
"slug": "my-first-post",
"body": "# Hello World\n\nThis is my first blog post.",
"published_date": "2026-07-01"
}
Create .github/workflows/deploy.yml:
name: Deploy to TurboSteed
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install and Build
run: npm ci && npm run build
- name: Deploy to TurboSteed
env:
TURBOSTEED_ACCOUNT_SID: ${{ secrets.TURBOSTEED_ACCOUNT_SID }}
TURBOSTEED_API_KEY: ${{ secrets.TURBOSTEED_API_KEY }}
TURBOSTEED_SITE_ID: ${{ secrets.TURBOSTEED_SITE_ID }}
run: npx @turbosteed/cli deploy --source ./dist
Create .gitlab-ci.yml:
stages:
- build
- deploy
build:
stage: build
image: node:20
script:
- npm ci
- npm run build
artifacts:
paths:
- dist/
deploy:
stage: deploy
image: node:20
dependencies:
- build
script:
- npx @turbosteed/cli deploy --source ./dist
only:
- main
Create bitbucket-pipelines.yml:
image: node:20
pipelines:
branches:
main:
- step:
name: Build
caches:
- node
script:
- npm ci
- npm run build
artifacts:
- dist/**
- step:
name: Deploy to TurboSteed
deployment: production
script:
- npx @turbosteed/cli deploy --source ./dist
This CLI includes an MCP (Model Context Protocol) server that allows AI assistants like Claude to manage your TurboSteed site programmatically.
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"turbosteed": {
"command": "npx",
"args": ["@turbosteed/cli", "--mcp"],
"env": {
"TURBOSTEED_ACCOUNT_SID": "your-account-sid",
"TURBOSTEED_API_KEY": "your-api-key",
"TURBOSTEED_SITE_ID": "your-site-id",
"TURBOSTEED_API_BASE": "https://api-us.turbosteed.com"
}
}
}
}
For Claude Code, add to ~/.claude/settings.json:
{
"mcpServers": {
"turbosteed": {
"command": "npx",
"args": ["@turbosteed/cli", "--mcp"],
"env": {
"TURBOSTEED_ACCOUNT_SID": "your-account-sid",
"TURBOSTEED_API_KEY": "your-api-key",
"TURBOSTEED_SITE_ID": "your-site-id",
"TURBOSTEED_API_BASE": "https://api-us.turbosteed.com"
}
}
}
}
You can also start the MCP server directly from the command line:
turbosteed --mcp
Or via npx:
npx @turbosteed/cli --mcp
| Variable | Required | Description |
|---|---|---|
TURBOSTEED_ACCOUNT_SID | Yes | Account identifier (e.g., AC...) |
TURBOSTEED_API_KEY | Yes | API key (e.g., sk_...) |
TURBOSTEED_SITE_ID | Yes | Site identifier (e.g., site_...) |
TURBOSTEED_API_BASE | No | API base URL (https://api-us.turbosteed.com) |
The CLI runs a local stdio MCP server that proxies all requests to the TurboSteed backend MCP HTTP endpoint at ${TURBOSTEED_API_BASE}/users/${accountSid}/sites/${siteId}/mcp. It receives MCP protocol messages over stdio from Claude, forwards them via HTTP to the backend, and returns responses back through stdio.
Once configured, Claude can use these tools:
| Tool | Description |
|---|---|
site.get | Get site configuration |
site.update | Update site settings |
cms.schema.list | List CMS schemas |
cms.schema.get | Get a schema definition |
cms.schema.create | Create a new schema |
cms.entry.list | List entries in a schema |
cms.entry.get | Get a specific entry |
cms.entry.create | Create a new entry |
cms.entry.update | Update an entry |
cms.entry.publish | Publish an entry |
webhooks.list | List webhooks |
webhooks.create | Create a webhook |
contacts.list | List contact form submissions |
contacts.get | Get a specific submission |
assets.list | List all assets |
assets.delete | Delete an asset |
deploy.getUploadUrl | Get a pre-signed upload URL |
deploy.trigger | Trigger deployment |
apikeys.getSiteCredentials | Get public site credentials for RAG/widget |
Ask Claude:
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | General error |
| 2 | Authentication failure |
| 3 | Resource not found |
| 4 | Upload/network failure |
| 5 | Invalid input |
| 6 | Configuration error |
For environments without Node.js, use shell scripts:
curl -sSL https://raw.githubusercontent.com/turbosteed/shell-tools/main/scripts/deploy.sh | bash -s ./dist
See github.com/turbosteed/shell-tools
This software is licensed for use with TurboSteed accounts only. See LICENSE for full terms.