SDK 与 MCP

SDK 和 MCP

八个官方语言 SDK(Node、Python、Go、Rust、Ruby、PHP、Swift、Kotlin)以及面向 AI 智能体的 MCP 服务器 — 安装路径、包管理器链接和按技术栈的快速入门片段。

最后更新:

FloopFloop SDK & MCP

FloopFloop 提供八个官方语言 SDK 以及一个面向 AI 代理的 MCP 服务器。所有端点均指向同一个 /api/v1/* 后端 — 因此通过 Node SDK 创建的项目与通过 MCP 运行的 LLM 所看到的项目完全一致,字节级相同。

根据您的技术栈选择合适的方式:

  • 构建应用或后端? 使用适合您语言的 SDK。
  • 构建 AI 代理/聊天机器人? 配合 Claude Desktop、Cursor、Zed、Copilot CLI 或任何支持 MCP 的宿主,使用 @floopfloop/mcp 服务器。
  • 从终端驱动? 使用 FloopFloop CLI

MCP 服务器 — 面向 AI 代理

@floopfloop/mcp— Model Context Protocol 服务器。将 FloopFloop API 封装为 23 个工具,任何支持 MCP 的 LLM 宿主均可调用。

工具覆盖完整的项目生命周期:create_project refine_projectupload_from_path(附件)、cancel_project reactivate_projectwait_for_live list_secrets / set_secret / remove_secretlist_library_projects / clone_library_project current_subscriptionusage_summary, 以及子域名检查和 API 密钥管理。每个工具均为只读或标记了 destructiveHint,以便宿主在改变状态前提示用户。

Claude Desktop 配置片段

{
  "mcpServers": {
    "floopfloop": {
      "command": "npx",
      "args": ["-y", "@floopfloop/mcp"],
      "env": { "FLOOP_API_KEY": "flp_..." }
    }
  }
}

将以上内容添加至 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows), 重启 Claude Desktop,然后尝试问 “为 <X> 创建一个 FloopFloop 网站”。

与 floop-skills 配合使用以获取操作手册

MCP 提供能力floop-skills 提供即插即用的 Anthropic 风格 Markdown 技能,讲解工作流 — 按什么顺序调用哪个工具,以及需要传入哪些参数。 同时安装两者可获得最佳的代理体验:

mkdir -p ~/.claude/skills
git clone https://github.com/FloopFloopAI/floop-skills.git /tmp/floop-skills
cp -r /tmp/floop-skills/skills/* ~/.claude/skills/

链接: npm · GitHub · floop-skills

语言 SDK

八个 SDK 拥有相同的接口:client.projects.create() refinewaitForLive / 流式传输、 secretsuploadslibrary apiKeyssubscriptions.current usage.summarysubdomains user.me。每个 SDK 遵循各自语言的惯用风格 (Python 支持同步和异步,Kotlin 使用 Flow, Swift 使用 AsyncThrowingStream等), 但网络协议 — 错误码、响应信封、终态语义 — 完全一致。

Node / TypeScript — @floopfloop/sdk

Node 20+。原生 fetch,完整 TypeScript 类型, 支持流式传输的 AsyncIterator。这是标准 SDK; MCP 服务器直接封装此 SDK。

npm install @floopfloop/sdk

import { FloopClient } from "@floopfloop/sdk";

const floop = new FloopClient({ apiKey: process.env.FLOOP_API_KEY! });
const { project } = await floop.projects.create({
  prompt: "a cat-cafe blog with three sample posts",
});
const live = await floop.projects.waitForLive(project.id);
console.log(live.url);

链接: npm · GitHub · cookbook

Python — floopfloop

Python 3.10+。基于 httpx.Client 的同步 FloopClient 以及基于 httpx.AsyncClient 的异步 AsyncFloopClient— 相同的九个资源访问器, 支持在 projects.stream 上使用 async for

pip install floopfloop

from floopfloop import FloopClient

floop = FloopClient(api_key=os.environ["FLOOP_API_KEY"])
created = floop.projects.create(prompt="a cat cafe landing page")
live = floop.projects.wait_for_live(created["project"]["id"])
print(live["url"])

链接: PyPI · GitHub · cookbook

Go — github.com/FloopFloopAI/floop-go-sdk

Go 1.22+。第一个参数为惯用的 context.Context, 带类型化 code 字段的 *Error, 以及适合通道的流式传输。

go get github.com/FloopFloopAI/floop-go-sdk@latest

client := floop.NewClient(os.Getenv("FLOOP_API_KEY"))
res, err := client.Projects.Create(ctx, floop.CreateProjectInput{
    Prompt: "a cat cafe landing page",
})
if err != nil { log.Fatal(err) }
live, err := client.Projects.WaitForLive(ctx, res.Project.ID, nil)
fmt.Println(live.URL)

链接: pkg.go.dev · GitHub · cookbook

Rust — floopfloop

Rust 2021 / 1.75+。基于 tokio 的异步,客户端使用构建者模式, 类型化的 FloopErrorCode 枚举, 每个方法返回 Result<T, FloopError>

# Cargo.toml
floopfloop = "0.1.0-alpha.4"

use floopfloop::{Client, CreateProjectInput};

let client = Client::new(std::env::var("FLOOP_API_KEY")?)?;
let res = client.projects().create(CreateProjectInput {
    prompt: "a cat cafe landing page".into(),
    ..Default::default()
}).await?;
let live = client.projects().wait_for_live(&res.project.id, None).await?;
println!("{}", live.url.unwrap_or_default());

链接: crates.io · docs.rs · GitHub · cookbook

Ruby — floopfloop

Ruby 3.0+。Net::HTTP 传输,基于哈希的响应 (无强制类型封装),流式传输使用块传参。

gem install floopfloop

require "floopfloop"

client = FloopFloop::Client.new(api_key: ENV.fetch("FLOOP_API_KEY"))
res = client.projects.create(prompt: "a cat cafe landing page")
live = client.projects.wait_for_live(res["project"]["id"])
puts live["url"]

链接: RubyGems · GitHub · cookbook

PHP — floopfloop/sdk

PHP 8.1+。纯标准库传输(无需 ext-curl), 支持命名参数的构造函数,带类型化 code 的 FloopFloop\Error 异常类。

composer require floopfloop/sdk

$client = new FloopFloop\Client(apiKey: getenv('FLOOP_API_KEY'));
$res = $client->projects()->create(prompt: 'a cat cafe landing page');
$live = $client->projects()->waitForLive($res['project']['id']);
echo $live['url'];

链接: Packagist · GitHub · cookbook

Swift — FloopFloop(SPM)

Swift 5.9+。全面使用 async/awaitCodable 类型,流式传输使用 AsyncThrowingStream。 支持 iOS 17+ / macOS 14+ / tvOS 17+ / watchOS 10+ / visionOS 1+。当前支持服务端/桌面;移动应用分发需要后端不同的授权流程(路线图)。

// Package.swift
.package(url: "https://github.com/FloopFloopAI/floop-swift-sdk.git", from: "0.1.0-alpha.2")

import FloopFloop

let client = FloopFloop(apiKey: ProcessInfo.processInfo.environment["FLOOP_API_KEY"]!)
let res = try await client.projects.create(.init(prompt: "a cat cafe landing page"))
let live = try await client.projects.waitForLive(res.project.id)
print(live.url ?? "")

链接: SPM 标签 · GitHub · cookbook

Kotlin / JVM — floop-kotlin-sdk

Kotlin 2.0+ / JVM 11+。OkHttp + kotlinx-serialization + kotlinx-coroutines。全面使用 suspend 函数; 通过冷 Flow<StatusEvent> 实现流式传输。 JitPack 分发(计划迁移至 Maven Central)。

// build.gradle.kts
repositories {
    maven("https://jitpack.io")
}
dependencies {
    implementation("com.github.FloopFloopAI:floop-kotlin-sdk:0.1.0-alpha.3")
}

import com.floopfloop.sdk.FloopFloop
import com.floopfloop.sdk.resources.CreateProjectInput

val client = FloopFloop(apiKey = System.getenv("FLOOP_API_KEY"))
val res = client.projects.create(CreateProjectInput(prompt = "a cat cafe landing page"))
val live = client.projects.waitForLive(res.project.id)
println(live.url)

链接: JitPack · GitHub · cookbook

API 密钥

所有 SDK 均使用程序化的 flp_… API 密钥进行身份验证, 与 CLI 用于交互式登录的设备令牌不同。API 密钥的申请需要商业计划。 请从 账户 → API 密钥 创建密钥, 将其存储在您的密钥管理器/环境变量中,并传入 SDK 构造函数。

有关完整的密钥模型(作用域、速率限制、轮换模式),请参阅 API 身份验证

源码 & 发布

全部八个 SDK 仓库以及 MCP 和 skills 均以 MIT 许可证开源, 托管于 github.com/FloopFloopAI。 每次发布在标签推送时自动发布到各语言的标准注册表 (npm、PyPI、crates.io、RubyGems、Packagist、Go modules、 JitPack、SPM 标签)。每个仓库中有各自的 CHANGELOG; 跨 SDK 的发布协调在 monorepo 中追踪。