[ SKILL_DOCUMENTATION ]
# Direct Creation (MCP) Details
Use this reference for MCP direct-creation examples and follow-on configuration.
## Direct Creation Workflow
### Step 1: Analyze Codebase
Use [codebase-analysis.md](codebase-analysis.md) to determine runtime, build/start commands, env vars, and datastores.
### Step 2: Create Resources via MCP
**Create a Web Service:**
```
create_web_service(
name: "my-api",
runtime: "node", # or python, go, rust, ruby, elixir, docker
repo: "https://github.com/username/repo",
branch: "main", # optional, defaults to repo default branch
buildCommand: "npm ci",
startCommand: "npm start",
plan: "free", # free, starter, standard, pro, pro_max, pro_plus, pro_ultra
region: "oregon", # oregon, frankfurt, singapore, ohio, virginia
envVars: [
{"key": "NODE_ENV", "value": "production"}
]
)
```
**Create a Static Site:**
```
create_static_site(
name: "my-frontend",
repo: "https://github.com/username/repo",
branch: "main",
buildCommand: "npm run build",
publishPath: "dist", # or build, public, out
envVars: [
{"key": "VITE_API_URL", "value": "https://api.example.com"}
]
)
```
**Create a Cron Job:**
```
create_cron_job(
name: "daily-cleanup",
runtime: "node",
repo: "https://github.com/username/repo",
schedule: "0 0 * * *", # Daily at midnight (cron syntax)
buildCommand: "npm ci",
startCommand: "node scripts/cleanup.js",
plan: "free"
)
```
**Create a PostgreSQL Database:**
```
create_postgres(
name: "myapp-db",
plan: "free", # free, basic_256mb, basic_1gb, basic_4gb, pro_4gb, etc.
region: "oregon"
)
```
**Create a Key-Value Store (Redis):**
```
create_key_value(
name: "myapp-cache",
plan: "free", # free, starter, standard, pro, pro_plus
region: "oregon",
maxmemoryPolicy: "allkeys_lru" # eviction policy
)
```
### Step 3: Configure Environment Variables
After creating services, add environment variables:
```
update_environment_variables(
serviceId: "",
envVars: [
{"key": "DATABASE_URL", "value": ""},
{"key": "JWT_SECRET", "value": ""},
{"key": "API_KEY", "value": ""}
]
)
```
**Note:** For database connection strings, get the internal URL from the database details in Dashboard or via `get_postgres(postgresId: "")`.
### Step 4: Verify Deployment
Services with `autoDeploy: "yes"` (default) will deploy automatically when created.
**Check deployment status:**
```
list_deploys(serviceId: "", limit: 1)
```
**Monitor logs for errors:**
```
list_logs(resource: [""], level: ["error"], limit: 50)
```
**Check health metrics:**
```
get_metrics(
resourceId: "",
metricTypes: ["http_request_count", "cpu_usage", "memory_usage"]
)
```