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

@spronta/mcp

v0.1.3

Published

Spronta Image CDN — MCP server for LLM integrations. Upload, transform, and deliver images via AI agents.

Readme

@spronta/mcp

MCP server for uploading, transforming, and serving images on a global CDN — directly from AI assistants.

Connect Claude, GPT, Cursor, Windsurf, or any MCP-compatible client to the Spronta Image CDN. Upload images from URLs or base64, apply real-time transforms (resize, crop, format conversion, smart crop, blurhash), create reusable presets, generate signed URLs, and monitor usage — all through natural language.

Why use this?

  • Upload images from AI — give your LLM an image URL and it uploads, optimizes, and returns a CDN link
  • Real-time transforms — resize, crop, convert to WebP/AVIF/JXL, smart crop with face detection
  • Global CDN delivery — images served from edge locations worldwide
  • Blurhash generation — automatic blur placeholders computed on upload
  • Signed URLs — HMAC-SHA256 signed URLs with expiration for private images
  • Named presets — create reusable transform configurations (e.g. thumbnail, hero, og-image)
  • No vendor lock-in — MIT licensed, open source

Quick start

Install

npm install -g @spronta/mcp
# or use directly
npx @spronta/mcp

Claude Code

claude mcp add spronta \
  -e SPRONTA_API_KEY=spronta_img_... \
  -e SPRONTA_PROJECT_ID=your-project-id \
  -- npx @spronta/mcp

Claude Desktop / Cursor / Windsurf

Add to your MCP configuration file:

{
  "mcpServers": {
    "spronta": {
      "command": "npx",
      "args": ["@spronta/mcp"],
      "env": {
        "SPRONTA_API_KEY": "spronta_img_...",
        "SPRONTA_PROJECT_ID": "your-project-id"
      }
    }
  }
}

Get your API key

  1. Sign up at app.spronta.com (free tier: 100 images)
  2. Create a project in the dashboard
  3. Copy your API key from project settings

Environment variables

| Variable | Required | Description | |----------|----------|-------------| | SPRONTA_API_KEY | Yes | Your project API key | | SPRONTA_PROJECT_ID | No | Default project ID (can also be passed per-tool) | | SPRONTA_API_URL | No | API base URL (default: https://app.spronta.com/api) |

18 tools available

Projects

| Tool | Description | |------|-------------| | list_projects | List all image projects | | create_project | Create a new project | | get_project | Get project details with usage stats | | update_project | Update name or custom domain | | delete_project | Permanently delete a project |

Upload & Images

| Tool | Description | |------|-------------| | upload_image | Upload from URL or base64 — handles presigned upload, blurhash generation, and CDN URL creation in one call | | list_images | List images with pagination | | update_image | Update alt text and tags | | delete_image | Delete an image from CDN and storage |

Transform Presets

| Tool | Description | |------|-------------| | list_presets | List named transform presets | | create_preset | Create a preset (use in CDN URLs with ?t=name) | | update_preset | Update a preset's name or transforms | | delete_preset | Delete a preset |

URL Signing

| Tool | Description | |------|-------------| | get_signing_config | Get URL signing configuration | | update_signing | Enable/disable HMAC-SHA256 signing | | generate_signed_url | Generate a signed CDN URL with optional expiration |

Analytics & Utility

| Tool | Description | |------|-------------| | get_usage | Get daily metrics (requests, bandwidth, transforms) | | build_cdn_url | Build a CDN URL with transform parameters (no API call) |

Example prompts

Once connected, just ask your AI:

> Upload this image to my project: https://example.com/photo.jpg

> Create a thumbnail preset: 200x200, cover crop, face detection, webp format

> How many requests did my project handle this week?

> Generate a signed URL for hero.jpg that expires in 1 hour

> List all my images and update the alt text on the product shots

> Build a CDN URL for banner.png at 1200px wide in avif format

Transform options

When creating presets or building URLs, these transforms are available:

| Parameter | Type | Description | |-----------|------|-------------| | width | integer | Output width (1–8192) | | height | integer | Output height (1–8192) | | fit | string | cover, contain, fill, scale-down, crop, pad | | format | string | auto, webp, avif, jpeg, png, jxl | | quality | integer | 1–100 | | qualityMode | string | high, medium, low (perceptual targeting) | | gravity | string | auto, face, center, position keywords | | blur | integer | Gaussian blur (1–250) | | sharpen | number | Unsharp mask (0–10) | | radius | integer | Corner radius (1–9999, or "max" for circle) | | grayscale | boolean | Convert to grayscale | | brightness | integer | -100 to 100 | | contrast | number | -100 to 100 | | saturation | integer | -100 to 100 | | sepia | boolean | Sepia tone filter | | rotate | integer | 90, 180, 270 | | flip | string | h (horizontal), v (vertical) |

How upload works

The upload_image tool handles the full upload pipeline in a single call:

  1. You provide an image URL (or base64 data) and a filename
  2. The server fetches the image
  3. Requests a presigned upload URL from Spronta
  4. Uploads the file directly to storage
  5. Confirms the upload — Spronta computes the blurhash and detects dimensions
  6. Returns the confirmed image with CDN URL, blurhash, and metadata

Related packages

Links

License

MIT