Scalix Cloud
The agent-native cloud: database, functions, AI, storage, computers. 50 tools, one API key.
我该使用它吗
质量与安全性
发现(1)
- LOW在 scalix_db_migrate 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"cloud": {
"url": "https://api.scalix.world/v1/mcp"
}
}
}远程端点
https://api.scalix.world/v1/mcpstreamable-http它能做什么
工具清单
工具(51)
🟢scalix_db_relationships
Get the relationship map showing how tables are connected via foreign keys.
输入模式
{
"type": "object",
"properties": {}
}🟢scalix_db_search_columns(query)
Search for columns by name or type across all tables.
输入模式
{
"type": "object",
"properties": {
"query": {
"description": "Search term to match column names or types",
"type": "string"
}
},
"required": [
"query"
]
}🟢scalix_db_pii
List all columns classified as containing personally identifiable information (PII).
输入模式
{
"type": "object",
"properties": {}
}🟢scalix_db_optimize(sql)
Analyze a SQL query and return optimization suggestions including index recommendations and query rewrites.
输入模式
{
"type": "object",
"properties": {
"sql": {
"description": "SQL query to analyze and optimize",
"type": "string"
}
},
"required": [
"sql"
]
}🟢scalix_db_text_to_sql(question)
Translate a plain-language question into a candidate SQL query using pattern-matching against the live schema (no AI model — simple questions only: counts, averages, filtered selects on a named table). Returns the SQL without executing it, with a confidence score; low confidence means the table was guessed. Review the statement and tables_used, then run it with scalix_db_query. For complex questions, read scalix_db_schema and write the SQL directly.
输入模式
{
"type": "object",
"properties": {
"question": {
"description": "The question to answer from the database, in plain language (e.g. 'how many orders shipped last week?')",
"type": "string"
}
},
"required": [
"question"
]
}🔴scalix_db_query(confirm_token, params, sql)
Execute a SQL query against the project database. Returns columns, rows, row count, and cost breakdown. Destructive statements (DROP/TRUNCATE/bulk DELETE) require a two-step confirmation: the first call returns code CONFIRMATION_REQUIRED with a confirmation_token — re-call with that value in confirm_token to execute.
输入模式
{
"type": "object",
"properties": {
"confirm_token": {
"description": "Confirmation token from a prior CONFIRMATION_REQUIRED response; required to execute destructive SQL (single-use, short TTL)",
"type": "string"
},
"params": {
"description": "Bind parameters for the query",
"items": {},
"type": "array"
},
"sql": {
"description": "SQL query to execute",
"type": "string"
}
},
"required": [
"sql"
]
}🟢scalix_db_schema
Get the full database schema including all tables, columns, types, and relationships.
输入模式
{
"type": "object",
"properties": {}
}🟢scalix_db_table(table)
Get detailed information about a specific database table including columns, indexes, and foreign keys.
输入模式
{
"type": "object",
"properties": {
"table": {
"description": "Table name to inspect",
"type": "string"
}
},
"required": [
"table"
]
}🔴scalix_db_migrate(tenant_id, version)
Apply a database migration by version number.
输入模式
{
"type": "object",
"properties": {
"tenant_id": {
"description": "Tenant ID",
"type": "string"
},
"version": {
"description": "Migration version to apply",
"type": "string"
}
},
"required": [
"tenant_id",
"version"
]
}🟢scalix_storage_list(bucket, prefix)
List storage buckets, or list objects in a specific bucket with optional prefix filter.
输入模式
{
"type": "object",
"properties": {
"bucket": {
"description": "Bucket name. If omitted, lists all buckets.",
"type": "string"
},
"prefix": {
"description": "Filter objects by key prefix",
"type": "string"
}
}
}🔴scalix_storage_upload(bucket, content, content_type, key)
Upload content to object storage. Provide the content as a base64-encoded string.
输入模式
{
"type": "object",
"properties": {
"bucket": {
"description": "Target bucket name",
"type": "string"
},
"content": {
"description": "Base64-encoded file content",
"type": "string"
},
"content_type": {
"default": "application/octet-stream",
"description": "MIME type",
"type": "string"
},
"key": {
"description": "Object key (path)",
"type": "string"
}
},
"required": [
"bucket",
"key",
"content"
]
}🟢scalix_storage_download(bucket, key)
Download an object from storage. Returns the content as base64.
输入模式
{
"type": "object",
"properties": {
"bucket": {
"description": "Bucket name",
"type": "string"
},
"key": {
"description": "Object key (path)",
"type": "string"
}
},
"required": [
"bucket",
"key"
]
}🟡scalix_storage_create_bucket(name, public)
Create a new Scalix Storage bucket in the project (S3-compatible object storage). Bucket names must be unique within the project. Setting public=true makes every object in the bucket readable without authentication — leave it false (the default) and use presigned URLs for private sharing.
输入模式
{
"type": "object",
"properties": {
"name": {
"description": "Bucket name, unique within the project",
"type": "string"
},
"public": {
"default": false,
"description": "true = all objects publicly readable without auth; false (default) = private, share via presigned URLs",
"type": "boolean"
}
},
"required": [
"name"
]
}🟢scalix_fn_list
List all deployed serverless functions.
输入模式
{
"type": "object",
"properties": {}
}🟡scalix_fn_deploy(image, name, runtime)
Deploy a Scalix Function — serverless, per-request billed, running in isolated microVMs — from a container image. Invoke it with scalix_fn_invoke once deployed.
输入模式
{
"type": "object",
"properties": {
"image": {
"description": "Container image reference",
"type": "string"
},
"name": {
"description": "Function name",
"type": "string"
},
"runtime": {
"description": "Runtime — `node` or `python` (exactly what the functions orchestrator accepts)",
"type": "string"
}
},
"required": [
"name",
"image"
]
}🔴scalix_fn_invoke(data, function_id)
Invoke a deployed function with a JSON payload.
输入模式
{
"type": "object",
"properties": {
"data": {
"description": "JSON payload to pass to the function",
"type": "object"
},
"function_id": {
"description": "Function ID to invoke",
"type": "string"
}
},
"required": [
"function_id"
]
}🟢scalix_kv_get(key)
Read a single value from the project's key-value store by exact key. Returns the stored value, or a not-found error if the key does not exist or its TTL has expired. Use scalix_kv_list to discover keys by prefix first.
输入模式
{
"type": "object",
"properties": {
"key": {
"description": "Exact key to look up (case-sensitive)",
"type": "string"
}
},
"required": [
"key"
]
}🔴scalix_kv_set(key, ttl, value)
Set a key-value pair with optional TTL.
输入模式
{
"type": "object",
"properties": {
"key": {
"description": "Key to set",
"type": "string"
},
"ttl": {
"description": "Time-to-live in seconds (0 = no expiry)",
"type": "integer"
},
"value": {
"description": "Value to store",
"type": "string"
}
},
"required": [
"key",
"value"
]
}🟢scalix_kv_list(prefix)
List keys in the key-value store, optionally filtered by prefix.
输入模式
{
"type": "object",
"properties": {
"prefix": {
"description": "Filter keys by prefix",
"type": "string"
}
}
}⚪scalix_ai_infer(max_tokens, model, prompt, system, temperature)
Run AI inference on Scalix AI. Sends a prompt and returns the model's response in the OpenAI-compatible chat-completions format; tokens are billed to the project's credit pool. Discover available model IDs with scalix_ai_models.
输入模式
{
"type": "object",
"properties": {
"max_tokens": {
"default": 1024,
"description": "Maximum tokens to generate",
"type": "integer"
},
"model": {
"description": "Model ID (from scalix_ai_models — a scalix-auto/* tier or a scalix-gw/<vendor>/<model> catalog id)",
"type": "string"
},
"prompt": {
"description": "User prompt / message",
"type": "string"
},
"system": {
"description": "System message",
"type": "string"
},
"temperature": {
"default": 0.7,
"description": "Sampling temperature (0-2)",
"type": "number"
}
},
"required": [
"prompt"
]
}🟢scalix_ai_models
List the AI models available to the project — virtual tiers and the pass-through catalog model IDs — for use in scalix_ai_infer.
输入模式
{
"type": "object",
"properties": {}
}🟡scalix_events_publish(data, event_type, topic_id)
Publish an event to a topic. Provide an event_type (a short name for the kind of event, e.g. 'user.created') and the data payload.
输入模式
{
"type": "object",
"properties": {
"data": {
"description": "Event payload (JSON)",
"type": "object"
},
"event_type": {
"description": "Event type/name, e.g. 'user.created'",
"type": "string"
},
"topic_id": {
"description": "Topic ID to publish to",
"type": "string"
}
},
"required": [
"topic_id",
"event_type",
"data"
]
}🟢scalix_events_topics
List the event-bus topics in the project, with each topic's ID and name. Use this to find or verify a topic_id before publishing with scalix_events_publish; publishing to a non-existent topic fails.
输入模式
{
"type": "object",
"properties": {}
}🟡scalix_cron_create(action_type, config, expression, name)
Create a cron schedule to run a function or webhook on a timer.
输入模式
{
"type": "object",
"properties": {
"action_type": {
"description": "Type of action to trigger",
"enum": [
"function",
"webhook"
],
"type": "string"
},
"config": {
"description": "Action configuration (function_id or webhook URL)",
"type": "object"
},
"expression": {
"description": "Cron expression (e.g., '*/5 * * * *')",
"type": "string"
},
"name": {
"description": "Schedule name",
"type": "string"
}
},
"required": [
"name",
"expression",
"action_type"
]
}⚪scalix_sandbox_run(code, files, language, packages, timeout_seconds)
Execute code in an isolated sandbox. Supports Python, JavaScript, TypeScript, and Bash. Returns stdout/stderr.
输入模式
{
"type": "object",
"properties": {
"code": {
"description": "Source code to execute",
"type": "string"
},
"files": {
"description": "Additional files (filename -> content)",
"type": "object"
},
"language": {
"description": "Programming language",
"enum": [
"python",
"javascript",
"typescript",
"bash"
],
"type": "string"
},
"packages": {
"description": "Packages to install (pip/npm)",
"items": {
"type": "string"
},
"type": "array"
},
"timeout_seconds": {
"description": "Max execution time in seconds (default: 30)",
"type": "integer"
}
},
"required": [
"language",
"code"
]
}🟡scalix_computer_create(disk_gb, memory_mb, name, ssh_keys, vcpus)
Get or create a persistent Linux machine by name. Idempotent — calling it again with the same name returns the existing machine rather than creating another, so it is safe to retry. Unlike a sandbox, the disk survives stop/start and is only erased by scalix_computer_delete.
输入模式
{
"type": "object",
"properties": {
"disk_gb": {
"description": "Root disk in GB, 5-200 (default 10). Fixed at create — disks do not grow. Ignored if the machine already exists.",
"type": "integer"
},
"memory_mb": {
"description": "Memory in MB, 512-32768 (default 1024). Ignored if the machine already exists.",
"type": "integer"
},
"name": {
"description": "Machine name: lowercase letters, digits and hyphens, max 63 characters. Unique to you.",
"type": "string"
},
"ssh_keys": {
"description": "OpenSSH public keys to authorise for root, max 32, e.g. [\"ssh-ed25519 AAAAC3Nz… you@laptop\"]. Only needed if a human will ssh in — exec, write_file and read_file all work without one. Send the public half only; a private key is rejected. Ignored if the machine already exists — use scalix_computer_set_ssh_keys to change them. Supplying this needs the sandbox:execute scope on top of sandbox:create, because a key is a root shell; omit it and sandbox:create alone is enough.",
"items": {
"type": "string"
},
"type": "array"
},
"vcpus": {
"description": "vCPUs, 1-16 (default 1). Ignored if the machine already exists.",
"type": "integer"
}
},
"required": [
"name"
]
}🔴scalix_computer_set_ssh_keys(id, ssh_keys)
Replace the ssh keys authorised for root on a persistent Linux machine. This is how you revoke: send the list without the key you want gone, and on a running machine it stops working immediately. Sending an empty list removes every key. Not a patch — whatever you send becomes the whole list, so read the current keys from scalix_computer_list first if you mean to add one.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
},
"ssh_keys": {
"description": "The complete list of OpenSSH public keys, max 32. Empty array removes all of them.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id",
"ssh_keys"
]
}🟢scalix_computer_list
List your persistent Linux machines with their status, address and resource shape.
输入模式
{
"type": "object",
"properties": {}
}🔴scalix_computer_exec(args, command, cwd, env, id, ...)
Run a command inside a persistent Linux machine and wait for it to finish. Returns exit code, stdout and stderr. The machine must be running.
输入模式
{
"type": "object",
"properties": {
"args": {
"description": "Arguments, e.g. [\"-lc\", \"npm test\"]",
"items": {
"type": "string"
},
"type": "array"
},
"command": {
"description": "Program to run, e.g. bash",
"type": "string"
},
"cwd": {
"description": "Working directory inside the machine",
"type": "string"
},
"env": {
"description": "Environment variables for this command only",
"type": "object"
},
"id": {
"description": "Machine id from scalix_computer_create or scalix_computer_list",
"type": "string"
},
"timeout_ms": {
"description": "Give up after this many milliseconds, 1000-600000 (default 120000)",
"type": "integer"
}
},
"required": [
"id",
"command"
]
}🔴scalix_computer_write_file(content, id, mode, path)
Write a text file into a persistent Linux machine. Use this instead of shelling out with cat/echo — no quoting to get wrong.
输入模式
{
"type": "object",
"properties": {
"content": {
"description": "File contents as text",
"type": "string"
},
"id": {
"description": "Machine id",
"type": "string"
},
"mode": {
"description": "Unix mode in decimal, e.g. 493 for 0755. Omit unless the file must be executable.",
"type": "integer"
},
"path": {
"description": "Absolute path inside the machine, e.g. /root/app/main.py",
"type": "string"
}
},
"required": [
"id",
"path",
"content"
]
}🟢scalix_computer_read_file(id, path)
Read a text file out of a persistent Linux machine.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
},
"path": {
"description": "Absolute path inside the machine",
"type": "string"
}
},
"required": [
"id",
"path"
]
}⚪scalix_computer_stop(id)
Stop a persistent Linux machine. The disk and the network address are kept, so starting it again returns the same files at the same address. Stop machines you are done with — a stopped machine costs only its disk.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
}
},
"required": [
"id"
]
}⚪scalix_computer_start(id)
Start a stopped persistent Linux machine. Same disk, same address.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
}
},
"required": [
"id"
]
}🔴scalix_computer_delete(id)
Permanently delete a persistent Linux machine AND its disk. This cannot be undone — use scalix_computer_stop if you may want the files back.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Machine id",
"type": "string"
}
},
"required": [
"id"
]
}🟢scalix_crew_list
List your crews with their ids and names. A crew is a team of AI members that share a notice board; use the crew id with the board tools.
输入模式
{
"type": "object",
"properties": {}
}🟢scalix_crew_board_read(crew_id)
Read a crew's notice board: every pinned note plus the newest unpinned ones, current as of this call. The board is the crew's shared coordination state — read it before starting work so you act on the latest news, and post what teammates need to know with scalix_crew_board_post.
输入模式
{
"type": "object",
"properties": {
"crew_id": {
"description": "Crew id from scalix_crew_list",
"type": "string"
}
},
"required": [
"crew_id"
]
}🟡scalix_crew_board_post(author_member_id, body, crew_id, owner_member_id, pinned, ...)
Post a note to the crew's notice board for other members and the human to see. The board is news, not knowledge: set ttl_seconds so routine updates expire on their own, pin only what every future task must see, and set owner_member_id to hand work off to a specific member. Notes cannot be edited from here — post a correction instead.
输入模式
{
"type": "object",
"properties": {
"author_member_id": {
"description": "Your member id, so the note is attributed. Omit when posting as the human.",
"type": "string"
},
"body": {
"description": "The note, max 8000 chars. Write for a teammate who was not watching your work.",
"type": "string"
},
"crew_id": {
"description": "Crew id from scalix_crew_list",
"type": "string"
},
"owner_member_id": {
"description": "Hand off: the member id now responsible for this item.",
"type": "string"
},
"pinned": {
"description": "Keep this in front of everyone indefinitely. Default false; most notes should expire instead.",
"type": "boolean"
},
"ttl_seconds": {
"description": "Seconds until the note expires, 60 to 7776000 (90 days). Omit for no expiry — usually only right for pins.",
"type": "integer"
}
},
"required": [
"crew_id",
"body"
]
}🟡scalix_domain_add(domain)
Add a custom domain to the project. Returns DNS records to configure.
输入模式
{
"type": "object",
"properties": {
"domain": {
"description": "Domain name to add (e.g., api.example.com)",
"type": "string"
}
},
"required": [
"domain"
]
}🟢scalix_domain_list
List all custom domains and their SSL/verification status.
输入模式
{
"type": "object",
"properties": {}
}⚪scalix_domain_verify(domain)
Verify DNS configuration for a custom domain and provision SSL certificate.
输入模式
{
"type": "object",
"properties": {
"domain": {
"description": "Domain to verify",
"type": "string"
}
},
"required": [
"domain"
]
}🟡scalix_build_create(branch, dockerfile, git_url, name)
Create a new container image build from a Git repository or Dockerfile.
输入模式
{
"type": "object",
"properties": {
"branch": {
"default": "main",
"description": "Git branch",
"type": "string"
},
"dockerfile": {
"default": "Dockerfile",
"description": "Path to Dockerfile in repo",
"type": "string"
},
"git_url": {
"description": "Git repository URL",
"type": "string"
},
"name": {
"description": "Build name",
"type": "string"
}
},
"required": [
"name",
"git_url"
]
}🟢scalix_build_status(build_id)
Get the status and logs of a build.
输入模式
{
"type": "object",
"properties": {
"build_id": {
"description": "Build ID to check",
"type": "string"
}
},
"required": [
"build_id"
]
}🟡scalix_project_create(name, org_id, slug)
Create a new project within an organization. Returns the project ID, name, and slug. Issue an API key for the new project separately. Needs an admin API key: organization admin scope is never delegated to a connected app, so this tool fails on an OAuth connection.
输入模式
{
"type": "object",
"properties": {
"name": {
"description": "Project display name",
"type": "string"
},
"org_id": {
"description": "Organization ID",
"type": "string"
},
"slug": {
"description": "URL-safe project slug",
"type": "string"
}
},
"required": [
"org_id",
"name",
"slug"
]
}🟢scalix_project_list(org_id)
List every project in an organization, with each project's ID, name, and slug. Use this to resolve a project ID before calling project-scoped tools. Needs an admin API key: organization admin scope is never delegated to a connected app, so this tool fails on an OAuth connection.
输入模式
{
"type": "object",
"properties": {
"org_id": {
"description": "Organization ID whose projects to list",
"type": "string"
}
},
"required": [
"org_id"
]
}🔴scalix_auth_configure(allowed_providers, mfa_enabled, require_email_confirmation)
Configure end-user authentication for the project — require MFA, require email confirmation, and set the allowed auth providers. Needs an admin API key: organization admin scope is never delegated to a connected app, so this tool fails on an OAuth connection.
输入模式
{
"type": "object",
"properties": {
"allowed_providers": {
"description": "Allowed auth providers (e.g., [\"email\", \"google\", \"github\"])",
"items": {
"type": "string"
},
"type": "array"
},
"mfa_enabled": {
"description": "Require multi-factor authentication",
"type": "boolean"
},
"require_email_confirmation": {
"description": "Require users to confirm their email before a session is issued",
"type": "boolean"
}
}
}🟢scalix_status
Get the current health status of the Scalix Cloud platform including all service components.
输入模式
{
"type": "object",
"properties": {}
}🟡scalix_run_deploy(env, image, max_instances, min_instances, name, ...)
Deploy a long-running container service on Scalix Run from a container image. Creates a new service, or a new revision of an existing service with the same name, with health checks, a public HTTPS URL, and autoscaling between min_instances and max_instances (min 0 = scale-to-zero when idle). Billed per vCPU-hour while instances run. Roll back a bad revision with scalix_run_rollback.
输入模式
{
"type": "object",
"properties": {
"env": {
"description": "Environment variables as key-value pairs",
"type": "object"
},
"image": {
"description": "Container image from the Scalix registry ({registry}/{project_id}/{repo}:{tag}). External registries (Docker Hub, etc.) are NOT supported — build & push first with scalix_build_create.",
"type": "string"
},
"max_instances": {
"default": 10,
"description": "Maximum instances",
"type": "integer"
},
"min_instances": {
"default": 0,
"description": "Minimum instances (0 = scale to zero)",
"type": "integer"
},
"name": {
"description": "Service name",
"type": "string"
},
"port": {
"default": 8080,
"description": "Port the container listens on",
"type": "integer"
}
},
"required": [
"name",
"image"
]
}🟢scalix_run_list
List all deployed container services in the project.
输入模式
{
"type": "object",
"properties": {}
}🟡scalix_run_scale(id, max_instances, min_instances)
Change the autoscaling bounds of an existing Scalix Run service without redeploying it. Raising min_instances keeps instances warm (no cold starts, higher cost); min_instances 0 enables scale-to-zero when idle. Takes effect immediately. Find service IDs with scalix_run_list.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Service ID (from scalix_run_list)",
"type": "string"
},
"max_instances": {
"description": "New maximum instance count the service may scale up to",
"type": "integer"
},
"min_instances": {
"description": "New minimum instance count (0 = scale-to-zero when idle)",
"type": "integer"
}
},
"required": [
"id"
]
}🟢scalix_run_rollback(id, revision)
Roll a Scalix Run service back to an earlier revision — omit 'revision' to return to the immediately previous one. Traffic switches to the target revision; the replaced revision is kept and can be redeployed later. Use scalix_run_list to see services and their current revisions.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Service ID (from scalix_run_list)",
"type": "string"
},
"revision": {
"description": "Revision number to roll back to; omit for the immediately previous revision",
"type": "integer"
}
},
"required": [
"id"
]
}🔴scalix_run_delete(id)
Permanently delete a Scalix Run service. This cannot be undone: it stops the running instances, releases the public HTTPS URL, erases any attached volumes and discards every revision, so scalix_run_rollback cannot bring it back afterwards. To stop paying for an idle service without losing it, set min_instances to 0 with scalix_run_scale instead.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "Service ID (from scalix_run_list)",
"type": "string"
}
},
"required": [
"id"
]
}社区
证据