Skip to main content
Glama
sjinks

wpscan-mcp

by sjinks

wpscan-mcp

An MCP server (TypeScript) that exposes a few tools for the WPScan (wpscan.com) API v3.

Requirements

  • Node.js >= 18

  • A WPScan API token

Related MCP server: cwe-search_mcp

Setup

Node.js

npm install

Set your token:

export WPSCAN_API_TOKEN="..."

Build & run:

npm run build
node dist/index.js

Bun

Install dependencies and compile:

bun install
bun run compile

Set your token:

export WPSCAN_API_TOKEN="..."

Run:

./wpscan-mcp

If, for some reason, compilation does not work:

bun install
bun run build
export WPSCAN_API_TOKEN="..."
bun run dist/index.js

Type generation (optional)

This project can generate TypeScript types directly from the WPScan OpenAPI spec:

# Node.js:
npm run generate-types

# Bun:
bun run generate-types

Notes:

  • The OpenAPI spec is fetched from https://wpscan.com/docs/api/v3/v3.yml/.

MCP tools

  • wpscan_plugin_lookup

    • Args: { slug: string, version?: string }

  • wpscan_theme_lookup

    • Args: { slug: string, version?: string }

  • wpscan_core_lookup

    • Args: { version: number }

    • Note: WPScan expects the WordPress version with dots removed (e.g. 6.4.2642).

  • wpscan_lookup_vuln

    • Args: { wpvdbId: string } (e.g. WPVDB-ID-12345)

Usage with an MCP client

This server uses stdio transport.

Example: Claude Desktop config

Add a server entry to your Claude Desktop MCP config (path varies by OS). Example:

{
  "mcpServers": {
    "wpscan": {
      "command": "node",
      "args": ["/path/to/wpscan-mcp/dist/index.js"],
      "env": {
        "WPSCAN_API_TOKEN": "YOUR_TOKEN_HERE"
      }
    }
  }
}

Then restart the client so it picks up the new MCP server.

Example: VSCode

Bun

Create .vscode/mcp.json:

{
  "servers": {
    "wpscan": {
      "type": "stdio",
      "command": "${workspaceFolder}/wpscan-mcp",
      "args": [],
      "env": {
        "WPSCAN_API_TOKEN": "YOUR_TOKEN_HERE"
      }
    }
  }
}

Node.js

{
  "servers": {
    "wpscan": {
      "type": "stdio",
      "command": "node",
      "args": ["${workspaceFolder}/dist/index.js"],
      "env": {
        "WPSCAN_API_TOKEN": "YOUR_TOKEN_HERE"
      }
    }
  }
}

Tool call examples

  • Plugin lookup:

{ "slug": "woocommerce" }
  • Theme lookup (specific version):

{ "slug": "astra", "version": "4.6.3" }
  • Core lookup (WordPress 6.4.2 → 642):

{ "version": 642 }
  • Vulnerability lookup:

{ "wpvdbId": "WPVDB-ID-12345" }

Available Tools

4 tools
wpscan_core_lookupB

Lookup WordPress core vulnerabilities in the WPScan API (optionally filter by version).

ParametersJSON Schema
NameRequiredDescriptionDefault
versionYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as authentication requirements, rate limits, return behavior, or error conditions. The description only states the lookup purpose and optional filter, leaving significant gaps for safe invocation.

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

Conciseness4/5

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

The description is a single sentence that directly conveys the purpose and optional parameter. It is efficiently front-loaded with no superfluous information.

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 no output schema, no annotations, and one parameter with 0% coverage, the description lacks details on return values, error handling, version format, and default behavior. It is insufficient for an agent to use correctly without additional context.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It mentions an optional version filter but does not clarify the expected format (e.g., WordPress version string), constraints, or behavior when omitted. The additive value is minimal.

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

Purpose5/5

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

The description clearly uses the verb 'lookup' and specifies the resource as 'WordPress core vulnerabilities in the WPScan API'. It also mentions the optional version filter, which differentiates from sibling tools that target plugins, themes, or general vulnerabilities.

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

Usage Guidelines3/5

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

The description implies usage for core vulnerabilities but does not explicitly state when to use this tool over siblings like wpscan_plugin_lookup or wpscan_theme_lookup. No when-not or alternative guidance is provided.

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

wpscan_lookup_vulnA

Lookup a vulnerability by its WPScan ID (e.g., WPVDB-ID-12345).

ParametersJSON Schema
NameRequiredDescriptionDefault
wpvdbIdYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states 'lookup,' implying a read operation, but does not mention authentication, rate limits, error handling (e.g., ID not found), or whether the tool is destructive. This is insufficient for a tool with no annotations.

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, front-loaded sentence that conveys the essential information without any wasted words. It is efficient and easy to parse.

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?

For a simple lookup tool with one parameter and no output schema, the description covers the basic purpose. However, it lacks information about the return value, error behavior on invalid IDs, or any prerequisites. This leaves some gaps for an agent to infer.

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

