MCPcopy Index your code
hub / github.com/midday-ai/packrun

github.com/midday-ai/packrun @main

repository ↗ · DeepWiki ↗ · Ask this repo → · + Follow
680 symbols 1,549 edges 212 files 63 documented · 9% updated 4mo ago★ 3,83911 open issues
README

packrun.dev

The npm registry for AI agents

Automated package comparisons. Real-time scoring. 50+ categories. MCP server for Cursor & Claude.

Features

  • Automated Comparisons - 50+ categories with formula-based scoring
  • Real-time Metrics - Downloads, bundle size, maintenance, all live
  • Alternative Discovery - Find what to use instead of any package
  • MCP Server - Native integration with AI coding assistants
  • Sub-50ms Search - Powered by Typesense Cloud

How Scoring Works

Packages are scored automatically (0-100) based on:

Factor Weight What it measures
Downloads 20% Weekly downloads + trend direction
Bundle Size 20% Smaller gzip = higher score
Freshness 25% Recent commits and releases
Community 10% Stars, contributors
Quality 25% TypeScript, ESM, security, tree-shaking

Project Structure

packrun.dev/
├── apps/
│   ├── web/          # Next.js frontend
│   ├── sync/         # Data sync worker
│   └── mcp-server/   # MCP server for AI agents
├── packages/
│   ├── decisions/    # Scoring, categories, comparison engine
│   ├── agent-utils/  # Conflict detection
│   └── ui/           # Shared components
└── turbo.json

MCP Server

For AI coding assistants (Cursor, Claude, etc.):

Endpoint: https://mcp.packrun.dev/mcp

Configuration (for Cursor, Claude Desktop, etc.):

{
  "mcpServers": {
    "packrun": {
      "url": "https://mcp.packrun.dev/mcp"
    }
  }
}

Tools:

Tool Description
search_packages Search npm packages
get_package Get package metadata
get_package_health Check maintenance status
compare_packages Compare packages with scoring
find_alternatives Find alternatives to any package
get_comparison_category Get category comparison (e.g., "date-library")
list_comparison_categories List all 50+ categories
validate_install Check compatibility before installing

API

Compare Packages

# Compare specific packages
GET /api/compare?packages=axios,got,ky

# Get category comparison
GET /api/compare?category=date-library

# Find alternatives for a package
GET /api/compare?package=moment

# List all categories
GET /api/compare?list=categories

Response Example

{
  "category": "date-library",
  "recommendation": "date-fns",
  "smallestBundle": "dayjs",
  "mostPopular": "moment",
  "packages": [
    {
      "name": "date-fns",
      "score": 82,
      "badges": ["TypeScript", "ESM", "Trending Up"],
      "metrics": {
        "weeklyDownloads": 20000000,
        "downloadTrend": "growing",
        "bundleSizeKb": "13.2kb",
        "lastCommitDays": 2,
        "hasTypes": true
      }
    },
    ...
  ]
}

Categories

50+ categories including:

  • HTTP clients: axios, got, ky, node-fetch
  • Date libraries: moment, date-fns, dayjs, luxon
  • Validation: zod, yup, joi, ajv, valibot
  • State management: redux, zustand, jotai, recoil
  • ORM: prisma, drizzle, typeorm, sequelize
  • Testing: vitest, jest, mocha, ava
  • Bundlers: vite, esbuild, webpack, rollup
  • Logging: pino, winston, bunyan
  • And 40+ more...

Getting Started

Prerequisites

Installation

git clone https://github.com/your-org/packrun.dev
cd packrun.dev
bun install

Development

bun run dev:web    # Web app on :3000
bun run dev:sync   # Sync worker

Environment Variables

# Typesense
TYPESENSE_HOST=xxx.typesense.net
TYPESENSE_PORT=443
TYPESENSE_PROTOCOL=https
TYPESENSE_API_KEY=xxx

# Optional: GitHub token for higher rate limits
GITHUB_TOKEN=xxx

License

MIT

Extension points exported contracts — how you extend this code

PackageVersion (Interface)
* Compatibility Checking * * Extracts Node version requirements, ESM/CJS compatibility from packages.
apps/worker/src/lib/compatibility.ts
PackageData (Interface)
* Internal package data structure (built from npm registry)
apps/api/src/tools/health.ts
SendEmailOptions (Interface)
(no doc)
packages/email/src/client.ts
NpmsScores (Interface)
(no doc)
packages/data/src/npms.ts
QueueOptions (Interface)
(no doc)
packages/queue/src/index.ts
User (Interface)
(no doc)
packages/api/src/base.ts
PackageInfo (Interface)
(no doc)
packages/decisions/src/discovery.ts
RepositoryInfo (Interface)
(no doc)
packages/readme-renderer/src/index.ts

Core symbols most depended-on inside this repo

set
called by 52
apps/api/src/lib/cache.ts
cn
called by 42
apps/web/lib/utils.ts
get
called by 31
apps/api/src/lib/cache.ts
fetchVulnerabilities
called by 12
packages/data/src/osv.ts
toolResult
called by 11
apps/api/src/mcp/server.ts
errorResult
called by 11
apps/api/src/mcp/server.ts
getLatestVersion
called by 10
packages/data/src/npm.ts
delete
called by 10
apps/api/src/lib/cache.ts

Shape

Function 516
Interface 151
Method 9
Class 4

Languages

TypeScript100%

Modules by API surface

packages/db/src/queries.ts35 symbols
packages/data/src/npm.ts24 symbols
packages/readme-renderer/src/index.ts16 symbols
apps/web/components/ui/dropdown-menu.tsx15 symbols
apps/api/src/lib/enrichment.ts14 symbols
apps/web/components/globe-visualization.tsx13 symbols
apps/api/src/tools/downloads.ts13 symbols
packages/queue/src/index.ts12 symbols
packages/decisions/src/schema.ts11 symbols
apps/worker/src/lib/redis-cache.ts11 symbols
apps/web/components/ui/dialog.tsx10 symbols
apps/web/app/[name]/page.tsx10 symbols

Dependencies from manifests, versioned

@biomejs/biome2.3.14 · 1×
@hono/mcp0.2.3 · 1×
@modelcontextprotocol/sdk1.26.0 · 1×
@openpanel/nextjs1.1.3 · 1×
@orpc/client1.13.4 · 1×
@orpc/openapi1.13.4 · 1×
@orpc/server1.13.4 · 1×
@orpc/tanstack-query1.13.4 · 1×
@orpc/zod1.13.4 · 1×
@packrun/apiworkspace:* · 1×
@packrun/api-serverworkspace:* · 1×
@packrun/dataworkspace:* · 1×

For agents

$ claude mcp add packrun \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact