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_project、upload_from_path(附件)、cancel_project、 reactivate_project、wait_for_live、 list_secrets / set_secret / remove_secret、list_library_projects / clone_library_project、 current_subscription、usage_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()、 refine、waitForLive / 流式传输、 secrets、uploads、library、 apiKeys、subscriptions.current、 usage.summary、subdomains、 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);
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"])
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/await,Codable 类型,流式传输使用 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)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 中追踪。