Skip to main content
Glama
asm-mcp-server

asm-mcp-server

by kalala252

asm-mcp-server

A local server for using asm-agent from an MCP client. A connected LLM can collect public information, reference saved results, and verify evidence as MCP tools.

This server itself does not call the LLM API. For conversation and summarization, it uses the model on the MCP client side.

Requirements

  • Python 3.12 or later

  • uv

  • A separately set up asm-agent

  • An LLM client that supports MCP

Related MCP server: Multi-Agent Deep Researcher MCP

Setup

Place asm-agent and asm-mcp-server in separate folders and prepare their dependencies respectively.

cd /absolute/path/to/asm-agent
uv sync

cd /absolute/path/to/asm-mcp-server
uv sync

When using Shodan, save the API key on the asm-agent side.

cd /absolute/path/to/asm-agent
uv run asm-agent credentials set-shodan

Register with the MCP client

Add the following to the MCP client configuration. Specify everything with absolute paths.

{
  "mcpServers": {
    "passive-attack-surface": {
      "command": "/absolute/path/to/uv",
      "args": [
        "--directory",
        "/absolute/path/to/asm-mcp-server",
        "run",
        "asm-mcp-server"
      ],
      "env": {
        "ASM_AGENT_EXECUTABLE": "/absolute/path/to/asm-agent/.venv/bin/asm-agent",
        "ASM_MCP_REPORT_DIR": "/absolute/path/to/asm-mcp-server/reports"
      }
    }
  }
}

After registration, restart or reconnect the MCP client.

On Windows, specify the absolute path of uv.exe in command, and specify ASM_AGENT_EXECUTABLE in the following format.

C:\absolute\path\to\asm-agent\.venv\Scripts\asm-agent.exe

Conversation example

example.comをShodanありで調査して、見つかったホスト名、IPアドレス、公開ポート、CVE候補を根拠付きでまとめて。

Available tools

Tool

Description

scan_domain

Collects and saves public information about a domain

list_reports

Returns a list of saved reports

get_report_summary

Returns collection counts, warnings, and errors

list_assets

Returns hostnames, IP addresses, and public services

get_evidence

Returns information sources and observation timestamps

list_vulnerabilities

Returns Shodan CVE candidates, products, and versions

Tools that return lists support pagination with offset and limit.

Configuration

Environment variable

Default value

Description

ASM_AGENT_EXECUTABLE

asm-agent on PATH

Absolute path of the asm-agent to execute

ASM_MCP_REPORT_DIR

./reports

Report save destination

ASM_MCP_SCAN_TIMEOUT_SECONDS

600

Maximum seconds to wait for a single investigation

Shodan CVEs are candidates based on past observations and do not prove that a system is currently vulnerable.

Development

uv run ruff check .
uv run mypy src
uv run pytest

License

MIT License

Available Tools

6 tools
get_evidenceB
Read-only

根拠を返す。asset指定時はsubjectまたはobjectが完全一致する根拠だけに絞る。

Inputs: report_id (required), asset, limit, offset. Returns: total, offset, evidence, has_more, +3 more

get_report_summaryB
Read-only

レポートの対象、収集時刻、件数、一部取得、エラー、警告を返す。

Inputs: report_id (required). Returns: domain, partial, warnings, report_id, +5 more

list_assetsA
Read-only

保存済みレポートのドメイン、ホスト名、IP、サービス、証明書をページ単位で返す。

Inputs: report_id (required), limit, offset, asset_type. Returns: total, assets, offset, has_more, +2 more

list_reportsA
Read-only

MCP経由で作成済みのレポートを新しい順に返す。domainは完全一致で絞り込む。

Inputs: domain. Returns: reports

list_vulnerabilitiesC
Read-only

Shodanがサービス観測へ関連付けた脆弱性候補と製品・観測情報を返す。

Inputs: report_id (required), limit, offset. Returns: total, offset, has_more, returned, +2 more

scan_domainB

指定apexドメインを受動調査し、保存したレポートの識別子と件数を返す。

Inputs: domain (required), skip_dns, max_hosts, enable_shodan, +3 more. Returns: domain, partial, warnings, report_id, +5 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool has a clearly distinct role: scan_domain initiates a scan, list_reports lists report metadata, get_report_summary provides a detailed summary, list_assets retrieves asset data, get_evidence pulls evidence, and list_vulnerabilities returns vulnerability data. There is no meaningful overlap between these operations.

    Naming Consistency5/5

    All tool names follow a consistent snake_case verb_noun pattern: scan_domain, list_reports, get_report_summary, list_assets, get_evidence, list_vulnerabilities. The verb choice consistently indicates whether the tool creates or retrieves information.

    Tool Count5/5

    Six tools is a well-scoped size for an attack surface management/recon server. Each tool maps to a distinct step in the workflow: scan, report listing, summary, asset enumeration, evidence retrieval, and vulnerability listing.

    Completeness4/5

    The core reconnaissance workflow is well covered: scan a domain, view reports, inspect summaries, list assets, retrieve evidence, and see vulnerabilities. Minor gaps exist around report lifecycle management, such as deleting or updating reports, but users can complete the primary investigation workflow without dead ends.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to perform grounded web research with injection resistance, claim verification, and cost-aware routing through MCP tools like web_search, fetch_url, extract_claims, and check_grounding.
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables passive OSINT reconnaissance by providing search dorking and open-source intelligence collection tools through MCP, without requiring active interaction with target systems.
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables MCP-compatible AI clients to run passive OSINT investigation tools for domains, IPs, emails, usernames, breaches, DNS, WHOIS, and reputation checks through natural-language tool calls. It exposes 16 passive tools by default, plus graph and batch helpers, with additional active tools available when explicitly enabled.
      20
      1
      MIT