Fractera

Zero-Ops deploy of a private AI workspace to your own VPS — from your AI chat. Free and open-source.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
87%
命名质量
97%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~1,606token 数(工具定义)
~1.8 KB典型响应大小
对注意力有中等影响(占 128k 上下文窗口的 1.25%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "deploy": {
      "url": "https://www.fractera.ai/api/mcp"
    }
  }
}

远程端点

https://www.fractera.ai/api/mcpstreamable-http

它能做什么

工具清单

工具(6)

🟢 只读🟡 写入🔴 删除⚪ 未知
🔴register_and_deploy(email, email_confirmed, ip, password, login, ...)

Register a new Fractera user and start the deployment of their server in one atomic call. Use this AFTER you have collected the user's email (entered twice for typo protection), server IP, and root password. Creates the User row (or reuses an existing one with the same email), creates a free Subscription, creates a ServerToken, wipes any previous installation on the target server, and launches bootstrap. The deploy is IP-first (phase-1): the server comes up on plain HTTP at http://<IP>:3002 in 8-14 minutes; it does NOT get a domain or HTTPS cert here (that is an optional later step inside the workspace). Returns session_id (for a single on-demand check_status read — do not poll) and server_token (so the user can recover via retry_deploy if anything breaks). Call this AT MOST ONCE per conversation.

输入模式

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "The email the user typed (and confirmed by re-typing). Welcome / failure emails go here."
    },
    "email_confirmed": {
      "type": "boolean",
      "description": "REQUIRED, must be true. Set this ONLY after the user has typed their email a SECOND time (Q2) and the two entries match (case-insensitive, trimmed). Do not set it if you only asked once."
    },
    "ip": {
      "type": "string",
      "description": "IPv4 address of the user's VPS, e.g. 185.10.20.30."
    },
    "password": {
      "type": "string",
      "description": "Root password for the VPS."
    },
    "login": {
      "type": "string",
      "description": "Optional — defaults to \"root\". Override only if the VPS provider gave a non-root username."
    },
    "components_selected": {
      "type": "boolean",
      "description": "REQUIRED, must be true. Nothing is selectable any more — every server gets the same set — so this only records that you TOLD the user what gets installed (Q5): the app, the database and file storage with vector memory, sign-in, and the control panel."
    },
    "terms_accepted": {
      "type": "boolean",
      "description": "REQUIRED, must be true. Set this ONLY after the user has explicitly confirmed in the chat that they (1) have read and agree to Fractera's Terms of Service (https://www.fractera.ai/en/terms) and Privacy Policy (https://www.fractera.ai/en/privacy), and (2) understand they MUST change their server root password immediately after installation — Fractera never stores it and has no way to access the server afterwards. If the user has not given this explicit agreement, do NOT call this tool: ask for it first (and offer to explain the documents right in the chat)."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "es",
        "fr",
        "it",
        "ru",
        "de",
        "pt",
        "pl",
        "tr",
        "nl"
      ],
      "description": "Optional — the two-letter code of the language the user is talking to you in (e.g. \"ru\" if the conversation is in Russian). Their new app is built in English PLUS this language, and this language becomes its default; pass \"en\" or omit for an English-only app. Adding more languages later is a switch in the Admin panel, so this is not a permanent choice — it just means their site opens in their own language from the first minute."
    }
  },
  "required": [
    "email",
    "email_confirmed",
    "ip",
    "password",
    "components_selected",
    "terms_accepted"
  ]
}
🟢check_status(session_id)

Read the current installation progress ONCE, on demand. Call this only when the user explicitly asks how the deploy is going (e.g. "what is the status", "did it finish") — never on a timer and never in a polling loop. The deploy takes 8-14 minutes and the authoritative status channels are the email pipeline + the dashboard; one read on request is enough. Returns the current step, the list of completed steps (~44 total in a full bootstrap), and whether installation is done or failed.

输入模式

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "The session_id returned by register_and_deploy or retry_deploy."
    }
  },
  "required": [
    "session_id"
  ]
}
🟢get_subdomain(session_id)

Return the final entry address of the server once installation is complete. In phase-1 (IP-first) this is a plain-HTTP Admin URL of the form http://<IP>:3002 — the server has NO domain and NO HTTPS cert yet (attaching a custom domain with HTTPS is an optional later step the user does inside Admin -> Personal Domain). Call this once after check_status reports status="done".

输入模式

{
  "type": "object",
  "properties": {
    "session_id": {
      "type": "string",
      "description": "The session_id used during installation."
    }
  },
  "required": [
    "session_id"
  ]
}
🔴retry_deploy(server_token, ip, login, password)

Retry a failed deployment using a server_token (from the failure email, the deploy-progress UI, or the dashboard). Wipes the previous broken install and runs a fresh deploy on the SAME server. Returns a new session_id — poll with check_status. Use this when the user reports a failed deploy or pastes a server_token.

输入模式

{
  "type": "object",
  "properties": {
    "server_token": {
      "type": "string",
      "description": "The unique server token the user received in the deploy-failure email, the active deploy UI, or the dashboard. Acts as the authorisation for this retry."
    },
    "ip": {
      "type": "string",
      "description": "Optional — only pass if the user discovered the original IP was wrong (e.g. typo). Otherwise the stored IP is used."
    },
    "login": {
      "type": "string",
      "description": "Optional — Linux user, defaults to root."
    },
    "password": {
      "type": "string",
      "description": "Optional — only pass if the user discovered the original password was wrong. Otherwise the stored password is used."
    }
  },
  "required": [
    "server_token"
  ]
}
🟢get_vps_recommendation

Return a single recommended VPS provider for users who do not yet have a server. Call this ONLY when the user explicitly says they have no server. The user buys the VPS at this provider and comes back with IP + password.

输入模式

{
  "type": "object",
  "properties": {},
  "required": []
}
🟢get_project_info(section, lang)

Project reference / help desk about Fractera. Use this to answer ANY user question about what Fractera is, how it works, its architecture, components, modes, data ownership, pricing, use cases, partner program, etc. — especially while a deploy is running and the user wants to learn more. TOKEN-ECONOMY: call with NO arguments first to get the lightweight list of section ids+titles, then call again with a single `section` id to fetch just that section. NEVER try to fetch everything at once; pull only the section(s) relevant to the user question. Set `lang:"ru"` for Russian-speaking users.

输入模式

{
  "type": "object",
  "properties": {
    "section": {
      "type": "string",
      "description": "A section id from the list returned when called with no section. Omit to get the list (table of contents) first."
    },
    "lang": {
      "type": "string",
      "enum": [
        "en",
        "ru"
      ],
      "description": "Language of the returned content. Defaults to \"en\". Use \"ru\" for Russian-speaking users."
    }
  },
  "required": []
}

社区

评价此服务器

证据

最近观测

已验证未记录版本6 个工具
已验证未记录版本6 个工具
已验证未记录版本6 个工具