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

@utilix-tech/mcp

v0.47.0

Published

MCP server exposing 175 Utilix developer tools to Claude, Cursor, VS Code Copilot, and any MCP-compatible AI assistant.

Readme

@utilix-tech/mcp

MCP server exposing 181 developer utility tools to Claude, Cursor, VS Code Copilot, and any Model Context Protocol compatible AI assistant.

No API key required. All tools run locally. Requires Node.js 18 or later.

Installation

Claude Desktop

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

{
  "mcpServers": {
    "utilix": {
      "command": "npx",
      "args": ["-y", "@utilix-tech/mcp"]
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project, or ~/.cursor/mcp.json globally:

{
  "mcpServers": {
    "utilix": {
      "command": "npx",
      "args": ["-y", "@utilix-tech/mcp"]
    }
  }
}

VS Code Copilot

Add to .vscode/mcp.json:

{
  "servers": {
    "utilix": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@utilix-tech/mcp"]
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "utilix": {
      "command": "npx",
      "args": ["-y", "@utilix-tech/mcp"]
    }
  }
}

Claude Code

claude mcp add utilix -- npx -y @utilix-tech/mcp

Tools

JSON (15 tools)

| Tool | Description | |------|-------------| | format_json | Pretty-print and validate a JSON string | | minify_json | Remove all whitespace from JSON | | diff_json | Compare two JSON objects and show changes | | json_to_csv | Convert a JSON array of objects to CSV | | csv_to_json | Convert CSV text to a JSON array | | jsonpath | Evaluate a JSONPath expression | | resolve_json_pointer | Resolve an RFC 6901 JSON Pointer against a JSON document | | validate_json | Validate JSON against a JSON Schema | | yaml_to_json | Convert YAML to JSON | | json_to_yaml | Convert JSON to YAML | | json_to_typescript | Generate TypeScript interfaces from JSON | | json_to_go | Generate Go structs from JSON | | json_to_python | Generate Python dataclasses from JSON | | json_to_zod | Generate a Zod schema from JSON | | json_schema_to_typescript | Generate TypeScript interfaces/types from a JSON Schema document (reads required/enum/$ref directly) |

Encoding (12 tools)

| Tool | Description | |------|-------------| | base64_encode | Encode a string to Base64 | | base64_decode | Decode a Base64 string | | url_encode | Percent-encode a URL or component | | url_decode | Decode a percent-encoded string | | html_entities_encode | Encode HTML entities | | html_entities_decode | Decode HTML entities | | base32_encode | Encode a string to Base32 | | base32_decode | Decode a Base32 string | | base58_encode | Encode text as Base58 (Bitcoin-address style, no ambiguous 0/O/I/l characters) | | base58_decode | Decode a Base58 string back to text | | base62_encode | Encode text as Base62 (alphanumeric, URL-safe) | | base62_decode | Decode a Base62 string back to text |

Hashing (6 tools)

| Tool | Description | |------|-------------| | hash | Hash a string with MD5, SHA-1, SHA-256, SHA-384, or SHA-512 | | hash_all | Hash a string with all algorithms at once | | bcrypt_hash | Hash a password using bcrypt | | bcrypt_verify | Verify a password against a bcrypt hash | | generate_sri_hash | Compute a Subresource Integrity hash (SHA-256/384/512) for a script or stylesheet's content, formatted for an HTML integrity attribute | | generate_etag | Compute a content-hash ETag (MD5/SHA-1/SHA-256) for a response header, with an optional weak-validator prefix |

Generators (6 tools)

| Tool | Description | |------|-------------| | generate_uuid | Generate UUID v4 or v7 | | generate_ulid | Generate a ULID | | generate_password | Generate a secure random password | | estimate_password_entropy | Estimate a password's entropy in bits, strength label, and crack-time estimates | | generate_qr | Generate a QR code as an SVG string | | generate_random_data | Generate random mock data: names, emails, UUIDs, IPs, etc. |

Text (16 tools)

| Tool | Description | |------|-------------| | convert_case | Convert text case: camelCase, snake_case, PascalCase, etc. | | slugify | Convert text to a URL-friendly slug | | word_count | Count words, characters, sentences, and reading time | | escape_string | Escape characters for JSON, JavaScript, HTML, URL, or CSV | | unescape_string | Unescape JSON, JavaScript, HTML, URL, or CSV strings | | lorem_ipsum | Generate Lorem Ipsum placeholder text | | text_diff | Diff two text blocks line-by-line | | html_to_markdown | Convert HTML to Markdown | | line_operations | Sort, deduplicate, reverse, shuffle, trim, or number lines | | detect_passive_voice | Flag sentences written in passive voice, e.g. "was written", "were approved by the team" | | score_readability | Score text with Flesch Reading Ease, Flesch-Kincaid Grade Level, and Gunning Fog Index | | detect_filler_words | Scan text for filler words, hedge phrases, and clichés with per-phrase counts and a density score | | calculate_string_distance | Compute the Levenshtein (or Damerau) edit distance and normalized similarity between two strings | | analyze_sentence_lengths | Split text into sentences and report a histogram of sentence lengths, plus mean, median, standard deviation, and a consistency label | | lookup_emoji | Search a curated table of ~280 common emoji by name, keyword, or GitHub-style shortcode, or look one up exactly by shortcode, character, or category | | analyze_keyword_density | Count keyword/phrase frequency and density (occurrences per 100 words) across a block of text, with single-word or 2/3-word phrase modes |

Time (6 tools)

| Tool | Description | |------|-------------| | unix_timestamp | Convert a Unix timestamp to human-readable date | | parse_cron | Parse a cron expression into a readable description | | cron_next_runs | Show the next N scheduled run times for a cron expression | | date_diff | Calculate the difference between two dates | | convert_timezone | Convert a date/time between timezones | | convert_iso8601_duration | Parse an ISO 8601 duration into components and total seconds, or format seconds into a duration string |

Units (29 tools)

| Tool | Description | |------|-------------| | convert_bytes | Convert between B, KB, MB, GB, TB, KiB, MiB, GiB, TiB | | px_to_units | Convert pixels to rem, em, pt, and vw | | validate_card_number | Validate a credit card number via the Luhn checksum and detect its network | | validate_iban | Validate an IBAN via the mod-97 checksum and format it into grouped blocks | | calculate_loan | Compute a loan's monthly payment, total interest, and amortization schedule | | validate_barcode | Validate an EAN-13, EAN-8, or UPC-A barcode via its weighted mod-10 check digit | | calculate_tax | Add or remove VAT/sales tax from a price, in either direction | | calculate_compound_interest | Compute the future value of a principal plus an optional recurring contribution under compound interest | | validate_isbn | Validate an ISBN-10 or ISBN-13 checksum and convert it to the other format where possible | | calculate_tip_split | Compute a tip on a bill amount and split the bill, tip, and total evenly across N people | | calculate_simple_interest | Compute simple (non-compounding) interest as principal x rate x time, plus the total payoff | | calculate_time_value | Convert between present and future value (time value of money) in either direction | | calculate_percentage_change | Compute the percentage change between two numbers, with absolute change, direction, and multiplier | | convert_apr_apy | Convert between a nominal APR and effective APY for a given compounding frequency, in both directions | | calculate_margin_markup | Given any two of cost, price, margin percent, and markup percent, solve for the other two plus gross profit | | calculate_discount | Solve a sale price, amount saved, or discount percent from any one of them, or stack successive discounts in order | | convert_subtitles | Convert subtitles between SubRip (.srt) and WebVTT (.vtt), with an optional time shift to resync every cue | | calculate_break_even | Compute the break-even unit count and revenue from fixed costs, variable cost per unit, and price per unit | | calculate_video_bitrate | Calculate a video's file size from a bitrate and duration, or the bitrate needed to hit a target file size | | calculate_rule_of_72 | Estimate years to double an investment from a rate, or the rate needed to double in a given number of years, via the Rule of 72 shortcut and the exact logarithmic result | | calculate_emi | Compute the Equated Monthly Installment for a loan from principal, annual rate, and tenure in years or months, with a year-by-year principal/interest breakdown | | calculate_savings_goal | Solve for months to reach a savings goal at a fixed monthly contribution, or the monthly contribution required to hit a goal by a target month count | | calculate_roi | Compute return on investment percent from an initial and final value, plus the annualized (CAGR) return given an optional holding period in years | | compare_unit_prices | Compare two or more package options by price and quantity to find the true cost per unit, flag the cheapest, and report how much more expensive each other option is | | calculate_cash_breakdown | Break a cash amount down into the minimum count of bills/coins from a set of denominations, largest first | | calculate_change | Compute change owed for a payment/tender pair and break it down into the minimum count of bills/coins | | calculate_payback_period | Compute the simple and discounted payback period from an initial investment and a series of periodic cash flows | | calculate_cd_maturity | Compute a certificate of deposit's maturity value and effective annual yield (APY) from a principal, nominal rate, term, and compounding frequency, plus the net early-withdrawal payout | | calculate_depreciation_schedule | Build a year-by-year fixed-asset depreciation schedule from cost, salvage value, and useful life, using straight-line, double-declining-balance, or sum-of-years-digits |

API / Network (25 tools)

| Tool | Description | |------|-------------| | decode_jwt | Decode a JWT: header, payload, and expiry | | parse_jwks | Parse a JWKS (or a single bare JWK): type, use, algorithm, key ID, and size per key | | compute_jwk_thumbprint | Compute the RFC 7638 canonical thumbprint of a single JWK (SHA-256/384/512) | | build_curl | Build a cURL command from method, URL, headers, and body | | curl_to_code | Convert a cURL command to fetch, axios, Python, Go, PHP, or Ruby | | cors_headers | Generate CORS response headers for a configuration | | parse_har | Parse a DevTools .har network export into requests and summary stats | | validate_sitemap | Validate a sitemap.xml or sitemap index against the sitemaps.org protocol | | validate_robots_txt | Validate a robots.txt file: User-agent groups, rules, and directive syntax | | parse_user_agent | Parse a browser User-Agent string into browser, engine, OS, and device type | | build_cache_control | Build and explain an HTTP Cache-Control response header from directives (max-age, no-store, immutable, etc.) | | build_referrer_policy | Build and explain an HTTP Referrer-Policy header from one or more fallback-chain policy tokens | | parse_ipv6_address | Expand an IPv6 address to its full 8-group form or compress it to its RFC 5952 canonical shortest form, classify its address type, and handle an embedded IPv4 suffix or zone ID | | build_link_header | Build and explain an HTTP Link response header from URL/rel pairs (preload, preconnect, prefetch, canonical, pagination, etc.) | | check_set_cookie_header | Parse a Set-Cookie header and validate its attribute combination: SameSite=None requires Secure, __Host-/__Secure- prefix rules, missing Secure, overly long Max-Age | | analyze_email_headers | Parse a raw email header block into structured fields, the Received hop chain, and SPF/DKIM/DMARC results from an Authentication-Results header | | build_range_header | Build an HTTP Range request header from explicit, open-ended, or suffix ("last N bytes") byte ranges | | parse_content_range_header | Parse a Content-Range response header into its unit, byte bounds, and total resource size | | build_vary_header | Build a Vary response header from request-header names, with a plain-English caching note per header | | parse_vary_header | Parse an existing Vary header value into its individual header names, each with a caching note | | validate_manifest | Validate a web app manifest.json against the W3C spec's installability requirements: name/short_name, start_url, display mode, and icon coverage | | build_permissions_policy | Build a Permissions-Policy response header from browser features and their per-feature allowlist, with a plain-English note per feature | | parse_permissions_policy | Parse an existing Permissions-Policy header value into its individual feature directives, each with a plain-English note | | build_client_hints | Build an Accept-CH (and optional Critical-CH) response header from a list of client hint names, with a plain-English note on what each hint reveals | | parse_client_hint_headers | Decode raw Client Hints request-header text into structured values: brand/version pairs, booleans, strings, and numbers |

Color (4 tools)

| Tool | Description | |------|-------------| | convert_color | Convert a color between HEX, RGB, HSL, and HSV | | check_contrast | Check WCAG contrast ratio between two colors | | color_palette | Generate a color palette from a base color | | color_shades | Generate shades or tints from a base color |

Code (12 tools)

| Tool | Description | |------|-------------| | format_sql | Format a SQL query with proper indentation | | format_html | Format and indent HTML markup | | test_regex | Test a regular expression and return all matches | | minify_js | Minify JavaScript by removing whitespace and comments | | format_graphql | Format or minify a GraphQL query or schema | | parse_env | Parse a .env file and return all key-value pairs | | parse_docker_image | Parse a Docker image reference into its components | | lookup_mime | Look up the MIME type for a file extension, or the extension(s) for a MIME type | | parse_github_url | Parse a github.com URL (repo, pull request, issue, commit, file, or release) into structured components | | detect_redos | Statically flag catastrophic-backtracking (ReDoS) risk in a regex: nested quantifiers, overlapping alternation, adjacent overlapping quantifiers | | lint_conventional_commit | Lint a commit message against the Conventional Commits v1.0.0 spec: header format, blank-line separation, footer tokens, and BREAKING CHANGE casing | | test_gitignore_patterns | Test a list of paths against a .gitignore file's patterns, following git's last-match-wins and negation rules |

Data (10 tools)

| Tool | Description | |------|-------------| | validate_yaml | Validate YAML syntax | | toml_to_json | Convert TOML to JSON | | xml_to_json | Convert XML to JSON | | parse_csv | Parse a CSV string and return the data as JSON | | format_ndjson | Validate and pretty-print newline-delimited JSON (NDJSON) | | diff_env_example | Diff a .env file against its .env.example template: flags keys missing from either side, plus empty placeholder values | | parse_markdown_front_matter | Split a Markdown document into its YAML front matter fields and body content | | generate_markdown_toc | Scan a Markdown document's ATX headings and build a nested table of contents with GitHub-style anchor slugs | | csv_to_sql_insert | Convert CSV data with a header row into parameterless SQL INSERT statements, with basic type inference and ANSI/MySQL identifier quoting | | find_csv_duplicate_rows | Group CSV/TSV rows that share the same value across a chosen set of key columns, or the entire row |

CSS (2 tools)

| Tool | Description | |------|-------------| | minify_css | Minify CSS by removing whitespace and comments | | css_gradient | Generate a CSS gradient from color stops |

Misc (3 tools)

| Tool | Description | |------|-------------| | number_to_words | Convert a number to English words, Roman numerals, or ordinal | | unicode_inspect | Inspect Unicode code points of a string | | optimize_svg | Optimize and minify an SVG string |

AI / Agent (28 tools)

| Tool | Description | |------|-------------| | estimate_tokens | Estimate token count and cost for an LLM prompt | | trim_to_tokens | Trim text to fit a token budget | | chunk_text | Split text into overlapping chunks for RAG pipelines | | rerank_chunks | Rerank retrieved chunks by relevance to a query | | score_relevance | Score a chunk's relevance to a query | | expand_query | Expand a search query with synonyms/related terms | | summarize_for_llm | Summarize text to fit a target length or token budget | | detect_pii | Find emails, phones, SSNs, credit cards in text | | detect_secrets | Scan text for leaked API keys, tokens, passwords | | detect_prompt_injection | Score and flag adversarial/injection-style inputs | | repair_json | Fix malformed JSON with a list of applied fixes | | sanitize_html | Strip unsafe tags/attributes from HTML | | flatten_json | Flatten nested JSON into dot-notation keys | | merge_json | Deep or shallow merge two JSON objects | | extract_json | Extract JSON blocks embedded in free text | | extract_urls | Extract all URLs from text | | extract_entities | Extract named entities from text | | extract_keywords | Extract keywords from text | | extract_tables | Extract tabular data from text | | deduplicate_lines | Remove duplicate lines from text | | validate_json_schema | Validate JSON against a JSON Schema | | compress_html | Compress HTML for LLM context budgets | | compress_markdown | Compress Markdown for LLM context budgets | | compress_json | Compress JSON for LLM context budgets | | diff_json_detailed | Diff two parsed JSON values, returning every path with its op and unchanged paths | | vector_similarity | Cosine similarity, dot product, and Euclidean / Manhattan distance between two numeric vectors | | format_few_shot_examples | Format input/output example pairs into a numbered, XML-tagged, or delimiter-separated few-shot prompt template | | lint_tool_schema | Lint an OpenAI, Anthropic, or MCP tool/function-calling definition for missing descriptions, invalid names, empty enums, and required/properties mismatches |

Image (3 tools)

| Tool | Description | |------|-------------| | read_image_info | Read format, dimensions, bit depth, and alpha channel from image bytes: no decoding required. Supports PNG, JPEG, GIF, WebP, BMP | | read_exif_data | Read camera make/model, orientation, timestamps, exposure settings, and GPS coordinates from a JPEG's EXIF data | | read_ico_info | Read how many images a .ico file embeds and each one's width, height, color depth, and size from its ICONDIR header |

PDF (2 tools)

| Tool | Description | |------|-------------| | read_pdf_metadata | Read title, author, dates, page count, and encryption flag from a PDF's trailer/Info dictionary: no PDF rendering library required | | read_pdf_page_dimensions | List each page's MediaBox width/height (points and inches), rotation, and orientation, walking the Root -> Pages -> Kids tree: no PDF rendering library required |

Audio (3 tools)

| Tool | Description | |------|-------------| | read_wav_info | Read sample rate, channel count, bit depth, and duration from a WAV file's RIFF/fmt/data chunk headers: no audio library required | | read_id3_tags | Read title, artist, album, year, genre, comment, and track number from an MP3's ID3 tags: no audio library required | | read_flac_info | Read sample rate, channels, bit depth, total samples, and duration from a FLAC file's STREAMINFO block, plus Vorbis comment tags if present: no audio library required |

Video (1 tool)

| Tool | Description | |------|-------------| | read_video_info | Read duration, resolution, and video/audio codec identifiers from an MP4 (ISO BMFF) or WebM (EBML/Matroska) file's container header: no frame decoding, demuxing, or transcoding |

Requirements

  • Node.js 18+

Publishing (maintainers)

CI publishes automatically via npm Trusted Publishing (OIDC) on every push to main that bumps version. Requires npm >=11.5.1: older versions (e.g. the npm bundled with Node 20) sign provenance but skip the OIDC auth exchange, so npm publish fails with a 404 as if unauthenticated.

Links