Skip to main content
Glama
chris-trag

pkg-peep

by chris-trag

pkg-peep πŸ‘€

A Model Context Protocol (MCP) server for NPM package intelligence. Get download statistics, package metadata, and dependency information for any NPM package.

How It Works

This MCP server exposes NPM registry APIs as tools that Q CLI and Claude can use:

  1. MCP Protocol: Server communicates with AI clients via Model Context Protocol

  2. Tool Registration: NPM API endpoints become callable tools

  3. No Authentication: Uses public NPM APIs (no API key required)

  4. JSON Responses: All package data returned as formatted JSON

Related MCP server: dag-mcp-server

pkg-peep MCP Architecture

%%{init: {'flowchart': {'curve': 'basis'}}}%%
graph LR
    A["πŸ’»<br/>Q CLI"] -.-> B["πŸ”Œ<br/>MCP Server"]
    C["πŸ’»<br/>Claude Code"] -.-> B
    B <--> D["πŸ“¦<br/>NPM Registry API"]
    B <--> E["πŸ“Š<br/>NPM Downloads API"]
    
    style A fill:#6366f1,stroke:#000,stroke-width:3px,color:#fff
    style C fill:#ff9900,stroke:#000,stroke-width:3px,color:#000
    style B fill:#C11C84,stroke:#000,stroke-width:3px,color:#fff
    style D fill:#cb3837,stroke:#000,stroke-width:3px,color:#fff
    style E fill:#10b981,stroke:#000,stroke-width:3px,color:#000

When you ask Q CLI or Claude Code to "get download stats for react", it:

  1. Calls the get_npm_downloads tool

  2. Server makes API request to NPM Downloads API

  3. Returns formatted results to the AI client

  4. The agent presents the data to you in context

Features

  • πŸ“Š Download Statistics - Weekly, monthly, daily, or custom date ranges

  • πŸ“¦ Package Metadata - Versions, dependencies, maintainers, license info

  • πŸ” Comprehensive Info - Repository links, keywords, creation dates

  • ⚑ Fast & Reliable - Direct NPM registry API integration

  • πŸ”‘ No API Key Required - Uses public NPM APIs

Tools

get_npm_downloads

Get download statistics for any NPM package.

Parameters:

  • package (required): NPM package name

  • period (optional): last-day, last-week, last-month

  • startDate (optional): Custom start date (YYYY-MM-DD)

  • endDate (optional): Custom end date (YYYY-MM-DD)

Example Response:

{
  "downloads": 50766634,
  "start": "2025-08-27",
  "end": "2025-09-02", 
  "package": "react"
}

get_npm_package_info

Get comprehensive package metadata.

Parameters:

  • package (required): NPM package name

Example Response:

{
  "name": "react",
  "description": "React is a JavaScript library for building user interfaces.",
  "latest": "19.1.1",
  "license": "MIT",
  "homepage": "https://react.dev/",
  "repository": {
    "url": "git+https://github.com/facebook/react.git",
    "type": "git"
  },
  "maintainers": [
    {"name": "fb", "email": "opensource+npm@fb.com"}
  ],
  "dependencies": {...},
  "created": "2011-10-26T17:46:21.942Z"
}

Installation

For Amazon Q CLI

  1. Clone or download this repository

  2. Install dependencies:

    npm install
  3. The MCP server is ready to use with Q CLI's MCP support

For Claude Desktop

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "pkg-peep": {
      "command": "node",
      "args": ["/path/to/pkg-peep/index.js"]
    }
  }
}
{
  "mcpServers": {
    "pkg-peep": {
      "command": "npx",
      "args": ["-y", "pkg-peep"]
    }
  }
}

Usage Examples

Get weekly downloads:

Get download stats for "react" package

Custom date range:

Get download stats for "lodash" from 2024-01-01 to 2024-12-31

Package information:

Get package info for "express"

Testing

Run the test suite to verify everything works:

npm test

