NPMScan
Server Details
Detect malicious or vulnerable npm packages: registry search, OSV.dev and GitHub advisory lookups
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.1/5 across 6 of 6 tools scored.
Each tool targets a distinct operation: bulk vulnerability query, advisory browsing, package metadata, version-specific metadata, single vulnerability query, and package search. The two vulnerability queries are differentiated by cardinality, and the two metadata tools differ by version specificity.
All names follow a verb_noun pattern in snake_case (e.g., get_package, query_vulnerabilities). The verbs vary (search, get, query, batch_query) but are appropriate and consistent in style, with no mixed conventions.
With 6 tools, the surface is well-scoped for an npm security analysis server, covering search, metadata, and vulnerability queries without redundancy or bloat.
The tool set covers the core workflows: finding a package, retrieving metadata (latest and specific versions), querying vulnerabilities (single and batch), and checking advisories. Minor gaps like parsing a package.json file are workable through the batch query.
Available Tools
6 toolsbatch_query_vulnerabilitiesBatch query known vulnerabilitiesARead-onlyInspect
Query OSV.dev for known vulnerabilities across up to 100 npm packages at once — ideal for scanning a whole package.json/lockfile in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| packages | Yes | 1-100 packages to check |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds value by naming the external source (OSV.dev) and the batch limit (up to 100, also in schema), but does not disclose return format, error behavior, or rate limits. With annotations present, this is acceptable but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that states the function, scope, and use case efficiently. Every phrase earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter tool with rich schema, clear annotations, and a focused description. The description fully covers purpose, scale, and ideal usage scenario, making it complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with a clear description of the 'packages' array ('1-100 packages to check'). The description adds domain context (npm, package.json/lockfile) but does not provide additional syntax or format details. Baseline 3 is appropriate since the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Query OSV.dev for known vulnerabilities'), the resource ('npm packages'), and the batch scope ('up to 100 at once'). It distinguishes itself from likely sibling 'query_vulnerabilities' by emphasizing batch processing and the specific use case of scanning a package.json/lockfile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context ('ideal for scanning a whole package.json/lockfile in one call') that implies this tool is for batch queries. However, it does not explicitly state when to use a single-query sibling or when not to use this tool, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_latest_advisoriesGet latest npm security advisoriesARead-onlyInspect
Browse the most recently published, reviewed GitHub Security Advisories for the npm ecosystem, optionally filtered by severity.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (default 1) | |
| severity | No | Filter by severity (default all) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool as read-only (readOnlyHint=true) and non-destructive, so the description's job is lighter. It adds context about the source being GitHub Security Advisories and that advisories are 'reviewed', but does not disclose additional behaviors such as pagination limits or result formatting. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, 18-word sentence effectively communicates the tool's purpose and filtering capability. It is front-loaded with the action and resource, with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with two optional, well-documented parameters and no output schema, the description covers the essential purpose and main filter. It does not explain next steps or return shape, but that is unnecessary given the schema and annotations. It might benefit from mentioning pagination behavior, but page is documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both page and severity parameters are fully described in the input schema (100% coverage), including default values and allowed enums. The description only mentions the severity filter, not the page parameter, so it adds no additional meaning beyond the schema. This meets the baseline for a schema-covered set of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool browses the most recently published, reviewed GitHub Security Advisories for the npm ecosystem, with optional severity filtering. It uses a specific verb ('browse') and resource ('GitHub Security Advisories'), and distinguishes itself from sibling tools like query_vulnerabilities by focusing on 'latest' advisories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes a clear use case: browsing the latest advisories, optionally filtered by severity. However, it does not explicitly contrast this with sibling tools like query_vulnerabilities or batch_query_vulnerabilities, nor does it mention negative conditions when not to use this tool. Thus, the usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_packageGet npm package detailsARead-onlyInspect
Fetch npm registry metadata for a package: latest version, install scripts (preinstall/postinstall are a key risk signal), maintainers, license, and recent version history. Includes a link to the full npmscan.com analysis page.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact npm package name, e.g. "lodash" or "@scope/name" |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a safe read-only operation (readOnlyHint=true, destructiveHint=false). The description adds useful context about the returned metadata (including install scripts as a risk signal) and the inclusion of a link to the npmscan.com analysis page, which goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The first sentence front-loads the main verb and resource, then lists specific metadata fields. The second sentence mentions the link to the analysis page. No redundant or filler content exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single parameter, clear schema, and annotations confirming read-only safety, the description is quite complete. It lists the key return fields and the external link. However, because there is no output schema, the description could be slightly more explicit about the response format or pagination, though it's adequate for this simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides a clear description of the single 'name' parameter with examples and length constraints (100% coverage). The description does not add additional meaning about the parameter beyond what is in the schema, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and resource ('npm registry metadata') and lists concrete fields (latest version, install scripts, maintainers, license, version history). This clearly differentiates it from sibling get_package_version, which focuses on a specific version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for inspecting package metadata and highlights install scripts as a risk signal, which suggests a security analysis context. However, it does not explicitly state when to use this tool over siblings like get_package_version or search_packages, so the guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_package_versionGet a specific npm package versionARead-onlyInspect
Fetch registry metadata for one exact version of a package (dependencies, install scripts, tarball). Use this to check a version pinned in a lockfile rather than the latest release.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Exact npm package name | |
| version | Yes | Exact version string, e.g. "4.17.21" |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true and non-destructive. Description adds behavioral context by enumerating the registry metadata fields returned (dependencies, install scripts, tarball), which complements the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states the action and return contents, second provides usage context. No redundant wording, all details earn their place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter, read-only tool with strong annotations, the description fully captures purpose, return contents, and appropriate use case. No output schema exists, but the metadata listing gives adequate return expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema descriptions already cover both parameters with exact names and examples (schema coverage 100%). Description adds minimal extra meaning beyond emphasizing 'exact version' and lockfile context, but the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it fetches registry metadata for one exact package version, listing specific metadata (dependencies, install scripts, tarball). Distinguishes from sibling tools by explicitly contrasting with the latest release use case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: checking a version pinned in a lockfile. Contrasts with fetching the latest release, implying an alternative tool. This satisfies the 'when/when-not' criterion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_vulnerabilitiesQuery known vulnerabilities for a packageARead-onlyInspect
Query OSV.dev for known vulnerabilities affecting an npm package, optionally scoped to one version. Use before recommending or installing a package.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | npm package name | |
| version | No | Optional exact version to narrow results | |
| ecosystem | No | OSV ecosystem, default "npm" |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds that the tool queries OSV.dev (an external service) and can be version-scoped, which is useful context. However, it does not describe the response format, potential rate limits, or behavior beyond what annotations already cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the key action and resource, followed by a concise usage note. Every word earns its place—no redundancy, fluff, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and well-covered by schema and annotations. The description provides the essential purpose and usage context. There is no output schema, but the return type ('known vulnerabilities') is implied, and for a read-only query this is sufficient. It could mention the batch alternative, but that is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the schema already documents name, version, and ecosystem with descriptions. The description's references to 'npm package' and 'one version' simply restate the schema. No additional semantic meaning is provided beyond the structured definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the exact action ('Query OSV.dev'), the resource ('known vulnerabilities affecting an npm package'), and the optional scope ('optionally scoped to one version'). It clearly distinguishes from sibling tools like batch_query_vulnerabilities by focusing on a single package.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: 'Use before recommending or installing a package.' This gives clear context for when to invoke the tool. However, it does not mention alternatives (e.g., batch_query_vulnerabilities for multiple packages), so it lacks the exclusions needed for a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_packagesSearch npm packagesARead-onlyInspect
Search the npm registry by name or keywords. Returns matching packages with a link to their full npmscan.com risk/analysis page.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return (default 20, max 50) | |
| query | Yes | Search text, e.g. a package name or keywords |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds useful behavioral context by stating it returns matching packages with a link to a full risk/analysis page, which is beyond the annotations. It does not detail pagination or sorting, but given the simple tool and annotation coverage, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences with front-loaded action. The first sentence states the core purpose, the second adds valuable return-behavior detail. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with no output schema, the description adequately covers what it does, what it returns (matching packages and a link), and the resource (npm registry). Annotations cover safety, and siblings are differentiated. No significant gaps for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description's phrase 'by name or keywords' adds minimal value beyond the schema's parameter description for 'query'. The 'limit' parameter is not mentioned, but the schema fully documents it. Thus no significant additional meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and resource ('npm registry'), and clarifies scope ('by name or keywords'). It clearly distinguishes from sibling tools like get_package and query_vulnerabilities by focusing on package search rather than exact lookup or vulnerability queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: search for packages by name or keywords. It does not explicitly state when not to use it or name alternatives, but the context is clear and distinct from siblings. No exclusions are mentioned, which is acceptable for a straightforward search tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
hey guys
Related MCP Servers
- AlicenseAqualityAmaintenanceGTM signal intelligence suite for AI agents. Six tools: hiring signals, tech stack detection, company-to-LinkedIn resolution, ICP scoring, job board scanning, and a combined signals aggregator. Built for outbound sales workflows.Last updated11631MIT

industrylens-mcpofficial
Flicense-qualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.Last updated
Sociality MCPofficial
Alicense-qualityDmaintenanceSocial media analytics, post insights, and competitor benchmarking for AI agents.Last updated5MIT- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.Last updated1781MIT