npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@floopfloop/mcp

v0.1.0-alpha.6

Published

MCP server for the FloopFloop API — let Claude Desktop, Cursor, and other LLM hosts build and refine FloopFloop projects

Readme

@floopfloop/mcp

npm version npm downloads CI Node.js Version License: MIT

Model Context Protocol server for the FloopFloop API — lets Claude Desktop, Cursor, Zed, and any other MCP-aware LLM host build, poll, and refine FloopFloop projects on the user's behalf.

Wraps the official @floopfloop/sdk and exposes a curated subset of its surface as MCP tools.

Tools

| Tool | What it does | |----------------------|---------------------------------------------------| | list_projects | List every project you have access to | | get_project | Fetch a project by id or subdomain | | project_status | Cheap status snapshot — safe to poll | | create_project | Kick off a new build from a natural-language prompt | | refine_project | Send a refinement message to an existing project | | wait_for_live | Block until the project reaches a terminal state | | cancel_project | Stop a queued or in-progress build | | reactivate_project | Resume a cancelled / archived project | | get_conversations | Read a project's message timeline (prompts + replies + deploy markers) | | check_subdomain | Is a given slug available? | | suggest_subdomain | Generate a friendly slug from a prompt | | list_secrets | List secret keys on a project (names only) | | set_secret | Create/overwrite a project secret | | remove_secret | Delete a project secret | | list_library_projects| Browse the public project library | | clone_library_project| Duplicate a library project into the user's account | | usage_summary | Plan limits + current-period credit / build / storage usage | | list_api_keys | List the user's API keys (never returns the raw secret) | | create_api_key | Mint a new API key — raw secret returned ONCE | | remove_api_key | Revoke an API key by id or name | | upload_from_path | Read a local file, presign + upload to S3, return an attachment ref | | whoami | Show the authenticated user | | current_subscription | Plan tier + credit balance (price, billing period, current/rolled-over credits) |

Configuration

Grab an API key: floop keys create mcp-host (via the floop CLI) or the dashboard → Account → API Keys. Business plan required to mint new keys.

The server reads FLOOP_API_KEY from the environment. Optionally override FLOOP_API_URL to point at staging.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %AppData%\Claude\claude_desktop_config.json (Windows):

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

Restart Claude Desktop; the tools show up under the 🔌 icon.

Cursor

~/.cursor/mcp.json (or Cursor Settings → Tools & Integrations → MCP):

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

Generic MCP host

Any host that speaks the MCP stdio transport can run the server:

FLOOP_API_KEY=flp_... npx -y @floopfloop/mcp

Install

The package is pulled in automatically via npx -y @floopfloop/mcp in the config snippets above. If you prefer a pinned install:

npm install -g @floopfloop/mcp
which floop-mcp

Usage notes

  • create_project starts a build right away. Follow up with wait_for_live (blocks) or project_status (poll) to know when it's up.
  • wait_for_live defaults to a 10-minute ceiling (bounded by timeoutMs, capped at 30 min). Most builds finish in under two minutes.
  • upload_from_pathrefine_project is the canonical attachment flow: call upload_from_path with a local file, get back an UploadedAttachment ({key, fileName, fileType, fileSize}), then pass it as attachments: [<that object>] on refine_project. The LLM host's process needs read access to the file path; max 5 MB.
  • refine_project codeEditOnly: true runs a 3-step in-place patch instead of a full 6-step rebuild and charges roughly half the credits — use it for copy edits, colour swaps, or typo fixes on a project that's already live. The backend won't promote a code-edit to a full refinement automatically, so prefer plain refine_project when the change actually needs redesign.
  • cancel_projectreactivate_project is the abort/redo pattern. cancel_project is destructiveHint: true; hosts should confirm before calling it. reactivate_project triggers a fresh build at the project's most recent prompt.
  • set_secret / remove_secret are marked destructiveHint: true — hosts may ask the user to confirm before they run.
  • list_secrets only returns names, never values. Secret values cannot be retrieved once written; rotate them by re-setting.
  • On failure, tools return an MCP isError content result rather than tearing down the session, so the host displays the error to the user.

Development

git clone https://github.com/FloopFloopAI/floop-mcp.git
cd floop-mcp
npm install
npm run typecheck
npm run build

FLOOP_API_KEY=flp_... node dist/index.js

To smoke-test the stdio handshake without an LLM host:

printf '%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
  | FLOOP_API_KEY=flp_dummy node dist/index.js 2>/dev/null

Releasing

.github/workflows/release.yml publishes to npm with provenance whenever a tag matching mcp-v* is pushed. One-time setup before the first release:

  1. Create an automation npm token on the @floopfloop scope (publishes bypass 2FA by design when tokens are marked automation).
  2. Add it as the repo secret NPM_TOKEN:
    gh secret set NPM_TOKEN --repo FloopFloopAI/floop-mcp
    # paste token when prompted — do NOT use --body, which can leak it to
    # shell history.
  3. Tag + push:
    npm version 0.1.0-alpha.1 --no-git-tag-version  # if needed
    git tag mcp-v$(node -p "require('./package.json').version")
    git push --follow-tags

The workflow typechecks, builds, runs the stdio smoke test, verifies the tag matches package.json, then publishes and cuts a GitHub Release (prerelease, auto-generated notes).

License

MIT