Skip to main content
Glama
CloudWaddie

OSINT MCP Server

url_tech_stack

Detect the technology stack of a website by analyzing its URL to identify frameworks, libraries, and infrastructure components for security research and intelligence gathering.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYesURL to detect technology stack for

Implementation Reference

  • The implementation of the 'detect' method which identifies the technology stack from a URL.
    async detect(url: string): Promise<any> {
      try {
        const response = await fetch(url);
        const headers = Object.fromEntries(response.headers.entries());
        const html = await response.text();
    
        const techs = new Set<string>();
    
        // Check Headers
        if (headers["server"]) {
          if (headers["server"].includes("cloudflare")) techs.add("Cloudflare");
          if (headers["server"].includes("nginx")) techs.add("Nginx");
          if (headers["server"].includes("apache")) techs.add("Apache");
        }
        if (headers["x-powered-by"]) techs.add(headers["x-powered-by"]);
        if (headers["x-nextjs-cache"]) techs.add("Next.js");
    
        // Check HTML patterns
        if (html.includes("wp-content")) techs.add("WordPress");
        if (html.includes("_next/static")) techs.add("Next.js");
        if (html.includes("react")) techs.add("React");
        if (html.includes("vue")) techs.add("Vue.js");
        if (html.includes("google-analytics")) techs.add("Google Analytics");
        if (html.includes("tailwind")) techs.add("Tailwind CSS");
        if (html.includes("bootstrap")) techs.add("Bootstrap");
    
        return {
          url,
          technologies: Array.from(techs),
          headers: headers
        };
      } catch (error) {
        throw new McpError(ErrorCode.InternalError, `Tech Detector error: ${(error as Error).message}`);
      }
    }
  • src/index.ts:512-521 (registration)
    Registration of the 'url_tech_stack' tool using the 'techClient'.
    server.tool(
      "url_tech_stack",
      { url: z.string().url().describe("URL to detect technology stack for") },
      async ({ url }) => {
        const result = await techClient.detect(url);
        return {
          content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
        };
      }
    );

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/CloudWaddie/osint-mcp'

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