エンリッチメントMCPサーバー
このプロジェクトは、提供されたオブザーバブルに基づいてエンリッチメントを実行するためのモデルコンテキストプロトコル(MCP)サーバーです。設定されたサービスと提供されたオブザーバブルの組み合わせによって、呼び出すエンリッチメントサービスが決まります。
このツールは、security-cli python パッケージを利用してさまざまなサービスとのエンリッチメント/通信を実行し、一般的なサービス (VirusTotal、Hybrid Analysis など) を使用してサードパーティのエンリッチメントを実行するためのシンプルな MCP サーバー実装を提供します。
MCPサーバー
enrichment-mcp MCP サーバーのこの実装では、次のツールが公開されます。
lookup-observable - 指定されたオブザーバブルを調べて適切なツールにルーティングする汎用エンドポイント。
Related MCP server: IR Toolshed MCP Server
サポートされているサービス
現在、次のサービスと監視可能なタイプがサポートされています。
ご提案がある場合、または別のサービスを実装する必要があると思われる場合は、問題またはプル リクエストを作成してください。
名前 | APIキーが必要です | IPをサポート | ドメインをサポート | URLをサポート | メールをサポート |
ウイルストータル | はい | はい | はい | はい | いいえ |
ハイブリッド分析 | はい | はい | はい | はい | いいえ |
エイリアンボールト | はい | はい | はい | はい | いいえ |
初段 | はい | はい | はい | はい | いいえ |
Urlscan.io | はい | はい | はい | はい | いいえ |
虐待IPDB | はい | はい | いいえ | いいえ | いいえ |
いいね | はい | いいえ | いいえ | いいえ | はい |
要件
この MCP サービスはsecurity-cliとカスタムconfig.yaml.exampleファイルを使用して、監視可能なルックアップでサポートされているサードパーティのエンリッチメント サービスを決定します。
ローカル Mac/システムでこれを実行する最も簡単な方法は次のとおりです。
uv run --env-file .env server.pyこれには、提供されているテンプレート.env.exampleを使用して、シークレットを含む新しい.envファイルを作成する必要があります。
注: 各種サービスの設定方法については、 security-cliのドキュメントをご覧ください。ほとんどのユースケースでは、デフォルト設定で十分です。
環境変数
注: このサービスを実装する際は、シークレットを環境変数として設定することを強くお勧めします。シークレットを保存するのはやめてください。
security-cliパッケージがこれらの変数を検出するには、特定の形式で記述する必要があります。現在サポートされている変数のリストは以下のとおりです。
ENRICHMENT_MCP_VIRUSTOTAL_KEY
エンリッチメント_MCP_ハイブリッド分析_キー
エンリッチメント_MCP_エイリアンボールト_キー
エンリッチメント_MCP_SHODAN_KEY
ENRICHMENT_MCP_URLSCAN_KEY
ENRICHMENT_MCP_ABUSEIPDB_KEY
エンリッチメント_MCP_HIBP_キー
エンリッチメント構成
各エンリッチメントサービスは、 securiy-cli設定ファイルで定義されます。さらに、実行可能なエンリッチメントの種類を分類しました。つまり、現在の実装ではenrichという単一のアクションタイプしかサポートされていませんが、将来的にはscansやqueriesなどにも拡張される可能性があります。
これらの高レベルアクションの下に、監視可能なタイプと、そのタイプをサポートするサービスのリストを示します。現在サポートされている監視可能なタイプは次のとおりです。
ipaddress - IPv4アドレス
ドメイン - ドメインまたはネットロック
url - スキーマなどを含む完全修飾 URL。
メール - 標準のメールアドレス
以下のタイプもサポートされていますが、現在は実装されていません。
md5 - ファイルのMD5ハッシュ
sha1 - ファイルのSHA1ハッシュ
sha256 - ファイルのSHA256ハッシュ
各サービスにはnameとtemplateが必要です。apikeyフィールドapikey指定することもできますが、環境変数を使用することをお勧めします。
プロンプトテンプレート
各サービスとオブザーバブルタイプには、独自のレスポンステンプレートを設定できます。これらのテンプレートはsecurity-cliテンプレートディレクトリに保存されており、すべてのテンプレートはここに存在するはずです。
定義された各サービスには、jinja2テンプレートを使用したプロンプトテンプレートがあります。必要に応じて変更できますが、ファイル名の形式は変更しないでください。
これらのファイルのファイル名パターンは次のとおりです。
{service.name}.{enrichment.type}.jinja2応答オブジェクトのテンプレート自体に正しいフィールドがあることを確認してください。そうでない場合はエラーが発生します。
以下は、いくつかのエラーが混在するEnrich this IP 91.195.240.94プロンプトの出力例です。
{
"virustotal": "error occurred looking up ip 91.195.240.94 in virustotal",
"alienvault": "Service: alienvault\nIPAddress: \nReputation Score: 0\nTotal Votes: ",
"shodan": "Service: shodan\nIPAddress: 91.195.240.94\nLast Analysis Results: 2025-04-25T21:02:52.644602\n\nTags\n\n\nAdditional information includes:\n\n* Latitude: 48.13743\n* Longitude: 11.57549\n* ASN: AS47846\n* Domains: ["servervps.net"]",
"hybridanalysis": "error occurred looking up ip 91.195.240.94 in hybridanalysis",
"urlscan": "Service: urlscan\nResult: https://urlscan.io/api/v1/result/01966efe-c8fa-74a4-bfc0-1ed479838e85/\n\nStats\n\n* uniqIPs - 6\n\n* uniqCountries - 2\n\n* dataLength - 432561\n\n* encodedDataLength - 218606\n\n* requests - 14\n\n\nPage\n* country - DE\n* server - Parking/1.0\n* ip - 91.195.240.94\n* mimeType - text/html\n* title - wearab.org\xa0-\xa0Informationen zum Thema wearab.\n* url - https://login.wearab.org/\n* tlsValidDays - 364\n* tlsAgeDays - 0\n* tlsValidFrom - 2025-04-25T00:00:00.000Z\n* domain - login.wearab.org\n* apexDomain - wearab.org\n* asnname - SEDO-AS SEDO GmbH, DE\n* asn - AS47846\n* tlsIssuer - Encryption Everywhere DV TLS CA - G2\n* status - 200\n",
"abuseipdb": "Service: abuseripdb\nIPAddress: 91.195.240.94\nLast Analysis Result: 2025-03-30T14:04:45+00:00\nScore: 7\nUsage: Data Center/Web Hosting/Transit\nIs Tor: False\nIs Whitelisted: False\nISP: Sedo Domain Parking"
}MCP サーバーの使用状況
事前に構築されたサーバーの使用については、こちらの手順をご覧ください: https://modelcontextprotocol.io/quickstart/user
デスクトップ版Claudeをダウンロード
uvをインストールする
curl -LsSf https://astral.sh/uv/install.sh | shこのリポジトリをダウンロードして、Claude for Desktop の設定に追加します。
デスクトップ版Claude > 設定 > 開発者 > 設定の編集
提供されている.desktop_config.example.jsonファイルをコピーすることができます
自分で作成したい場合は、Claude Desktop のパスを参照してください。
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json任意のテキストエディタで設定ファイルを開き、ファイルの内容を以下の内容に置き換えます。
{
"mcpServers": {
"enrichment-mcp": {
"command": "/ABSOLUTE/PATH/TO/PARENT/FOLDER/uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/CLONED/REPOSITORY/enrichment-mcp",
"run",
"server.py"
]
}
}
}デスクトップ版Claudeの再起動
チャット バーに、使用可能なツールを示すハンマーと、定義されたプロンプトと必要な入力を示す接続アイコンの 2 つのアイコンが表示されます。
貢献
貢献を歓迎します!プルリクエストをお気軽に送信してください。