wpscan-mcp
Provides tools for looking up vulnerabilities in WordPress plugins, themes, and core using the WPScan API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wpscan-mcplook up vulnerabilities for the plugin woocommerce"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 installSet your token:
export WPSCAN_API_TOKEN="..."Build & run:
npm run build
node dist/index.jsBun
Install dependencies and compile:
bun install
bun run compileSet your token:
export WPSCAN_API_TOKEN="..."Run:
./wpscan-mcpIf, for some reason, compilation does not work:
bun install
bun run build
export WPSCAN_API_TOKEN="..."
bun run dist/index.jsType generation (optional)
This project can generate TypeScript types directly from the WPScan OpenAPI spec:
# Node.js:
npm run generate-types
# Bun:
bun run generate-typesNotes:
The OpenAPI spec is fetched from
https://wpscan.com/docs/api/v3/v3.yml/.
MCP tools
wpscan_plugin_lookupArgs:
{ slug: string, version?: string }
wpscan_theme_lookupArgs:
{ slug: string, version?: string }
wpscan_core_lookupArgs:
{ version: number }Note: WPScan expects the WordPress version with dots removed (e.g.
6.4.2→642).
wpscan_lookup_vulnArgs:
{ 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 toolswpscan_core_lookupB
Lookup WordPress core vulnerabilities in the WPScan API (optionally filter by version).
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| wpvdbId | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| version | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| version | No |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v1.0.1- First observed
wpscan_core_lookup - First observed
wpscan_lookup_vuln - First observed
wpscan_plugin_lookup - First observed
wpscan_theme_lookup
TDQS
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.
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.
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.
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
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
NVD MCP — wraps the NIST National Vulnerability Database API (free, no auth)
Scans remote MCP servers for protocol, security, and TLS issues; exposes scan tools via MCP.
VirusTotal MCP — file / URL / domain / IP reputation (BYO key)
Enrich, search, assess, and manage threat intelligence through 80+ typed MCP tools.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables interaction with multiple WordPress sites through a proxy that connects to the MCP Expose Abilities plugin. Allows discovering and executing WordPress abilities across configured sites with secure authentication.-
- AlicenseAqualityDmaintenanceEnables querying MITRE's Common Weakness Enumeration database for vulnerability information, supporting CWE lookup, search, taxonomy navigation, and relationship mapping through MCP.96MIT
- AlicenseNot gradedqualityDmaintenanceEnables searching the NIST NVD for CVEs, retrieving full CVE details, checking software for known vulnerabilities, and searching the CPE database.MIT

scanmalware-mcpofficial
AlicenseNot gradedqualityCmaintenanceWraps 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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