Skip to main content

SurfaceMCP

通过统一 MCP 工具操作 ARL / 灯塔、ScopeSentry、XingRin / 星环。纯 Python,使用 stdio;由 Agent 启动,直接请求配置的平台,无需监听端口。

安装

需要 Python 3.10 或以上版本:

pip install surface-mcp
surface-mcp init --config config.yaml

源码安装:pip install .。开发安装:pip install -e '.[dev]'

配置

编辑 config.yaml,填写自己的平台地址、用户名和密码,删除不用的平台:

servers:
  arl:
    provider: arl
    base_url: https://arl.example.com
    username: admin
    password: "your-password"
  scopesentry:
    provider: scopesentry
    base_url: https://scope.example.com
    username: ScopeSentry
    password: "your-password"
  xingrin:
    provider: xingrin
    base_url: https://xingrin.example.com
    username: admin
    password: "your-password"
scope:
  allowed: [192.0.2.1]  # 替换为你有权扫描的目标
  denied: []
  • 实例名称是工具参数 resource_id,可配置多个同类平台。
  • 密码支持 ${ARL_PASSWORD} 等环境变量;ARL 也支持 api_key,与密码互斥。
  • HTTPS 默认校验证书;自签名实验环境可为对应实例设置 verify_tls: false
  • scope.allowed 为空时只能查询和停止任务,不能创建、重启或恢复扫描;拒绝规则优先。支持 IP、CIDR、域名和 *.example.com 范围规则。
  • 配置修改后重新加载 Agent 的 MCP 连接。不要提交真实配置。

接入 Agent

在支持 stdio 的 MCP 客户端中添加:

{
  "mcpServers": {
    "surface": {
      "command": "surface-mcp",
      "args": ["serve", "--config", "/absolute/path/config.yaml"]
    }
  }
}

command 找不到时,填写已安装 surface-mcp 的绝对路径。配置中的环境变量也必须对 Agent 启动的进程可见。

保存后让 Agent 执行:“列出 ASM 平台并测试连接,暂不创建扫描。”

共 11 项工具:surface_list_resourcessurface_test_connectionsurface_get_task_profilesurface_list_task_optionssurface_create_templatesurface_create_tasksurface_list_taskssurface_get_tasksurface_list_assetssurface_stop_tasksurface_manage_task

扫描流程:查询参数与动态选项 → 创建任务 → 保存任务 ID → 查询进度 → 读取资产。仅支持显式目标、即时扫描;没有数据库、定时扫描或自动唤醒 Agent。范围校验针对提交目标,上游后续发现范围由平台自身控制。

ARL 支持策略创建、重启和删除;ScopeSentry 支持模板创建、恢复、重启和删除;XingRin 支持查询、创建和停止。删除默认保留结果。ScopeSentry 指定模板前须读取 template_detail,并传回 template_verification_token。任务返回 resolution_pending=true 或写请求超时后,应先回查,避免重复提交。

测试

pip install -e '.[dev]'
pytest -q
ruff check src tests

自动测试使用模拟平台和本机 stdio 子进程,不扫描外部目标。发布验证记录见 验证记录

Apache-2.0;适配器逻辑迁移自 CyberStrikeAI,详见 NOTICE

Download files

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

Source Distribution

surface_mcp-0.2.0.tar.gz (45.4 kB view details)

Uploaded Source

Built Distribution

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

surface_mcp-0.2.0-py3-none-any.whl (45.2 kB view details)

Uploaded Python 3

File details

Details for the file surface_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: surface_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 45.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.9

File hashes

Hashes for surface_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d81028130600e0259efcafabdc754017808cd1d2d3a1bf4f0b74c46bea4839dc
MD5 1f2921092191e8e2351190446ef898fe
BLAKE2b-256 529dc8f5841f0f9c896bf2aa7333a90e76d703e2212cb79a53c8ac11267fddc3

See more details on using hashes here.

File details

Details for the file surface_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: surface_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 45.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.9

File hashes

Hashes for surface_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 157107cd1f7dc72d4317a83363396d863647a7c63eb28e0cb13ca3f3f1981f38
MD5 fb570be962f277466397a399fc70ca87
BLAKE2b-256 3ef841180de28ded69b71122d1dc4515f701636565685495d3bc5fcfd5798ed1

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

This release

0.2.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page