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

filechanger-mcp

v0.1.1

Published

MCP server for FileChanger: convert text between document formats, list supported formats, and read the API docs.

Readme

filechanger-mcp

MCP server for FileChanger document conversion. Exposes three tools backed by the FileChanger API:

  • convert — convert text content between formats (e.g. markdown to html). Binary outputs (docx/epub/odt) use the REST jobs API instead.
  • list_formats — list supported input and output formats.
  • docs — return the FileChanger API documentation as markdown.

It is a thin stdio proxy to the hosted endpoint at https://filechanger.io/mcp; the tools themselves run on FileChanger's servers.

Setup

Get an API key (fc_...) at https://filechanger.io, then add to your MCP client config:

{
  "mcpServers": {
    "filechanger": {
      "command": "npx",
      "args": ["-y", "filechanger-mcp"],
      "env": { "FILECHANGER_API_KEY": "fc_your_key_here" }
    }
  }
}

Environment

  • FILECHANGER_API_KEY (required) — your FileChanger API key.
  • FILECHANGER_URL (optional) — override the endpoint. Defaults to https://filechanger.io/mcp.

Publishing (npm + official MCP registry)

./publish.sh (run via nix develop -c apps/filechanger/mcp/publish.sh) does the whole release: version-sync check across package.json/server.json, build + tests, npm publish (skipped if the version is already up), then mcp-publisher login + publish to registry.modelcontextprotocol.io under the io.filechanger namespace. Directories like PulseMCP and Glama crawl the official registry, so no separate submissions are needed there.

Smithery does not crawl the registry; it lists the hosted endpoint directly (one-time, needs a smithery.ai login):

npx smithery@latest auth login
npx smithery@latest mcp publish "https://filechanger.io/mcp" \
  --config-schema apps/filechanger/mcp/smithery.json

smithery.json tells Smithery's gateway to prompt users for an fc_ key and forward it upstream as the x-api-key header, which /mcp already expects. The scanner needs no auth: initialize and tools/list are open, only tool calls enforce the key.

Namespace ownership is proven over HTTP: nginx serves the Ed25519 public key at https://filechanger.io/.well-known/mcp-registry-auth (infra/configuration.nix) and the script signs the login challenge with the sops-encrypted private key infra/secrets/mcp-registry-key.pem.

One-time prerequisites: npm login, and the well-known nginx location deployed.

Releases are automatic: infra/update-server.sh runs publish.sh --auto after a healthy deploy, which patch-bumps package.json + server.json, commits the bump, publishes, and lays a filechanger-mcp-vX.Y.Z git tag — but only when mcp/ has actually changed since that tag (unchanged deploys skip publishing entirely, and a publish failure only warns, it never fails the deploy). For a manual or non-patch release, bump the version in package.json AND both version fields in server.json yourself, then run the script with no flags.

Reusing the proxy in another project

src/proxy.ts (JSON-RPC parse + HTTP forward) and src/run.ts (stdio loop) are project-agnostic, no FileChanger in them. To stand up a stdio proxy for a different MCP-over-HTTP backend, copy those two files and write your own index.ts: read your key/URL from env and call forward(line, { url, apiKey, fetchFn: fetch, brand: "YourApp" }). brand only flavours error messages (YourApp HTTP 503); it defaults to Upstream. There is no published package yet, so it is copy-the-two-files until a second consumer earns one.