The tests verify:

  • βœ… Tool registration (both download and package info tools)

  • βœ… Download stats for popular packages

  • βœ… Different time periods (daily, weekly, monthly)

  • βœ… Package metadata retrieval

  • βœ… Custom date ranges

  • βœ… Error handling for non-existent packages

πŸ“‹ Example Prompts >> - Try these sample queries to test your MCP!

Development

# Install dependencies
npm install

# Run the server
node index.js

# Test with a simple request
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node index.js

API Endpoints Used

  • NPM Downloads API: https://api.npmjs.org/downloads/

  • NPM Registry API: https://registry.npmjs.org/

License

MIT

Contributing

Issues and pull requests welcome! This MCP server uses the official Model Context Protocol SDK.

Available Tools

2 tools
get_npm_downloadsC

Get NPM package download statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoPredefined time period for download stats
endDateNoEnd date for custom range (YYYY-MM-DD format)
packageYesNPM package name
startDateNoStart date for custom range (YYYY-MM-DD format)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden for behavioral disclosure. It states the basic function but omits critical details such as how period interacts with startDate/endDate, whether the period and custom range are mutually exclusive, possible rate limits, or the structure of the returned statistics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the key verb and resource, and contains no redundant or filler information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (period enum, date range parameters, no output schema, no annotations), the description is far too minimal. It fails to explain the relationship between period and startDate/endDate, what constitutes 'download statistics' (e.g., counts, points in time), or any usage constraints, leaving significant ambiguity for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% β€” all four parameters have clear descriptions in the input schema. The description adds no extra semantic value beyond what is already documented, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves NPM package download statistics using a specific verb ('Get') and resource ('download statistics'). However, it does not explicitly differentiate from the sibling tool get_npm_package_info, only implying a focus on downloads rather than package metadata.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the sibling get_npm_package_info. There are no exclusions, prerequisites, or alternative tool mentions, leaving the agent without contextual direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_npm_package_infoB

Get comprehensive NPM package metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
packageYesNPM package name

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden but only says 'comprehensive metadata' without detailing what fields are returned, whether network calls are made, or any limitations. The behavior is not transparent beyond the core purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the action and resource. Every word contributes to defining the tool's purpose with no wasteful or redundant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with one well-defined parameter, but the term 'comprehensive' is vague and does not clarify expected output or edge cases. It is minimally sufficient but leaves the agent guessing about what metadata is actually included.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'package' parameter, which is already described as 'NPM package name'. The description adds no extra semantic meaning beyond restating the resource, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches comprehensive NPM package metadata, with a specific verb and resource. It does not explicitly distinguish itself from get_npm_downloads, though the scope of 'comprehensive metadata' implies broader info than just downloads.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the sibling get_npm_downloads. The description only states the basic action, leaving the choice of tool to inference from names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedget_npm_downloads
    • First observedget_npm_package_info

TDQS

B3.3/5.0
Disambiguation5/5

The two tools address distinct aspects of NPM package data: download statistics versus package metadata. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tools follow a consistent get_npm_[noun] pattern, making their purpose predictable from the name alone.

Tool Count3/5

With only two tools, the server feels thin for a general-purpose package inspection utility. This falls at the lower end of the acceptable range, earning a borderline score.

Completeness3/5

The server covers basic metadata and download stats, but lacks common operations like version listing, search, or readme retrieval. Agents needing those features would hit a dead end.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides comprehensive contextual information about npm packages including README files, versions, dependencies, download statistics, and search functionality. Enables users to explore and analyze npm packages through natural language queries with intelligent GitHub README fetching and branch fallback.
    9
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides intelligent, version-aware access to npm library documentation. Supports semantic search, API validation, and version comparison to assist developers in using libraries correctly.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with tools to check npm package versions and security heuristics, including version lookups, signal-based analysis, and batch analysis of package.json files.
    15
    AGPL 3.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI coding agents to search the npm registry and retrieve package metadata, READMEs, download stats, GitHub details, and usage snippets via the Model Context Protocol.
    9
    21
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chris-trag/pkg-peep'

If you have feedback or need assistance with the MCP directory API, please join our Discord server