mcpField
O
otx

otx

ローカル
github.com/w0h1vセキュリティ12 週間前に更新

otx について

otxは、AIエージェントがAlienVault OTXの脅威インテリジェンスを調べるためのMCPサーバーです。指標やパルス、ユーザー情報を扱い、アカウント変更ツールは明示的に有効化するまで利用できません。

主な機能

  1. 01複数形式の指標を詳しく調査
  2. 02パルスとユーザーの検索
  3. 03評判や解析データの取得
  4. 04デフォルトで読み取り専用
  5. 05stdioと認証付きHTTPに対応

活用シーン

  1. 01IP、ドメイン、ハッシュ、URL、CVEの調査
  2. 02マルウェア関連のコミュニティパルスの確認
  3. 03パッシブDNSやサンドボックス結果の確認

MCP 対応

MCPクライアントにAlienVault OTXのツールとリソーステンプレートを提供します。stdioとstreamable HTTPに対応し、HTTPではBearer Token認証を設定できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"w0h1v-otx": {
"command": "uvx",
"args": [
"otx-mcp"
],
"env": {
"OTX_API_KEY": "<OTX_API_KEY>",
"OTX_MCP_READ_WRITE": "<OTX_MCP_READ_WRITE>"
}
}
}
}
起動コマンドuvx otx-mcp
設定が必要な環境変数
OTX_API_KEYシークレットYour AlienVault OTX API key
OTX_MCP_READ_WRITESet to 1 to expose account-mutating tools (create/subscribe/follow/submit). Read-only by default.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiotx-mcp1.2.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCP OTX:AI エージェント向けの脅威インテリジェンス。Model Context Protocol を介して、AlienVault OTX のパルス、インジケーター、パッシブ DNS、マルウェア分析を利用できます。

PyPI バージョン CI ライセンス:MIT Python 3.10 以降 MCP レジストリ

クイックスタート · ツール · HTTP · セキュリティ · トラブルシューティング · ドキュメント

mcp-otx は、AI エージェントが AlienVault OTX(Open Threat Exchange、現在の LevelBlue)にアクセスできる MCP サーバーです。調査対象の IP アドレス、ドメイン、ファイルハッシュ、URL、CVE、マルウェアファミリー、または攻撃者をエージェントに渡すと、OTX コミュニティが把握しているパルス、レピュテーション、パッシブ DNS、WHOIS、サンドボックス分析、関連インジケーターを取得できます。

メモ

独立したプロジェクトであり、AlienVault または LevelBlue とは提携していません。ご自身の OTX API キーが必要です。無料アカウントで十分です。

特長

  • API を全面的にカバー。 パルス、インジケーター、ユーザー、サブスクリプション、URL 送信を網羅する 29 個のツールに加え、パルスとインジケーター用のリソーステンプレートを提供します。
  • 1 回の呼び出しでインジケーターを強化。 OTX のすべてのインジケータータイプ(IPv4、IPv6、ドメイン、ホスト名、ファイルハッシュ、URL、CVE)と詳細セクション(レピュテーション、位置情報、パッシブ DNS、マルウェア、WHOIS、URL リスト、HTTP スキャン、サンドボックス分析)に対応しています。
  • デフォルトは読み取り専用。 OTX アカウントを変更する 9 個のツールは、--read-write を指定した場合にのみ表示されます。
  • コンテキストに合わせた出力。 大きな OTX オブジェクトは要約して上限を設け、API の合計件数は保持するため、1 回の検索でモデルのコンテキストが埋まることはありません。
  • 安全な HTTP。 デスクトップクライアント向けの stdio に加え、ベアラートークン認証を備えたストリーミング可能な HTTP に対応しています。トークンなしでネットワークに公開されるアドレスをリッスンしようとすると、サーバーは起動を拒否します。
  • テスト済み。 モック OTX API を使用したユニットテストを、Python 3.10~3.13 の CI で実行します。

動作の仕組み

flowchart LR
    A["AI agent<br/>(Claude, Codex, Gemini, VS Code)"] -->|"MCP over stdio or HTTP"| S["mcp-otx"]
    S -->|"HTTPS + X-OTX-API-KEY"| O["OTX DirectConnect API"]
    O -->|"JSON"| S
    S -->|"summarized, capped JSON"| A

クイックスタート

要件: Python 3.10 以降、uv(または pip)、OTX API キー。

# Claude Code
claude mcp add --transport stdio --env OTX_API_KEY=your-key otx -- uvx otx-mcp

# Codex CLI
codex mcp add otx --env OTX_API_KEY=your-key -- uvx otx-mcp

# Gemini CLI
gemini mcp add -e OTX_API_KEY=your-key otx uvx otx-mcp

pip を使う場合:pip install otx-mcp を実行し、コマンド otx-mcp を使用します。Claude Desktop、VS Code、Cline、Docker、ソースからの実行については、クライアントの接続をご覧ください。

