Wappalyzer MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
npm install
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add -e "WAPPALYZER_API_KEY=${WAPPALYZER_API_KEY}" wappalyzer -- node "<FULL_PATH_TO_MCP>/dist/index.js"

Replace <FULL_PATH_TO_MCP>/dist/index.js with the actual folder you prepared in step 1.

Required:WAPPALYZER_API_KEY+ 3 optional
README.md

Identify web technologies, subdomains, and site metadata.

Wappalyzer MCP

wappalyzer-mcp is a local stdio MCP server that wraps the public Wappalyzer API.

Requirements

  • Node.js 20+
  • A Wappalyzer API key in WAPPALYZER_API_KEY

Install

cd /Users/elbert/Sites/wappalyzer/mcp
npm install

Run

WAPPALYZER_API_KEY=your_api_key npx wappalyzer-mcp

Environment variables:

  • WAPPALYZER_API_KEY required
  • WAPPALYZER_API_BASE_URL optional, defaults to https://api.wappalyzer.com/v2/
  • WAPPALYZER_METADATA_BASE_URL optional, defaults to WAPPALYZER_API_BASE_URL
  • WAPPALYZER_HTTP_TIMEOUT_MS optional, defaults to 30000

The server fails fast on startup if WAPPALYZER_API_KEY is missing.

Tools

`lookup_site`

Inputs:

  • url required
  • live optional, default false
  • sets optional, default []
  • denoise optional, default true
  • max_age optional, default 2

Notes:

  • exactly one URL is accepted
  • recursive=false is always forced
  • unsupported async-only parameters are not exposed
  • sets is limited to locale, email, phone, contact, social, meta, security, trackers, company, keywords, signals, createdAt, events, and all

Output:

{
  "request": {
    "url": "https://www.wappalyzer.com/",
    "live": false,
    "sets": [
      "company",
      "contact"
    ],
    "denoise": true,
    "max_age": 2,
    "recursive": false
  },
  "data": {},
  "credits": {
    "spent": 1,
    "remaining": 99999
  }
}

`lookup_subdomains`

Inputs:

  • domain required
  • limit optional, default 100
  • after optional

Notes:

  • exactly one domain is accepted
  • limit must be between 10 and 1000 and a multiple of 10

Output:

{
  "request": {
    "domain": "example.com",
    "limit": 100
  },
  "data": {},
  "credits": {
    "spent": 1,
    "remaining": 99999
  }
}

`get_credit_balance`

Output:

{
  "credits": 99999
}

Resources

  • wappalyzer://technologies
  • wappalyzer://technologies/{slug}
  • wappalyzer://categories
  • wappalyzer://categories/{slug}

These resources are read-only and fetch public metadata from:

  • GET /technologies/
  • GET /technologies/{slug}/
  • GET /categories/
  • GET /categories/{slug}/

Metadata resources do not send the API key and are cached in-process for 5 minutes.

Client Config

Claude Desktop

Add this to claude_desktop_config.json:

{
  "mcpServers": {
    "wappalyzer": {
      "command": "node",
      "args": [
        "/Users/elbert/Sites/wappalyzer/mcp/index.js"
      ],
      "env": {
        "WAPPALYZER_API_KEY": "your_api_key"
      }
    }
  }
}

Cursor

Add this to .cursor/mcp.json:

{
  "mcpServers": {
    "wappalyzer": {
      "command": "node",
      "args": [
        "/Users/elbert/Sites/wappalyzer/mcp/index.js"
      ],
      "env": {
        "WAPPALYZER_API_KEY": "your_api_key"
      }
    }
  }
}

ChatGPT

Use a remote MCP deployment when you need ChatGPT MCP connector support.

Development

Run automated tests:

npm test

Run live smoke tests with the local secret file:

npm run test:live

Tools (3)

lookup_siteIdentify web technologies and metadata for a specific URL.
lookup_subdomainsRetrieve a list of subdomains for a given domain.
get_credit_balanceCheck the remaining API credit balance.

Environment Variables

WAPPALYZER_API_KEYrequiredYour Wappalyzer API key
WAPPALYZER_API_BASE_URLBase URL for the Wappalyzer API
WAPPALYZER_METADATA_BASE_URLBase URL for metadata resources
WAPPALYZER_HTTP_TIMEOUT_MSHTTP request timeout in milliseconds

Configuration

claude_desktop_config.json
{"mcpServers": {"wappalyzer": {"command": "node", "args": ["/path/to/wappalyzer/mcp/index.js"], "env": {"WAPPALYZER_API_KEY": "your_api_key"}}}}

Try it

What technologies are used on https://www.example.com?
Find all subdomains for example.com.
Check my current Wappalyzer API credit balance.
Identify the company and contact information for the website https://www.wappalyzer.com/.

Frequently Asked Questions

What are the key features of Wappalyzer?

Identify web technologies used on specific websites. Retrieve subdomains for a given domain. Access public technology and category metadata. Monitor API credit usage.

What can I use Wappalyzer for?

Analyzing the technology stack of competitor websites. Discovering subdomains for security auditing or reconnaissance. Integrating web technology identification into automated research workflows.

How do I install Wappalyzer?

Install Wappalyzer by running: npm install

What MCP clients work with Wappalyzer?

Wappalyzer works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Wappalyzer docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare