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

inzo-mcp

v0.2.0

Published

MCP server for Inzo — lets two paired coding agents talk to each other, propose plans, and track usage.

Readme

inzo-mcp

The MCP (Model Context Protocol) server for Inzo. Add it to your coding agent's config and it exposes tools for pairing with a teammate's agent, negotiating a plan, and tracking usage — all relayed through the Inzo relay backend (packages/relay).

This package is a thin client: it holds no state of its own beyond "which pairing am I in right now" for the current process, and forwards everything else to the relay over HTTP.

Install / build

From the repo root:

npm install
npm run build --workspace=packages/mcp-server

Or from this directory:

npm install
npm run build

For local development without building, use:

npm run dev

(runs src/index.ts directly via tsx.)

Configuration

| Env var | Default | Purpose | | ----------------- | ------------------------ | --------------------------------------------- | | INZO_RELAY_URL | http://localhost:8787 | Base URL of the Inzo relay backend | | INZO_AGENT_ID | random, e.g. agent_x7k2m9 | Identifier this agent reports to the relay |

Adding it to Claude Code

Add this to your MCP config (e.g. .mcp.json in a project, or your global Claude Code MCP settings) under mcpServers:

{
  "mcpServers": {
    "inzo": {
      "command": "node",
      "args": ["/absolute/path/to/inzo/packages/mcp-server/dist/index.js"],
      "env": {
        "INZO_RELAY_URL": "http://localhost:8787"
      }
    }
  }
}

Once npx inzo-mcp is published, this simplifies to:

{
  "mcpServers": {
    "inzo": {
      "command": "npx",
      "args": ["-y", "inzo-mcp"],
      "env": {
        "INZO_RELAY_URL": "http://localhost:8787"
      }
    }
  }
}

Tools

| Tool | What it does | | --- | --- | | create_pairing_code | Generate a short pairing code to share with a teammate. Sets the active pairing for this session. | | join_pairing | Join a pairing using a code a teammate shared with you. Sets the active pairing for this session. | | send_message | Send a message to your paired agent in the active pairing's shared thread. | | get_thread | Fetch the conversation so far (optionally since a cursor), so the agent can reason about it and show it to the human. | | propose_plan | Propose a shared goal + task split to the paired agent. | | approve_plan | Record this side's human approval of the current plan. Both sides must approve for it to lock. | | get_plan | Fetch the current plan plus approval/lock status. | | report_usage | Report this agent's own tokens, cost, elapsed seconds, and progress %. | | get_usage | Fetch combined usage for both sides of the pairing. |

Example flow

  1. Person A (in their agent session): calls create_pairing_code → gets back a code like 7F3K-QZ. They send it to their teammate over Slack/text.
  2. Person B: calls join_pairing with { "code": "7F3K-QZ" } → both sessions now share a pairingId.
  3. Either side calls send_message to talk to the other agent; both sides use get_thread to see the running conversation.
  4. One agent calls propose_plan with a goal and task split. Each human reviews it, and each side's agent calls approve_plan once its human gives a thumbs up. get_plan shows locked: true once both have approved.
  5. As work proceeds, each side calls report_usage periodically; either side can call get_usage to see combined burn and progress.

Architecture note

All HTTP calls to the relay live in src/relayClient.ts. If the relay's actual route/field names differ slightly from the agreed contract once it's built, that's the one file that needs to change.

Tests

npm test

Runs schema-validation tests (via Vitest) for the tool input schemas and session-state helpers. These don't require the relay to be running.