続けて、エージェントに 「OTX は 8.8.8.8 について何を把握していますか? Emotet に関する最近のパルスはありますか?」 と尋ねてみましょう。その他のプロンプトはワークフローの例をご覧ください。

ツール

読み取りツールが20個、--read-write を指定すると書き込みツールが9個利用できます。すべてのパラメーターと実際の出力例については、ツールリファレンスを参照してください。

領域読み取りツール書き込みツール(--read-write)
検索search_pulses、search_users
Pulseget_pulse_details、get_pulse_indicators、get_related_pulses、search_related_pulses、list_pulse_activity、list_subscribed_pulses、get_subscribed_pulse_ids、get_pulse_eventscreate_pulse、subscribe_pulse、unsubscribe_pulse
インジケーターget_indicator_details、validate_indicator、list_indicator_types、export_indicators
ユーザーget_user、get_current_user、list_user_pulses、list_my_pulsessubscribe_user、unsubscribe_user、follow_user、unfollow_user
提出list_submitted_urls、list_submitted_filessubmit_url、submit_urls

リソーステンプレート:otx://pulse/{pulse_id} および otx://indicator/{type}/{value}。

HTTP トランスポート

デフォルトは stdio です。リモートクライアントやウェブクライアントの場合は、ストリーム可能な HTTP を実行します。

OTX_API_KEY=your-key uvx otx-mcp --transport streamable-http
# → http://127.0.0.1:8000/mcp

ネットワークに公開するアドレスで待ち受けるには、ベアラートークンを設定します。その場合、クライアントは Authorization: Bearer <token> を送信する必要があります。

OTX_API_KEY=your-key OTX_MCP_BEARER_TOKEN=a-long-random-secret \
  uvx otx-mcp --transport streamable-http --host 0.0.0.0
docker build -t mcp-otx .
docker run --rm -p 127.0.0.1:8000:8000 -e OTX_API_KEY=your-key \
  -e OTX_MCP_BEARER_TOKEN=a-long-random-secret \
  -e OTX_MCP_TRANSPORT=streamable-http -e OTX_MCP_HOST=0.0.0.0 mcp-otx

OTX は一部のエンドポイント(パッシブ DNS とサブスクリプション)で応答が遅く、20~60秒かかることがあるため、リモートクライアントには長い読み取りタイムアウトを設定してください(120秒が適切です)。

設定
変数CLI フラグデフォルト説明
OTX_API_KEY(必須)OTX API キーです。.env からも読み込まれます
OTX_API_BASEhttps://otx.alienvault.com/api/v1API ルート(テスト用)
OTX_MCP_TRANSPORT--transportstdiostdio、streamable-http、または sse
OTX_MCP_HOST--host127.0.0.1HTTP バインドアドレス
OTX_MCP_PORT--port8000HTTP ポート
OTX_MCP_READ_WRITE--read-writeオフ1 にすると、アカウントを変更するツールが利用可能になります
OTX_MCP_BEARER_TOKENオフHTTP で Authorization: Bearer <token> を必須にします
--allow-remoteオフトークンなしでネットワークに公開するバインドを許可します(非推奨)
--json-responseオフSSE ストリームの代わりにプレーンな JSON を返します(ストリーム可能な HTTP)
--stateless-httpオフリクエストごとに新しいセッションを作成します(ストリーム可能な HTTP)

セキュリティ

警告

サーバーはお使いの OTX アカウントとして動作します。書き込みツールが必要な場合を除き、読み取り専用にしてください。また、ベアラートークンと TLS なしで HTTP を公開しないでください。

  • デフォルトでは読み取り専用です。 Pulse の作成、サブスクリプション、フォロー、URL の提出には --read-write が必要です。Pulse の編集や削除は、そもそもツールとして公開されていません。
  • 信頼できないコンテンツ。 Pulse とインジケーターの説明は OTX コミュニティによって書かれています。サーバーは、モデルに対して説明を指示ではなくデータとして扱うよう伝えます。
  • API キーはヘッダーに含めて OTX API にのみ送信されます。

詳細はセキュリティモデルを参照してください。脆弱性は非公開で報告してください。SECURITY.mdを参照してください。

トラブルシューティング

  • **403 "Authentication required":**API キーが正しくありません。get_current_user を使うと、キーがどのアカウントに属するか確認できます。
  • 書き込みツールが見つからない場合:--read-write を指定してサーバーを起動してください。
  • **タイムアウト:**パッシブ DNS とサブスクリプションの呼び出しには最大60秒かかることがあります。クライアントのツールタイムアウトを延長してください。

詳細はトラブルシューティングガイドを参照してください。

開発

git clone https://github.com/w0h1v/mcp-otx && cd mcp-otx
uv venv && uv pip install -e ".[dev]"
.venv/bin/python -m pytest    # mocked OTX API, no key or network

CONTRIBUTING.mdと変更履歴を参照してください。

ライセンス

MIT。LICENSEを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。