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

n2n-post2site

v0.3.0

Published

AI-assisted website content publishing MCP server.

Readme

n2n-post2site

Local MCP bridge for AI-assisted website publishing.

n2n-post2site lets an AI IDE client talk to a protected website content API without exposing a database, filesystem, shell, deployment process, payments, or account administration. It is a thin stdio MCP server: validate tool input, map it to HTTP, and return the backend response.

Architecture

AI IDE client
  -> MCP stdio
n2n-post2site
  -> HTTPS + X-API-KEY
website content API
  -> host adapter handles storage, policy, preview, publish

For Laravel sites, n2ns/laravel-post2site is the first-party backend package for this contract.

Workflow

The intended authoring loop is:

  1. Read post2site://capabilities, post2site://site-context, and post2site://editorial-policy.
  2. Inspect existing content with n2n_list_inventory, post2site://inventory/stats, and n2n_check_duplicates.
  3. Draft locally in the chat/IDE. Use n2n_validate_working_draft for non-persistent backend validation.
  4. After the draft is confirmed for remote saving, call n2n_create_draft.
  5. Upload only the selected image with n2n_upload_asset, then update the draft if needed.
  6. Validate and preview with n2n_validate_draft and n2n_preview_draft.
  7. Publish only after explicit publish confirmation with n2n_publish_draft.

The MCP server does not define blog fields such as type, topics, geo_tags, seo_keywords, or locales. Those live inside the host-declared content_payload object and are validated by the backend.

Quick Start

Requirements:

  • Node.js 22+
  • An MCP-capable IDE/client
  • A backend implementing the Post2Site publishing HTTP contract
  • A content API key

Using npm:

{
  "mcpServers": {
    "n2n-post2site": {
      "command": "npx",
      "args": ["-y", "n2n-post2site"],
      "env": {
        "CONTENT_API_BASE_URL": "https://your-site.com/api/v1/mcp",
        "CONTENT_API_KEY": "your-api-key"
      }
    }
  }
}

Using a local checkout:

{
  "mcpServers": {
    "n2n-post2site": {
      "command": "node",
      "args": ["/path/to/n2n-post2site/dist/index.js"],
      "env": {
        "CONTENT_API_BASE_URL": "https://your-site.com/api/v1/mcp",
        "CONTENT_API_KEY": "your-api-key"
      }
    }
  }
}

CONTENT_API_BASE_URL should point at the protected publishing API base, for example https://your-site.example/api/v1/mcp. Keep the API key out of prompts, screenshots, and article content.

MCP Resources

Static resources:

  • post2site://capabilities
  • post2site://site-context
  • post2site://editorial-policy
  • post2site://inventory/stats

Resource templates:

  • post2site://inventory/resources/{target_identifier}
  • post2site://drafts/{draft_id}

List tools include canonical resource URIs and MCP resource_link blocks when returned rows can be opened as resources.

MCP Tools

Inventory:

  • n2n_list_inventory
  • n2n_check_duplicates

Drafting:

  • n2n_validate_working_draft
  • n2n_list_drafts
  • n2n_create_draft
  • n2n_update_draft
  • n2n_validate_draft
  • n2n_preview_draft

Assets and publishing:

  • n2n_upload_asset
  • n2n_publish_draft

See Resources Reference and Tools Reference for examples.

Security Boundaries

n2n-post2site should not expose:

  • Delete operations.
  • Direct database queries.
  • Filesystem writes.
  • Shell commands.
  • Deployment or server operations.
  • Product, pricing, payment, subscription, or account administration.
  • Server-managed lifecycle fields such as published_at, author, or host markers.

The backend is responsible for authentication, validation, preview rendering, publication, audit rules, and server-managed fields.

Development

npm run build
npm test
npm run smoke:mcp
npm run check

npm run check runs build, unit tests, built-surface checks, and the MCP protocol smoke test.

Related Docs

License

MIT