SDK 및 MCP

SDK 및 MCP

8개의 공식 언어 SDK (Node, Python, Go, Rust, Ruby, PHP, Swift, Kotlin)와 AI 에이전트용 MCP 서버 — 설치 경로, 패키지 매니저 링크 및 스택별 빠른 시작 스니펫.

마지막 업데이트:

FloopFloop SDKs & MCP

FloopFloop는 8개의 공식 언어 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를 MCP 지원 LLM 호스트가 호출할 수 있는 23개의 도구로 래핑합니다.

도구는 전체 프로젝트 라이프사이클을 지원합니다: 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을 재시작한 후 “FloopFloop 사이트를 <X>로 만들어줘”라고 요청하십시오.

플레이북을 위한 floop-skills와 함께 사용하기

MCP는 기능을 제공하며, floop-skills는 어떤 도구를 어떤 순서로, 어떤 인수로 호출해야 하는지 설명하는 워크플로우가 담긴 드롭인 Anthropic 스타일 마크다운 스킬을 제공합니다. 최상의 에이전트 경험을 위해 두 가지 모두 설치하십시오:

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

8개 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);

링크: npm · GitHub · cookbook

Python — floopfloop

Python 3.10+. httpx.Client 기반의 동기 FloopClient httpx.AsyncClient 기반의 비동기 AsyncFloopClient— 동일한 9개의 리소스 접근자, 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 첫 번째 인수, 타입된 코드 필드를 가진 *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 불필요), 이름 있는 인수 친화적 생성자, 타입된 코드를 가진 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 tags · 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는 CLI가 대화형 로그인에 사용하는 디바이스 토큰과 구별되는 프로그래매틱 flp_… API 키를 인증에 사용합니다. API 키 발급에는 Business 플랜이 필요합니다.계정 → API 키에서 키를 발급하고, 시크릿 매니저/환경에 저장한 후 SDK 생성자에 전달하십시오.

전체 키 모델(범위, 요청 한도, 교체 패턴)은 API 인증을 참조하십시오.

소스 & 릴리스

8개의 SDK 저장소와 MCP 및 스킬은 모두 github.com/FloopFloopAI에서 MIT 라이선스로 오픈소스로 공개되어 있습니다. 각 릴리스는 태그 푸시 시 해당 언어의 표준 레지스트리(npm, PyPI, crates.io, RubyGems, Packagist, Go modules, JitPack, SPM tags)로 배포됩니다. 각 저장소의 SDK별 CHANGELOG; 크로스 SDK 릴리스 조율은 모노레포에서 추적합니다.