urlDNA

oficial

Digitalize e analise dinamicamente URLs potencialmente maliciosas usando o urlDNA.io

O que você pode fazer com urlDNA MCP?

  • Verificação instantânea de segurança de URL — Peça para verificar rapidamente se uma URL é SEGURA, MALICIOSA ou NÃO CLASSIFICADA usando fast_check.
  • Verificação completa de URL — Envie uma URL para uma varredura abrangente com new_scan e recupere os resultados pelo ID via get_scan.
  • Busca de ameaças baseada em CQL — Pesquise varreduras em domínios, IPs, tecnologias e sinalizadores maliciosos usando search com expressões AND/OR.
  • Gerenciamento de consultas salvas — Crie, liste, atualize e exclua filtros CQL reutilizáveis com create_query, list_queries, update_query e delete_query.
  • Monitoramento de marcas — Liste marcas, busque detalhes e recupere varreduras associadas usando list_brands, get_brand e brand_scans.
  • Consulta de documentação da API — Busque a documentação completa da OpenAPI do urlDNA diretamente com search_docs.

Documentação

Servidor MCP urlDNA

Blog

Claude Prompt

O urlDNA MCP Server permite o uso nativo de ferramentas para agentes de LLM focados em segurança, como OpenAI GPT, Google Gemini e Claude Desktop, fornecendo uma interface direta para interagir com a plataforma de inteligência de ameaças urlDNA via API.

O repositório expõe o mesmo conjunto de ferramentas por meio de dois transportes:

  • stdio para integrações locais de desktop, como Claude Desktop.
  • streamable-http para implantações hospedadas, como Cloud Run.

Instalação e Configuração

Este projeto usa uv para gerenciamento rápido de pacotes Python.

Pré-requisitos

Instale o uv se ainda não o tiver:

# On macOS and Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# On Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

# Or with pip
pip install uv

Início Rápido

  1. Clone e configure o projeto:
git clone <repository-url>
cd urlDNA-mcp-server
uv sync
  1. Execute o servidor MCP localmente (modo stdio):
uv run python urldna_mcp/run.py
  1. Execute o servidor MCP no modo HTTP transmissível (streamable HTTP):
uv run python urldna_mcp/server.py

O servidor hospedado lê estas variáveis de ambiente:

  • PORT: Porta HTTP para vincular. O padrão é 8080.
  • MCP_PATH: Caminho público do endpoint MCP. O padrão é /.

Desenvolvimento

# Install development dependencies
uv sync --dev

# Run tests (when available)
uv run pytest

# Format code
uv run black .

# Type checking
uv run mypy .

# Lint code
uv run flake8 .

Servidor MCP Hospedado

O servidor urlDNA MCP já está hospedado e disponível em:

https://mcp.urldna.io/

Este servidor é acessível via HTTP transmissível (streamable HTTP), o que o torna adequado para Cloud Run e outras plataformas orientadas a solicitações.

Você pode usá-lo diretamente com qualquer plataforma ou LLM que suporte a especificação MCP (por exemplo, Claude Desktop, OpenAI GPT, Google Gemini).


Ferramentas Suportadas

Varredura (Scanning)

FerramentaDescrição
fast_checkVerifique instantaneamente se uma URL foi varrida. Retorna SEGURO / MALICIOSO / NÃO AVALIADO.
new_scanEnvie uma URL para uma varredura completa e aguarde o resultado (~30–60s).
get_scanRecupere um resultado completo de varredura por ID.

Busca

FerramentaDescrição
searchBusque varreduras usando CQL (Linguagem de Consulta Personalizada) em domínio, IP, tecnologia, sinalizador malicioso e mais. Suporta expressões AND e OR além de paginação (página 2+ requer PREMIUM).

Consultas Salvas

FerramentaDescrição
list_queriesListe todas as consultas salvas do usuário autenticado.
get_queryRecupere uma consulta salva específica e seus filtros por ID.
create_queryCrie uma nova consulta salva com uma ou mais condições de filtro CQL.
update_queryAtualize o nome e os filtros de uma consulta existente (substituição completa).
delete_queryExclua permanentemente uma consulta salva por ID.
query_scansRecupere todas as varreduras correspondentes a uma consulta salva.

Monitoramento de Marca

FerramentaDescrição
list_brandsListe marcas disponíveis com busca opcional por nome e filtro de visibilidade (ALL / FREE / PREMIUM / USER_BRANDS).
get_brandRecupere detalhes completos de uma marca específica por ID.
brand_scansObtenha todas as varreduras associadas a uma marca. Suporta filtragem CQL adicional.

Referência da API

FerramentaDescrição
search_docsBusque a documentação completa do OpenAPI do urlDNA.

Integração com Claude Desktop

Para integrar o urlDNA MCP server no Claude Desktop, atualize seu claude_desktop_config.json:

{
  "mcpServers": {
    "urlDNA": {
      "command": "uv",
      "args": [
        "--directory",
        "<YOUR_PATH>\\urldna_mcp",
        "run",
        "urldna_mcp\\run.py"
      ],
      "env": {
        "x-api-key": "<urlDNA_API_KEY>"
      }
    }
  }
}

