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

mdp-mcp

v0.8.0

Published

MCP server for MDP: compile one .mdp source into design-locked HTML across the full form set (page, slides, flyer, document forms, and interactive forms) from any MCP host, and send the artifact to Slack.

Readme

mdp-mcp

An MCP server for MDP, a presentation compiler for AI-written content. Hand it a plain .mdp source and it compiles a design-locked page, slide deck, flyer, report, one-pager, memo, or letter and hands back a file you can open, from any MCP-speaking host.

The author writes meaning; the engine owns all design. Output is deterministic (byte-identical for the same source). The only design knobs are a named theme: and an optional brand-logo: mark the engine places in the masthead.

Install

claude mcp add mdp -- npx -y mdp-mcp

Or in a host config (e.g. Claude Desktop claude_desktop_config.json):

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

Optional env: MDP_OUT_DIR (where artifacts are written; defaults to the OS temp dir), MDP_NO_OPEN=1 (compile and serve without opening a browser). For the Slack tool: SLACK_BOT_TOKEN and (optional) MDP_SLACK_CHANNEL — see Send to Slack.

Tools

| Tool | What it does | |---|---| | mdp_compile(source, form, out_dir?) | Compile to HTML, write a file, return the absolute path. form: page | slides | flyer | report | onepager | memo | letter | all. | | mdp_present(source, form?, out_dir?) | Compile (default slides), serve on a loopback preview, open the browser, return the URL + path. | | mdp_validate(source) | Parse and report { ok, meta, blocks, issues }. Never throws. | | mdp_send_slack(source, form?, channel?, initial_comment?, out_dir?) | Compile one artifact and upload the HTML to a Slack channel as a file. Requires SLACK_BOT_TOKEN; see Send to Slack. |

Resources

  • mdp://spec — the MDP specification.
  • mdp://example/{name} and mdp://template/{name}: one resource per vendored source. The server lists them from the bundled manifests.

Send to Slack

mdp_send_slack compiles one artifact and uploads the self-contained .html to a Slack channel as a file (via Slack's current external-upload flow). The artifact is the real, design-locked output — opening it in a browser shows the full design, with interactive forms working. Slack does not render an uploaded .html inline; it shows it as a downloadable file.

It needs a Slack bot token (incoming webhooks cannot upload files). One-time setup:

  1. Create an app at https://api.slack.com/appsFrom scratch.
  2. OAuth & PermissionsBot Token Scopes → add files:write.
  3. Install to workspace and copy the Bot User OAuth Token (xoxb-…).
  4. Invite the bot to the target channel (/invite @your-app) and copy the channel id (channel name → View channel details → bottom of the dialog, e.g. C0123…). The bot must be a member of the channel or Slack returns not_in_channel.

Then set the env in your MCP host's server config (never commit the token):

{
  "mcpServers": {
    "mdp": {
      "command": "npx",
      "args": ["-y", "mdp-mcp"],
      "env": { "SLACK_BOT_TOKEN": "xoxb-…", "MDP_SLACK_CHANNEL": "C0123456789" }
    }
  }
}

MDP_SLACK_CHANNEL is the default channel; pass channel to override per call. Expected failures degrade to { ok:false, error } (e.g. no_token, no_channel, not_in_channel, invalid_auth) rather than throwing.

License

Apache-2.0. Part of the MDP monorepo: https://github.com/barmoshe/mdp