Poof Background Removal MCP Server
This server lets AI assistants remove image backgrounds and check Poof account credits.
remove_background: Remove background from an image supplied as a base64 string or URL.
Choose output format: png, jpg, or webp.
Output rgba (transparent) or rgb (opaque, with optional bg_color).
Resize via size presets (full, preview, medium, hd) or exact width/ height.
Fit behavior with fit: contain, cover, or scale-down.
Optionally crop to subject bounds.
get_account: Show account plan, credit usage, remaining credits, and auto-recharge threshold.
Supports local stdio and remote HTTP/Cloudflare Worker transports.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Poof Background Removal MCP Serverremove the background from https://example.com/portrait.jpg"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@poof-bg/mcp
MCP (Model Context Protocol) server for the Poof background removal API. Use AI assistants like Claude to remove backgrounds from images.
Migrating from remove.bg? It shuts down on 1 December 2026 — see the remove.bg alternative and migration guide.
Features
remove_background - Remove background from images (accepts base64 or URL)
get_account - Check your account info and credit balance
Supports both stdio (local) and HTTP (remote/Cloudflare Worker) transports
Related MCP server: simplypng-mcp
Installation
Local (stdio transport)
npm install -g @poof-bg/mcpOr install locally:
git clone https://github.com/poof-bg/mcp.git
cd mcp
npm install
npm run buildRemote (HTTP transport via Cloudflare Worker)
The Poof MCP server can be deployed as a Cloudflare Worker, allowing remote access via HTTP.
Configuration
Environment Variable
Set your Poof API key:
export POOF_API_KEY=your_api_key_hereGet your API key at dash.poof.bg
Claude Code
OAuth (recommended)
claude mcp add --transport http poof https://api.poof.bg/mcpAPI Key
claude mcp add --transport http poof https://api.poof.bg/mcp \
--header "x-api-token: YOUR_POOF_API_KEY"Claude Desktop
Add to your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Option 1: Remote with OAuth (recommended)
{
"mcpServers": {
"poof": {
"url": "https://api.poof.bg/mcp"
}
}
}Option 2: Local (stdio transport)
{
"mcpServers": {
"poof": {
"command": "npx",
"args": ["-y", "@poof-bg/mcp"],
"env": {
"POOF_API_KEY": "your_api_key_here"
}
}
}
}Option 3: Remote with API key
{
"mcpServers": {
"poof": {
"url": "https://api.poof.bg/mcp",
"headers": {
"x-api-token": "YOUR_POOF_API_KEY"
}
}
}
}Cursor
Add to .cursor/mcp.json in your project root (or global config):
OAuth (recommended)
{
"mcpServers": {
"poof": {
"url": "https://api.poof.bg/mcp"
}
}
}Local (stdio)
{
"mcpServers": {
"poof": {
"command": "npx",
"args": ["-y", "@poof-bg/mcp"],
"env": {
"POOF_API_KEY": "your_api_key_here"
}
}
}
}Remote with API key
{
"mcpServers": {
"poof": {
"url": "https://api.poof.bg/mcp",
"headers": {
"x-api-token": "YOUR_POOF_API_KEY"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
OAuth (recommended)
{
"mcpServers": {
"poof": {
"serverUrl": "https://api.poof.bg/mcp"
}
}
}Local (stdio)
{
"mcpServers": {
"poof": {
"command": "npx",
"args": ["-y", "@poof-bg/mcp"],
"env": {
"POOF_API_KEY": "your_api_key_here"
}
}
}
}Remote with API key
{
"mcpServers": {
"poof": {
"serverUrl": "https://api.poof.bg/mcp",
"headers": {
"x-api-token": "YOUR_POOF_API_KEY"
}
}
}
}VS Code + Copilot
Add to your VS Code settings.json:
OAuth (recommended)
{
"mcp": {
"servers": {
"poof": {
"url": "https://api.poof.bg/mcp"
}
}
}
}Local (stdio)
{
"mcp": {
"servers": {
"poof": {
"command": "npx",
"args": ["-y", "@poof-bg/mcp"],
"env": {
"POOF_API_KEY": "your_api_key_here"
}
}
}
}
}Remote with API key
{
"mcp": {
"servers": {
"poof": {
"url": "https://api.poof.bg/mcp",
"headers": {
"x-api-token": "YOUR_POOF_API_KEY"
}
}
}
}
}Cline (VS Code Extension)
Open Cline settings and add to the MCP Servers configuration:
OAuth (recommended)
{
"poof": {
"url": "https://api.poof.bg/mcp"
}
}Local (stdio)
{
"poof": {
"command": "npx",
"args": ["-y", "@poof-bg/mcp"],
"env": {
"POOF_API_KEY": "your_api_key_here"
}
}
}Remote with API key
{
"poof": {
"url": "https://api.poof.bg/mcp",
"headers": {
"x-api-token": "YOUR_POOF_API_KEY"
}
}
}Tools
remove_background
Remove the background from an image.
Parameters:
Parameter | Type | Required | Description |
| string | Yes | Base64-encoded image or URL to an image |
| string | No | Output format: |
| string | No | Color channels: |
| string | No | Background color when using |
| string | No | Output size preset: |
| boolean | No | Crop to subject bounds (default: |
| integer | No | Output width in pixels (1-6000). Alone, the height follows the aspect ratio |
| integer | No | Output height in pixels (1-6000). Alone, the width follows the aspect ratio |
| string | No | How to fit into |
Example prompts:
Remove the background from this image: https://example.com/photo.jpg
Remove the background and add a white background instead
Remove the background and give me a 500x500 image with the product centredget_account
Get your account information and credit balance.
Example prompts:
Check my Poof account balance
How many credits do I have left?Response:
{
"success": true,
"data": {
"organizationId": "org_abc123",
"plan": "Pro",
"maxCredits": 5000,
"usedCredits": 1234,
"remainingCredits": 3766,
"autoRechargeThreshold": 100
}
}Development
# Install dependencies
npm install
# Build
npm run build
# Run in dev mode (Cloudflare Worker)
npm run dev
# Run locally (stdio mode)
POOF_API_KEY=your_key npm start
# Lint
npm run lint
# Format
npm run formatDeployment (Cloudflare Worker)
To deploy the MCP server as a Cloudflare Worker:
# Install Wrangler if you haven't already
npm install -g wrangler
# Login to Cloudflare
wrangler login
# Deploy
wrangler deploySet the required environment secrets:
wrangler secret put POOF_API_KEY
wrangler secret put MCP_JWT_SECRET
wrangler secret put COOKIE_ENCRYPTION_KEYAlso set the dashboard URL variable:
wrangler secret put DASHBOARD_URLYou'll also need to create a KV namespace for OAuth state storage and update the IDs in wrangler.toml:
wrangler kv namespace create OAUTH_KV
wrangler kv namespace create OAUTH_KV --previewLicense
MIT
Links
Available Tools
2 toolsget_accountB
Get account information including plan details and credit usage
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Get' implies a read operation, the description doesn't specify whether this requires authentication, has rate limits, returns real-time or cached data, or what format the information comes in. For a tool with zero annotation coverage, this represents significant gaps in behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise - a single sentence that efficiently communicates the tool's purpose without any wasted words. It's front-loaded with the core functionality and includes specific details about what information is retrieved.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read operation with no parameters, the description covers the basic purpose adequately. However, with no annotations and no output schema, the description doesn't address important behavioral aspects like authentication requirements, response format, or data freshness. The description is complete enough for the tool's simplicity but leaves gaps in operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description appropriately doesn't discuss parameters since none exist. A baseline of 4 is appropriate for a zero-parameter tool where the schema fully documents the parameter situation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('account information'), including what information is retrieved ('plan details and credit usage'). It doesn't differentiate from its only sibling 'remove_background', but that's reasonable since they serve completely different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. While there's only one sibling tool ('remove_background') that serves a completely different purpose, the description doesn't mention any prerequisites, constraints, or contextual factors for using this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_backgroundA
Remove the background from an image. Returns the processed image as base64. Accepts URL or base64-encoded image. Can also resize the result to an exact width x height without stretching (width, height, fit).
| Name | Required | Description | Default |
|---|---|---|---|
| fit | No | How to fit the image into width x height. 'contain' pads the remaining area (transparent or bg_color), 'cover' fills the canvas and crops the overflow around the subject, 'scale-down' is like contain but never enlarges a smaller image | contain |
| crop | No | Whether to crop the image to the subject bounds | |
| size | No | Output image size preset (megapixel cap). Ignored when width or height is set | full |
| image | Yes | Image input: base64-encoded image data or a URL to an image | |
| width | No | Output width in pixels. On its own, the height follows the aspect ratio. With height, the image is fitted into an exact width x height canvas without stretching | |
| format | No | Output image format | png |
| height | No | Output height in pixels. On its own, the width follows the aspect ratio. With width, the image is fitted into an exact width x height canvas without stretching | |
| bg_color | No | Background color (hex, rgb, or color name). Only applies when channels is 'rgb'. Example: '#ffffff' | |
| channels | No | Output color channels. Use 'rgba' for transparency, 'rgb' for opaque background | rgba |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose key behavioral traits: 'Returns the processed image as base64' and 'Accepts URL or base64-encoded image.' However, it does not mention potential error conditions, limits, side effects, or whether the operation is stateless. It adds some behavioral transparency but not comprehensive context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary purpose is front-loaded, followed by output format, input types, and optional resizing capability. Every sentence contributes useful information, and the structure makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters and no output schema, the description provides a complete high-level view: what it does, accepted inputs, return format, and the key resizing behavior. The schema supplies detailed parameter semantics, so the description need not repeat them. It lacks explicit error handling or limitations, but the essential information for correct invocation is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions width, height, and fit in passing but does not add meaning beyond the schema's detailed parameter descriptions. The schema already fully documents each parameter, so the description adds minimal additional semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Remove the background from an image.' It clearly distinguishes itself from the only sibling, get_account, which serves a completely different purpose. The statement is unambiguous and instantly conveys the tool's core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use the tool: whenever background removal is needed. It states the accepted input types (URL or base64) and the available resizing behavior, giving enough context for an agent to select it. It does not explicitly mention when not to use it or list alternatives, but no close alternatives exist among siblings, so this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.2.0- Changed
remove_background5 fields changed- added
Input schema / properties / fitAdded value: +{ + "default": "contain", + "description": "How to fit the image into width x height. 'contain' pads the remaining area (transparent or bg_color), 'cover' fills the canvas and crops the overflow around the subject, 'scale-down' is like contain but never enlarges a smaller image", + "enum": [ + "contain", + "cover", + "scale-down" + ], + "type": "string" +} - added
Input schema / properties / heightAdded value: +{ + "description": "Output height in pixels. On its own, the width follows the aspect ratio. With width, the image is fitted into an exact width x height canvas without stretching", + "maximum": 6000, + "minimum": 1, + "type": "integer" +} - changed
Input schema / properties / size / descriptionPrevious value: -"Output image size preset"New value: +"Output image size preset (megapixel cap). Ignored when width or height is set" - changed
Input schema / properties / size / enumPrevious value: -[ - "full", - "preview", - "small", - "medium", - "large" -]New value: +[ + "full", + "preview", + "medium", + "hd" +] - added
Input schema / properties / widthAdded value: +{ + "description": "Output width in pixels. On its own, the height follows the aspect ratio. With height, the image is fitted into an exact width x height canvas without stretching", + "maximum": 6000, + "minimum": 1, + "type": "integer" +}
2 tool updates
v1.1.0- First observed
get_account - First observed
remove_background
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one handles account/plan information and the other performs the core background removal operation. There is no overlap or ambiguity between them.
Both tools follow a consistent verb_noun snake_case pattern: get_account and remove_background. The naming is predictable and immediately conveys each tool's action and target.
With only two tools, the server feels minimal but appropriate for a focused single-purpose service. The account tool supports the main workflow, yet the surface is borderline thin compared to the typical well-scoped range.
The core background removal workflow is fully covered, including input via URL or base64 and optional resizing. Account and credit information is also available, though there are minor missing conveniences such as batch processing or output format options.
Maintenance
Related MCP Connectors
AI-powered image processing via GPU. Remove backgrounds and upscale images (2x/4x) directly from any MCP client. OAuth 2.1 authenticated, returns processed images inline with download links. Free credits on signup at maskr.io.
Image and video AI tools and your own pipelines, run from any AI assistant.
Image & PDF tools for AI agents: compress, convert, resize, PDF, AI vision, pipeline.
Removes the background from an image by URL, cutting out the foreground person or object with AI and
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI-powered background removal from images using multiple specialized models including u2net, birefnet, and isnet. Supports both single image processing and batch folder operations with advanced options like alpha matting and mask-only output.24MIT

simplypng-mcpofficial
AlicenseAqualityCmaintenanceMCP server for SimplyPNG background removal APIs. Enables AI agents to remove backgrounds from images, estimate credits, check job status, and download results programmatically.517 npmMIT- AlicenseAqualityBmaintenanceEnables background removal and upscaling of images using Recraft models via RunAPI, with task polling and pricing lookup.562 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to interactively remove image backgrounds using a Paint.NET-style magic wand tool with live visual feedback and precision helpers.MIT