Skip to main content

MCP Server for Qianxin Hunter cyberspace mapping

Project description

Qianxin Hunter MCP Server

一个用于查询 Qianxin Hunter 网络空间测绘平台(奇安信鹰图平台)的 MCP (Model Context Protocol) 服务器。

功能特性

  • 🔍 查询资产: 支持按照语法进行资产查询
  • 🗂️ 批量查询: 支持批量 IP、Domain、Company 等查询,支持从本地上传批量查询文件
  • 📤 导出任务创建: 支持创建导出任务(异步任务)
  • 🔄 导出进度查询: 支持查询导出任务进度
  • 📥 导出文件下载: 下载结果文件到本地
  • ⚙️ 环境变量配置: 通过环境变量配置 API-KEY、默认查询字段、默认导出字段、文件下载目录

安装 MCP Server

配置 mcp.json

简单快速配置(推荐)

{
  "mcpServers": {
    "hunter-mcp": {
      "command": "uvx",
      "args": [
        "hunter-mcp"
      ],
      "env": {
        "HUNTER_API_KEY": "xxx"
      }
    }
  }
}

或先安装 cli,再配置 json

# 使用 uv 从 PyPI 下载安装 cli
uv tool install hunter-mcp
{
  "mcpServers": {
    "hunter-mcp": {
      "command": "hunter-mcp",
      "args": [],
      "env": {
        "HUNTER_API_KEY": "xxx"
      }
    }
  }
}

或先下载/安装项目,再配置 json

# 使用 pip 从 PyPI 下载安装 Mcp
pip install hunter-mcp
#pip install --index-url https://pypi.org/simple hunter-mcp
# 从 github 下载安装 Mcp,使用 pip 安装
git clone https://github.com/PiggyHurry/hunter-mcp.git
cd hunter-mcp
pip install .
# pip install -e . # Editable
#pip show hunter-mcp
{
  "mcpServers": {
    "hunter-mcp": {
      "command": "uv",
      "args": [
        "run",
        "hunter-mcp"
      ],
      "env": {
        "HUNTER_API_KEY": "xxx"
      }
    }
  }
}

配置环境变量

{
  "mcpServers": {
    "hunter-mcp": {
      "command": "uvx",
      "args": [
        "hunter-mcp"
      ],
      "env": {
        "HUNTER_API_KEY": "xxx",
        "DEFAULT_SEARCH_FIELDS": "ip,port,domain",
        "DEFAULT_BATCH_FIELDS": "ip,port,domain",
        "DEFAULT_BATCH_SAVE_DIR": "/path/to/download/dir/"
      }
    }
  }
}

环境变量说明

DEFAULT_SEARCH_FIELDS: 检索接口默认返回字段。非必须。
DEFAULT_BATCH_FIELDS: 批量/导出接口默认返回字段。非必须。
DEFAULT_BATCH_SAVE_DIR: 导出文件默认下载目录。非必须。

hunter检索接口和批量/导出接口,默认返回权限内所有可导出字段。
对于检索接口,响应结果会直接返回给大模型,可能会导致模型token消耗过多。可在对话中指定字段,或者配置默认字段的环境变量,以降低token消耗。
    字段优先级:对话中指定字段 > 模型自主选择字段 > 环境变量默认配置字段 > 默认权限内所有字段
对于导出任务,下载接口返回的文件会保存到本地,然后仅将保存地址返回给大模型,不会造成模型token消耗过多。
    如无必要,不要让大模型分析下载后的文件,除非token用不完。

获取 api-key

在 claude code 中配置

# Add hunter mcp
claude mcp add hunter-mcp --env HUNTER_API_KEY=xxx --env DEFAULT_SEARCH_FIELDS=ip,port,domain -- uvx hunter-mcp
# List installed servers
claude mcp list
# Edit hunter mcp
vim ~/.claude.json
{
  "mcpServers": {
    "hunter-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "hunter-mcp"
      ],
      "env": {
        "HUNTER_API_KEY": "xxx"
      }
    }
  }
}

在 opencode 中配置