Substitua <YOUR_PATH> pelo diretório pai que contém este repositório e <urlDNA_API_KEY> pela sua chave de API de https://urldna.io.

Para clientes MCP hospedados, aponte-os para https://mcp.urldna.io/ ou para seu próprio MCP_PATH implantado.

Uma vez configurado, você pode solicitar ao Claude em linguagem natural, por exemplo:

"Pesquise no urlDNA por varreduras maliciosas com título semelhante a paypal"

"Crie uma consulta salva para varreduras móveis da Itália sinalizadas como maliciosas"

"Mostre-me todas as varreduras associadas à marca Google"

O Claude chamará automaticamente a ferramenta correta e retornará os resultados da plataforma urlDNA.


Usando o Servidor MCP com OpenAI GPT

from openai import OpenAI

# Initialize OpenAI client (assumes OPENAI_API_KEY is set via environment variable)
client = OpenAI()

response = client.responses.create(
    model="gpt-3.5-turbo",  # Note: MCP tool use requires a Responses API-compatible model
    input=[
        {
            "role": "system",
            "content": [{"type": "input_text", "text": "You are a cybersecurity analyst using urlDNA."}]
        },
        {
            "role": "user",
          "content": [{"type": "input_text", "text": "Search in urlDNA for malicious scans with title like paypal or login"}]
        }
    ],
    text={"format": {"type": "text"}},
    reasoning={},
    tools=[
        {
            "type": "mcp",
            "server_label": "urlDNA",
            "server_url": "https://mcp.urldna.io/",
            "headers": {
                "x-api-key": "<URLDNA_API_KEY>"  # Replace with your urlDNA API key
            },
            "allowed_tools": [
                # --- Scanning ---
                "new_scan",       # Submit a URL for a full scan and wait for the result
                "get_scan",       # Retrieve a scan result by ID
                "fast_check",     # Lightweight instant safety check (SAFE / MALICIOUS / UNRATED)

                # --- Search ---
                "search",         # Search scans using CQL (Custom Query Language, AND/OR supported)

                # --- Saved Queries (PREMIUM) ---
                "list_queries",
                "get_query",
                "create_query",
                "update_query",
                "delete_query",
                "query_scans",

                # --- Brand Monitoring (PREMIUM) ---
                "list_brands",
                "get_brand",
                "brand_scans",

                # --- API Reference ---
                "search_docs",
            ],
            "require_approval": "never"
        }
    ],
    temperature=0.7,
    top_p=1,
    max_output_tokens=2048,
    store=True
)

print(response.output)

Usando o Servidor MCP com Google Gemini

O Gemini se conecta ao servidor urlDNA MCP via fastmcp, e as ferramentas são descobertas automaticamente em vez de passadas como uma lista allowed_tools.

import os
import asyncio
from fastmcp import Client
from fastmcp.client.transports import StreamableHttpTransport
from google import genai

async def main():
    # 1. Connect FastMCP client directly to streamable-http
    transport = StreamableHttpTransport(
        "https://mcp.urldna.io/",
        headers={"x-api-key": os.getenv("URLDNA_API_KEY", "YOUR_KEY")},
    )
    client_mcp = Client(transport)

    async with client_mcp:
        ai = genai.Client(vertexai=True, project=os.getenv("GOOGLE_CLOUD_PROJECT", "YOUR_PROJECT_ID"))
        response = await ai.aio.models.generate_content(
            model="gemini-2.5-flash",
            contents="Search in urlDNA for malicious scans with title like paypal",
            # Pass the live MCP session (not just tool declarations) so Gemini
            # can automatically call tools and receive their results.
            config=genai.types.GenerateContentConfig(tools=[client_mcp.session]),
        )

        print(response.text)


if __name__ == "__main__":
    asyncio.run(main())

Implantação em Contêiner

Compile e execute com Docker:

# Build the container
docker build -t urldna-mcp-server .

# Run the server
docker run -p 8080:8080 -e x-api-key=<URLDNA_API_KEY> urldna-mcp-server

# Optional: override the public MCP path if you do not want /
docker run -p 8080:8080 -e MCP_PATH=/custom-path -e x-api-key=<URLDNA_API_KEY> urldna-mcp-server

# Cloud Run example
gcloud run deploy urldna-mcp-server \
  --source . \
  --allow-unauthenticated \
  --set-env-vars MCP_PATH=/

Sintaxe de Busca

As ferramentas search e brand_scans encaminham o CQL fornecido diretamente para a API do urlDNA. Você pode combinar condições com AND ou OR.

Exemplos:

malicious = true AND technology LIKE wordpress
domain = google.com OR domain = youtube.com
(domain = paypal.com OR title LIKE paypal) AND country_code = IT

Contribuindo

  1. Faça um fork do repositório
  2. Crie um branch de funcionalidade: git checkout -b feature-name
  3. Instale as dependências de desenvolvimento: uv sync --dev
  4. Faça suas alterações e garanta que os testes passem
  5. Formate o código: uv run black .
  6. Envie um pull request

Contato e Suporte

Para suporte ou acesso à API, visite https://urldna.io ou envie um e-mail para urldna@urldna.io.