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

tooleval

v0.1.0

Published

npm audit for MCP servers — zero-config heuristic testing that discovers tools and runs 21 automated security & quality checks per tool

Readme

tooleval

npm audit for MCP servers — zero-config, zero-API-cost heuristic testing

ToolEval connects to any MCP server via stdio, discovers all tools, and runs 21 automated checks per tool covering schema validation, security, resilience, and correctness. No API keys. No LLM costs. Just plug in your server command and get results.

Quick Start

npx tooleval npx @modelcontextprotocol/server-filesystem /tmp

That's it. One command, full report.

Output Formats

Text (default)

npx tooleval npx @modelcontextprotocol/server-filesystem /tmp
🔍 ToolEval Spike — Generic MCP Server Checker
📦 Server: npx -y @modelcontextprotocol/server-memory

📋 Discovered 9 tools:
   • create_entities — Create multiple new entities in the knowledge graph
   • create_relations — Create multiple new relations between entities
   ...

────────────────────────────────────────────────────────────
🔧 Testing: create_entities
   ✅ A. Schema exists — 1 props
   ✅ B. Empty call (no crash) — error (expected)
   ✅ C. Response shape — 1 items
   ...

════════════════════════════════════════════════════════════
📊 SUMMARY
  ✅ create_entities: 18/18 checks
  Total: 162/162 checks passed
  ✅ ALL CLEAR
════════════════════════════════════════════════════════════

JSON

npx tooleval --format json npx @modelcontextprotocol/server-filesystem /tmp

Returns structured JSON with per-tool results — perfect for CI pipelines.

SARIF

npx tooleval --format sarif npx @modelcontextprotocol/server-filesystem /tmp

Outputs SARIF format — integrates with GitHub Code Scanning, Azure DevOps, and other SARIF-compatible tools.

HTML

npx tooleval --format html npx @modelcontextprotocol/server-filesystem /tmp > report.html

Self-contained HTML report — open in any browser, share with stakeholders.

The 21 Checks

| # | Check | What it tests | |---|-------|--------------| | A | Schema exists | Tool exposes a valid inputSchema object | | B | Empty call resilience | Calling with {} doesn't crash the server | | C | Response shape | Response has valid MCP content array | | D | Response time | Responds within 10 seconds | | E | Path traversal | Classic ../../../etc/passwd is rejected | | F | Multi-vector traversal | 6 path traversal bypass techniques blocked | | G | Schema validation (Ajv) | inputSchema compiles as valid JSON Schema | | H | Error info leakage | No stack traces, secrets, or paths in errors | | I | Large input (1MB) | Server handles 1MB payloads gracefully | | J | Concurrent resilience | 5 simultaneous calls all return successfully | | K | SSRF probe | Internal network URLs (169.254.x, localhost) are rejected | | L | Command injection | Shell metacharacters in string params are rejected | | M | Secret detection | Responses don't leak API keys, tokens, or credentials | | N | Type coercion | Wrong types (string→int) are handled gracefully | | O | Idempotency | Repeated identical calls produce consistent results | | P | Timeout escalation | Slow inputs don't hang the server indefinitely | | Q | Unicode handling | Unicode/special chars don't crash or corrupt | | R | Required fields | Missing required fields produce proper errors | | S | Nested depth | Deeply nested objects are handled gracefully | | T | Enum boundary | Out-of-range enum values are rejected | | U | Description quality | Tool has a meaningful description |

Checks are automatically skipped when not applicable (e.g., path traversal skipped for tools without path params).

CI Integration

GitHub Actions

name: MCP Server Audit
on: [push, pull_request]

jobs:
  tooleval:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npm ci
      - name: Run ToolEval
        run: npx tooleval --format json node ./dist/server.js > tooleval-report.json
      - name: Check results
        run: npx tooleval node ./dist/server.js
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: tooleval-report
          path: tooleval-report.json

GitHub Code Scanning (SARIF)

      - name: Run ToolEval (SARIF)
        run: npx tooleval --format sarif node ./dist/server.js > tooleval.sarif
      - uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: tooleval.sarif

Why ToolEval

  • No API key needed — pure heuristic checks, no LLM calls
  • No LLM cost — run it 1000 times in CI, it's free
  • Tests the tool, not the AI — validates the MCP server interface directly
  • Catches real security issues — path traversal, SSRF, command injection, info leakage
  • Zero config — just point it at your server command
  • CI-ready — JSON/SARIF/HTML output + proper exit codes

Exit Codes

| Code | Meaning | |------|---------| | 0 | All checks passed | | 1 | Some checks failed | | 2 | Fatal error (server failed to connect, etc.) |

Requirements

  • Node.js >= 18
  • The MCP server must be launchable via a shell command (stdio transport)

License

MIT