Parameters4/5

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

The input schema has 0% description coverage, but the tool description provides the expected format 'WPScan ID (e.g., WPVDB-ID-12345)' for the wpvdbId parameter. This adds meaning beyond the schema's simple string type, helping the agent understand the exact input format.

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

Purpose5/5

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

The description clearly states the tool's purpose: lookup a vulnerability by its WPScan ID. It specifies the action (lookup), the resource (vulnerability), and the identifier format with an example. This distinguishes it from sibling tools that look up cores, plugins, or themes.

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

Usage Guidelines3/5

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

The description implies usage when you have a WPScan vulnerability ID, but it does not explicitly state when to use this tool versus siblings (e.g., when to use for vulnerabilities vs. other WPScan entities). There is no guidance on prerequisites or exceptions.

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

wpscan_plugin_lookupB

Lookup a WordPress plugin in the WPScan API (by slug; optionally include a version).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
versionNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only states 'Lookup a WordPress plugin', implying a read operation, but omits whether the call is read-only, has side effects, requires authentication, has rate limits, or what the response format is. This lack of detail hampers the agent's ability to manage expectations.

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 13-word sentence that is front-loaded with the verb and key details. Every word earns its place, making it efficient and easy for an agent to parse quickly.

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?

Given the tool's simplicity (2 params, 1 required, no output schema), the description is passable. However, it does not specify what the lookup returns (e.g., vulnerabilities, metadata, or error cases), which is necessary given the lack of an output schema. It meets the minimum but is not comprehensive.

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?

With 0% schema description coverage, the description carries the full burden. It adds meaning by explaining that 'slug' is the plugin identifier and 'version' is optional, but it does not provide format, examples, or constraints beyond the schema's minLength. This is minimally sufficient but not rich.

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

Purpose5/5

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

The description clearly states the verb 'Lookup', the resource 'WordPress plugin', and the lookup method 'by slug; optionally include a version'. It effectively differentiates from sibling tools like wpscan_theme_lookup by specifying the entity type.

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?

The description provides no guidance on when to use this tool versus its siblings (wpscan_core_lookup, wpscan_lookup_vuln, wpscan_theme_lookup). It does not mention any prerequisites, contextual triggers, or exclusion criteria, leaving the agent to infer usage solely from the tool name.

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

wpscan_theme_lookupB

Lookup a WordPress theme in the WPScan API (by slug; optionally include a version).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
versionNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It indicates a read operation (lookup) but lacks details on side effects, permissions, rate limits, or what the response contains. This is insufficient for a tool with no annotations.

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 efficient sentence (16 words) with no redundancy. It is front-loaded with the action and resource, making it easy to parse quickly.

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 low complexity (2 params, no output schema), the description is incomplete. It does not specify what the lookup returns (e.g., vulnerability info, version details) or provide usage guidance, which are needed for full understanding.

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?

The description adds basic meaning: 'by slug; optionally include a version' covers the two parameters partially. With 0% schema description coverage, the description provides minimal value but does not explain format or constraints beyond minLength.

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

Purpose5/5

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

The description clearly states the verb 'Lookup' and the resource 'WordPress theme' using the WPScan API by slug, optionally with a version. It is specific enough to distinguish from sibling tools like wpscan_core_lookup and wpscan_plugin_lookup.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool over alternatives. However, the name and sibling context imply it is for theme-specific lookups, so usage is somewhat clear but not fully explicit.

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. 4 tool updatesv1.0.1
    • First observedwpscan_core_lookup
    • First observedwpscan_lookup_vuln
    • First observedwpscan_plugin_lookup
    • First observedwpscan_theme_lookup

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct resource: core WordPress vulnerabilities, specific vulnerability by ID, plugin vulnerabilities, and theme vulnerabilities. There is no overlap, and agents can easily distinguish which tool to use.

Naming Consistency4/5

All tools share the 'wpscan_' prefix, but the naming patterns vary slightly: three use object_lookup (core, plugin, theme) while one uses lookup_vuln. This is a minor inconsistency but still readable and understandable.

Tool Count5/5

With only 4 tools, the server is well-scoped for querying WordPress vulnerabilities. Each tool covers a key area (core, plugins, themes, individual vulnerabilities), and the count is appropriate for the domain without unnecessary bloat.

Completeness4/5

The tools cover the main vulnerability lookup operations for WordPress. However, a search or list-all tool is missing, which could limit agents needing to browse vulnerabilities without a specific ID or slug. This is a minor gap.

Maintenance

ActivityActive
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
    Not graded
    quality
    C
    maintenance
    Wraps the ScanMalware.com API to enable phishing triage, malware scanning, and certificate inspection through natural language, allowing users to submit scans, retrieve results, and analyze threats via MCP tools.
    Apache 2.0

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/sjinks/wpscan-mcp-server'

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