# Add hunter mcp
opencode mcp add
# List installed servers
opencode mcp list
# Edit hunter mcp
vim ~/.config/opencode/opencode.json
{
  "mcp": {
    "hunter-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "hunter-mcp"
      ],
      "environment": {
        "HUNTER_API_KEY": "xxx"
      }
    }
  }
}

MCP 工具说明

1. Hunter 查询 (hunter_search)

主要参数:

  • search: 查询语法(如ip="1.1.1.1"
  • page: 页码(默认 1)
  • page_size: 每页资产条数(可选:10/50/100,默认 10)
  • start_time: 开始时间(格式:YYYY-MM-DD)
  • end_time: 结束时间(格式:YYYY-MM-DD)
  • is_web: 资产类型,1代表”web资产“,2代表”非web资产“,3代表”全部“
  • status_code: 状态码列表,以逗号分隔,如”200,401“
  • fields: 返回字段

2.1. Hunter 批量查询/导出 (hunter_batch_task_create)

主要参数:

  • search: 查询语法(如ip="1.1.1.1"
  • file_path: 包含检索目标的本地 CSV 文件路径(与 search 二选一提供)。
  • start_time: 开始时间(格式:YYYY-MM-DD)
  • end_time: 结束时间(格式:YYYY-MM-DD)
  • is_web: 资产类型,1代表”web资产“,2代表”非web资产“,3代表”全部“
  • status_code: 状态码列表,以逗号分隔,如”200,401“
  • fields: 返回字段
  • search_type: 上传文件类型,枚举值:all、ip、domain、company
  • assets_limit: 预期导出的资产数量(限制导出条数)

2.2. Hunter 批量查询/导出进度查询 (hunter_batch_task_progress)

主要参数:

  • task_id: 创建批量任务时返回的任务 ID。

2.3. Hunter 批量查询/导出CSV结果下载 (hunter_batch_task_result_download)

主要参数:

  • task_id: 创建批量任务时返回的任务 ID。
  • save_dir: 可选。保存文件的目录。如果未提供,将尝试从环境变量里获取默认目录。
  • file_name: 可选。保存的文件名。如果未提供,将尝试使用服务器返回的文件名。

Hunter 语法简介

匹配运算符:

  • = - 模糊查询,查询包含关键词的资产
  • == - 精确查询,查询有且仅有关键词的资产
  • != - 模糊剔除,剔除包含关键词的资产。使用 !="" 可查询值不为空的情况
  • !== - 精确剔除,剔除有且仅有关键词的资产

逻辑运算符:

  • && - 与(AND)
  • || - 或(OR)
  • () - 括号内表示查询优先级最高

查询示例:

# 模糊匹配
domain="example"
web.body="admin"

# 精确匹配
domain=="example.com"
web.title=="login"

# 模糊剔除
web.body!="admin"

# 精确剔除
domain!=="example.com"

# 查询值不为空
web.title!==""
is_domain="true"

# 逻辑 AND(&&)
ip="1.1.1.1" && is_domain="false"
domain="example.com" && header.status_code="200"

# 逻辑 OR(||)
domain="example.com" || domain="test.com"
web.title="admin" || web.title="login"

# 优先级控制
(web.title="admin" || web.title="login") && ip.tag="CDN"

使用案例(技巧)

1、从Hunter查询 ip="1.1.1.1" && port=80 的测绘资产
预期:(1)Tool: hunter_search {search: "ip=\"1.1.1.1\" && port=80"}

2、从Hunter查询 ip="1.1.1.1" && port=53 的测绘资产,fields="ip,port,domain,banner"
预期:(1)Tool: hunter_search {search: "ip=\"1.1.1.1\" && port=53", fields="ip,port,domain,banner"}
注意:fields参数可省略,默认返回权限内所有字段。优先级:对话中指定字段 > 模型自主选择字段 > 环境变量默认配置字段 > 默认权限内所有字段

3、从Hunter查询 app="OpenClaw" 2026-03-10 更新的资产数量
预期:(1)Tool: hunter_search {search: "ip=\"1.1.1.1\" && port=53", start_time="2026-03-10", end_time="2026-03-10"}

4、从Hunter查询 app="OpenClaw" 从2026年3月5日到2026年3月10日之间的资产变化趋势,每个日期对应的资产数为该日期往前推一个月的资产。然后帮我整理一个该趋势变化的表格。接口限速2s一次。
预期:(1)Tool: hunter_search {search: "app=\"OpenClaw\"", start_time="2026-02-05", end_time="2026-03-05"}
     (2)Tool: hunter_search {search: "app=\"OpenClaw\"", start_time="2026-02-06", end_time="2026-03-06"}
     (3)Tool: hunter_search {search: "app=\"OpenClaw\"", start_time="2026-02-07", end_time="2026-03-07"}
     (4)Tool: hunter_search {search: "app=\"OpenClaw\"", start_time="2026-02-08", end_time="2026-03-08"}
     (5)Tool: hunter_search {search: "app=\"OpenClaw\"", start_time="2026-02-09", end_time="2026-03-09"}
     (6)Tool: hunter_search {search: "app=\"OpenClaw\"", start_time="2026-02-10", end_time="2026-03-10"}
注意:接口有限速,连续/并发调用工具可能会触发限速,请在对话中说明限速

5、从Hunter导出 app="OpenClaw" 2026-03-10 更新的资产
预期:(1)Tool: hunter_search_batch {search: "app=\"OpenClaw\"", start_time="2026-03-10", end_time="2026-03-10"}
     (2)Tool: hunter_search_batch_process {task_id: 123456}
     (.)Tool: hunter_search_batch_process {task_id: 123456} ... until process 100%
     (3)Tool: hunter_search_batch_download {task_id: 123456} ... until download finish
注意:若未在对话中说明下载目录,则尽量在环境变量中配置默认下载目录

6、从Hunter导出 app="OpenClaw" 2026-03-10 更新的资产,导出权限内所有可导出字段,保存到 /path 目录
预期:(1)Tool: hunter_search_batch {search: "app=\"OpenClaw\"", start_time="2026-03-10", end_time="2026-03-10", "fields":""}
     (2)Tool: hunter_search_batch_process {task_id: 123456}
     (.)Tool: hunter_search_batch_process {task_id: 123456} ... until process 100%
     (3)Tool: hunter_search_batch_download {task_id: 123456, save_dir="/path"} ... until download finish

7、从Hunter导出 /path/ip.csv 文件对应的测绘资产,导出类型选择ip,文件保存到 /path 目录
预期:(1)Tool: hunter_search_batch {file_path: "/path/ip.csv", search_type="ip"}
     (2)Tool: hunter_search_batch_process {task_id: 123456}
     (.)Tool: hunter_search_batch_process {task_id: 123456} ... until process 100%
     (3)Tool: hunter_search_batch_download {task_id: 123456, save_dir="/path"} ... until download finish

Links

许可证

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hunter_mcp-0.1.4.tar.gz (89.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hunter_mcp-0.1.4-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file hunter_mcp-0.1.4.tar.gz.

File metadata

  • Download URL: hunter_mcp-0.1.4.tar.gz
  • Upload date:
  • Size: 89.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.3

File hashes

Hashes for hunter_mcp-0.1.4.tar.gz
Algorithm Hash digest
SHA256 6aabde4ddbf5591275bfc8543771b4661069d4c39d412dc40a066c82003b8372
MD5 2c7cfe17dba4537b957e8592c1770e5a
BLAKE2b-256 828fe3f052028c68094736c45b19fe4a5d17d26ac222990515f9c3ca225ec3e5

See more details on using hashes here.

File details

Details for the file hunter_mcp-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for hunter_mcp-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 eb82f7557b5f5f86600e5492a46e921e1b1cf375874e4ebc55fb3739434e298c
MD5 fd71461290c29a67901a2d4adb5d0706
BLAKE2b-256 8953378b7419daab67f003d9bc0389f19abb61b380d2792dbcbef166e94c1f8a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page