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

lipsum-mcp

v1.0.1

Published

MCP server for lipsum.pro — generate placeholder text in eight writing systems, with pseudolocalisation for internationalisation testing

Downloads

343

Readme

lipsum-mcp

An MCP server for lipsum.pro. Gives an assistant the ability to generate placeholder text in eight writing systems without leaving the conversation.

"Fill this card component with about 200 characters of Japanese." "Give me 5 paragraphs of Arabic so I can check the RTL layout." "Pseudolocalise 40 words — I want to see what truncates."

Install

Claude Desktop — add to claude_desktop_config.json:

{
  "mcpServers": {
    "lipsum": {
      "command": "npx",
      "args": ["-y", "lipsum-mcp"]
    }
  }
}

Claude Code:

claude mcp add lipsum -- npx -y lipsum-mcp

Node 18 or newer. No API key, no account, no configuration.

The tool

generate_placeholder_text

| Parameter | Values | Default | |---|---|---| | type | characters · words · sentences · paragraphs | words | | count | integer, capped at 20000 / 5000 / 1000 / 200 per type | 50 | | script | latin cyrillic greek devanagari arabic hebrew chinese japanese | latin | | format | plain · html · markdown · json | plain | | start | begin with "Lorem ipsum dolor sit amet…" (Latin only) | true | | pseudo | pseudolocalise — accented and ~40% longer (Latin only) | false |

Counts are exact. Forty characters means forty characters, terminating punctuation included.

Why pseudolocalisation matters

pseudo: true returns accented Latin about 40% longer than the original — roughly what German or Finnish does to a layout written in English.

Lorem ipsum dolor sit amet consectetur
Ĺóóŕéém íípśúúm đóóĺóóŕ śííţ áámééţ ćóóńśééćţééţúúŕ

Two faults surface immediately: text with no glyph coverage renders as boxes, and anything that truncates or overflows at that length will truncate for real once translated. It tests a layout for internationalisation before a single string has been translated.

FAQ

Is it free? Completely. No account, no API key, no sign-up, no usage tier. The underlying API is rate limited per IP, at a level conversational use will not reach.

Does it send my data anywhere? Only the parameters you ask for — unit, count, script, format. Nothing from your conversation, your prompts or your files ever leaves your machine. The request is a plain GET with a query string, and you can read the whole client in src/index.mjs; it is about a hundred lines.

Does it work offline? No. It calls https://lipsum.pro/api, so it needs network access. That is the deliberate trade for a package with no generator inside it: script and vocabulary improvements reach you without an upgrade. Point LIPSUM_API_URL at your own host if you need it self-contained.

When would I use pseudo: true? When the question is whether a layout survives translation. It returns accented Latin about 40% longer than the original, which is roughly what German or Finnish does to English. Text with no glyph coverage immediately renders as boxes, and anything that truncates at that length will truncate for real once translated — so you find both faults before a single string has been sent to a translator. See Why pseudolocalisation matters.

Can I use the generated text commercially? Yes. It is meaningless filler with no authorship or rights attached — client work, products and templates are all fine.

Are the counts exact? Yes. Forty characters means forty characters, terminating punctuation included, in every script and with pseudolocalisation on. Ask for more than the per-unit cap and the request is refused with a message rather than being silently trimmed.

Which MCP clients does it work with? Any of them. Verified against Claude Code and Claude Desktop; it is a standard stdio MCP server with one tool and no client-specific behaviour.

Why Node 18? That is the floor for the MCP SDK, not for this package.

How it works

A thin client over the public API at https://lipsum.pro/api. It embeds no generator of its own, so improvements to the service reach every installed copy without an upgrade. Set LIPSUM_API_URL to point it elsewhere.

The API is free, needs no key, and is rate limited per IP — comfortably above anything conversational use will reach.

Licence

MIT. The lipsum.pro service, site and content are separately licensed; see https://lipsum.pro.