urlDNA
官方使用 urlDNA.io 动态扫描和分析潜在恶意 URL
你可以用 urlDNA MCP 做什么?
- 即时URL安全检查 — 使用
fast_check快速验证URL是安全、恶意还是未评级。 - 完整URL扫描 — 使用
new_scan提交URL进行全面扫描,并通过get_scan按ID获取结果。 - 基于CQL的威胁搜索 — 使用
search配合AND/OR表达式,跨域名、IP、技术和恶意标志搜索扫描结果。 - 已保存查询管理 — 使用
create_query、list_queries、update_query和delete_query创建、列出、更新和删除可复用的CQL过滤器。 - 品牌监控 — 使用
list_brands、get_brand和brand_scans列出品牌、获取详情并检索关联扫描。 - API文档查询 — 使用
search_docs直接获取完整的urlDNA OpenAPI文档。
文档
urlDNA MCP 服务器

urlDNA MCP Server 支持面向安全领域的 LLM 代理(如 OpenAI GPT、Google Gemini 和 Claude Desktop)原生使用工具,通过 API 提供与 urlDNA 威胁情报平台的直接交互接口。
该仓库通过两种传输方式暴露相同的工具集:
stdio用于本地桌面集成,如 Claude Desktop。streamable-http用于托管部署,如 Cloud Run。
安装与设置
本项目使用 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
快速开始
- 克隆并设置项目:
git clone <repository-url>
cd urlDNA-mcp-server
uv sync
- 本地运行 MCP 服务器(stdio 模式):
uv run python urldna_mcp/run.py
- 以流式 HTTP 模式运行 MCP 服务器:
uv run python urldna_mcp/server.py
托管服务器会读取以下环境变量:
PORT:绑定的 HTTP 端口。默认为8080。MCP_PATH:公共 MCP 端点路径。默认为/。
开发
# 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/
该服务器可通过流式 HTTP 访问,适用于 Cloud Run 和其他请求驱动的平台。
您可以直接将其与任何支持 MCP 规范的平台或 LLM 配合使用(例如 Claude Desktop、OpenAI GPT、Google Gemini)。
支持的工具
扫描
| 工具 | 描述 |
|---|---|
fast_check | 立即检查 URL 是否已被扫描。返回 SAFE / MALICIOUS / UNRATED。 |
new_scan | 提交 URL 进行完整扫描并等待结果(约 30–60 秒)。 |
get_scan | 按 ID 检索完整的扫描结果。 |
搜索
| 工具 | 描述 |
|---|---|
search | 使用 CQL(自定义查询语言)在域名、IP、技术、恶意标记等方面搜索扫描记录。支持 AND 和 OR 表达式以及分页(第 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 | 获取完整的 urlDNA OpenAPI 和文档。 |
与 Claude Desktop 集成
要将 urlDNA MCP server 集成到 Claude Desktop,请更新您的 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>"
}
}
}
}
将
<YOUR_PATH>替换为包含此仓库的父目录,并将<urlDNA_API_KEY>替换为来自 https://urldna.io 的 API 密钥。
对于托管的 MCP 客户端,请将其指向 https://mcp.urldna.io/ 或您自己部署的 MCP_PATH。
配置完成后,您可以用自然语言向 Claude 发出指令,例如:
"在 urlDNA 中搜索标题类似 paypal 的恶意扫描记录"
"创建一个已保存查询,用于查找来自意大利且被标记为恶意的移动扫描记录"
"显示与 Google 品牌关联的所有扫描记录"
Claude 将自动调用正确的工具并返回来自 urlDNA 平台的结果。
将 MCP 服务器与 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)
将 MCP 服务器与 Google Gemini 配合使用
Gemini 通过 fastmcp 连接到 urlDNA MCP 服务器,工具会自动发现,而非作为 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())
容器部署
使用 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=/
搜索语法
search 和 brand_scans 工具会将提供的 CQL 直接转发到 urlDNA API。您可以使用 AND 或 OR 组合条件。
示例:
malicious = true AND technology LIKE wordpress
domain = google.com OR domain = youtube.com
(domain = paypal.com OR title LIKE paypal) AND country_code = IT
贡献指南
- Fork 本仓库
- 创建功能分支:
git checkout -b feature-name - 安装开发依赖:
uv sync --dev - 进行修改并确保测试通过
- 格式化代码:
uv run black . - 提交拉取请求
联系与支持
如需支持或 API 访问,请访问 https://urldna.io 或发送邮件至 urldna@urldna.io。