urlDNA MCP Server

ทางการ

สแกนและวิเคราะห์ URL ที่อาจเป็นอันตรายแบบไดนามิกโดยใช้ urlDNA.io

เอกสาร

urlDNA MCP Server

บล็อก

Claude Prompt

urlDNA MCP Server ช่วยให้เอเจนต์ LLM ที่เน้นด้านความปลอดภัย เช่น OpenAI GPT-4.1 และ Claude Desktop สามารถใช้เครื่องมือแบบเนทีฟได้ โดยมีอินเทอร์เฟซโดยตรงเพื่อโต้ตอบกับแพลตฟอร์มข่าวกรองภัยคุกคาม urlDNA ผ่าน API


การติดตั้งและการตั้งค่า

โปรเจกต์นี้ใช้ uv สำหรับการจัดการแพ็กเกจ Python ที่รวดเร็ว

ข้อกำหนดเบื้องต้น

ติดตั้ง uv หากคุณยังไม่ได้ติดตั้ง:

# 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

เริ่มต้นอย่างรวดเร็ว

  1. โคลนและตั้งค่าโปรเจกต์:
git clone <repository-url>
cd urlDNA-mcp-server
uv sync
  1. รันเซิร์ฟเวอร์ MCP ในเครื่อง (โหมด stdio):
uv run python urldna_mcp/run.py
  1. รันเซิร์ฟเวอร์ MCP ในโหมด SSE:
uv run python urldna_mcp/server.py

การพัฒนา

# 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 .

เซิร์ฟเวอร์ MCP แบบโฮสต์

เซิร์ฟเวอร์ urlDNA MCP ได้รับการโฮสต์และพร้อมใช้งานแล้วที่:

https://mcp.urldna.io/sse

เซิร์ฟเวอร์นี้สามารถเข้าถึงได้ผ่านโปรโตคอล Server-Sent Events (SSE) ซึ่งรองรับการโต้ตอบแบบสตรีมมิ่งระหว่าง LLM และเครื่องมือแบ็กเอนด์

คุณสามารถใช้งานได้โดยตรงกับแพลตฟอร์มหรือ LLM ใดๆ ที่รองรับข้อกำหนด MCP (เช่น Claude Desktop, OpenAI GPT-4.1)


เครื่องมือที่รองรับ

การสแกน

เครื่องมือคำอธิบาย
fast_checkตรวจสอบทันทีว่า URL ได้รับการสแกนหรือไม่ ส่งกลับ SAFE / MALICIOUS / UNRATED
new_scanส่ง URL เพื่อสแกนแบบเต็มและรอผลลัพธ์ (~30–60 วินาที)
get_scanดึงผลการสแกนที่สมบูรณ์ด้วย ID

การค้นหา

เครื่องมือคำอธิบาย
searchค้นหาการสแกนโดยใช้ CQL (Custom Query Language) ในโดเมน, IP, เทคโนโลยี, แฟล็กที่เป็นอันตราย และอื่นๆ รองรับการแบ่งหน้า (หน้า 2+ ต้องใช้ PREMIUM)

แบบสอบถามที่บันทึกไว้

เครื่องมือคำอธิบาย
list_queriesแสดงรายการแบบสอบถามที่บันทึกไว้ทั้งหมดสำหรับผู้ใช้ที่ตรวจสอบสิทธิ์แล้ว
get_queryดึงแบบสอบถามที่บันทึกไว้เฉพาะและตัวกรองด้วย ID
create_queryสร้างแบบสอบถามที่บันทึกไว้ใหม่ด้วยเงื่อนไขตัวกรอง CQL หนึ่งรายการขึ้นไป
update_queryอัปเดตชื่อและตัวกรองของแบบสอบถามที่มีอยู่ (แทนที่ทั้งหมด)
delete_queryลบแบบสอบถามที่บันทึกไว้อย่างถาวรด้วย ID
query_scansดึงการสแกนที่ตรงกันทั้งหมดสำหรับแบบสอบถามที่บันทึกไว้

การตรวจสอบแบรนด์

เครื่องมือคำอธิบาย
list_brandsแสดงรายการแบรนด์ที่มีอยู่พร้อมการค้นหาชื่อและตัวกรองการมองเห็น (ALL / FREE / PREMIUM / USER_BRANDS)
get_brandดึงรายละเอียดทั้งหมดของแบรนด์เฉพาะด้วย ID
brand_scansรับการสแกนทั้งหมดที่เกี่ยวข้องกับแบรนด์ รองรับการกรอง CQL เพิ่มเติม

เอกสารอ้างอิง API

เครื่องมือคำอธิบาย
search_docsดึง OpenAPI และเอกสารประกอบของ urlDNA แบบเต็ม

การผสานรวมกับ Claude Desktop

เพื่อผสานรวม urlDNA MCP server ใน Claude Desktop ให้อัปเดต claude_desktop_config.json ของคุณ:

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

แทนที่ <YOUR_PATH> ด้วยพาธจริงไปยังไดเรกทอรีโปรเจกต์ และ <urlDNA_API_KEY> ด้วยคีย์ API ของคุณจาก https://urldna.io

เมื่อกำหนดค่าแล้ว คุณสามารถถาม Claude ด้วยภาษาธรรมชาติได้ เช่น:

"ค้นหาใน urlDNA สำหรับการสแกนที่เป็นอันตรายที่มีชื่อเรื่องคล้าย paypal"

"สร้างแบบสอบถามที่บันทึกไว้สำหรับการสแกนมือถือจากอิตาลีที่ถูกตั้งค่าสถานะว่าเป็นอันตราย"

"แสดงการสแกนทั้งหมดที่เกี่ยวข้องกับแบรนด์ Google"

Claude จะเรียกเครื่องมือที่ถูกต้องโดยอัตโนมัติและส่งคืนผลลัพธ์จากแพลตฟอร์ม urlDNA


การใช้เซิร์ฟเวอร์ MCP กับ OpenAI GPT-4.1

from openai import OpenAI

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

response = client.responses.create(
    model="gpt-4.1",  # GPT-4.1 supports native MCP tool use
    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"}]
        }
    ],
    text={"format": {"type": "text"}},
    reasoning={},
    tools=[
        {
            "type": "mcp",
            "server_label": "urlDNA",
            "server_url": "https://mcp.urldna.io/sse",
            "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)

                # --- 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)

การปรับใช้คอนเทนเนอร์

สร้างและรันด้วย 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

การมีส่วนร่วม

  1. Fork repository
  2. สร้าง branch ฟีเจอร์: git checkout -b feature-name
  3. ติดตั้ง dependencies สำหรับการพัฒนา: uv sync --dev
  4. ทำการเปลี่ยนแปลงของคุณและตรวจสอบให้แน่ใจว่าการทดสอบผ่าน
  5. จัดรูปแบบโค้ด: uv run black .
  6. ส่ง pull request

ติดต่อและสนับสนุน

สำหรับการสนับสนุนหรือการเข้าถึง API โปรดไปที่ https://urldna.io หรืออีเมล [email protected]