Enrichment MCP Server
エンリッチメントMCPサーバー
このプロジェクトは、提供されたオブザーバブルに基づいてエンリッチメントを実行するためのモデルコンテキストプロトコル(MCP)サーバーです。設定されたサービスと提供されたオブザーバブルの組み合わせによって、呼び出すエンリッチメントサービスが決まります。
このツールは、security-cli python パッケージを利用してさまざまなサービスとのエンリッチメント/通信を実行し、一般的なサービス (VirusTotal、Hybrid Analysis など) を使用してサードパーティのエンリッチメントを実行するためのシンプルな MCP サーバー実装を提供します。
MCPサーバー
enrichment-mcp MCP サーバーのこの実装では、次のツールが公開されます。
lookup-observable - 指定されたオブザーバブルを調べて適切なツールにルーティングする汎用エンドポイント。
Related MCP server: ADEO CTI 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 つのアイコンが表示されます。
貢献
貢献を歓迎します!プルリクエストをお気軽に送信してください。
Available Tools
1 toollookup-observableD
A generic tool which takes any observable and passes it the correct tool.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It fails to describe any traits—such as whether it's read-only, destructive, requires authentication, or has rate limits—and does not explain what 'passes it' means in terms of output or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is appropriately concise, but it is not front-loaded with critical information. It wastes space on vague phrasing like 'generic tool' without adding value, though it avoids excessive verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (with an output schema but no annotations and 0% schema coverage), the description is incomplete. It does not clarify the tool's purpose, parameters, or behavior, failing to compensate for the lack of structured data, though the output schema might help mitigate some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not add any meaning beyond the schema. It does not explain what 'value' represents (e.g., what an 'observable' is), its format, or constraints, leaving the single parameter undocumented and unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'takes any observable and passes it the correct tool,' which is tautological—it restates the tool's name 'lookup-observable' without specifying what an 'observable' is or what 'passes it' entails. It lacks a clear verb+resource combination, making the purpose vague and minimally informative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool, such as context, prerequisites, or alternatives. The description is generic and does not provide any usage instructions, leaving the agent with no direction on its application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- First observed
lookup-observable
TDQS
Scored across 1 tool
With only one tool, there is no possibility of ambiguity or overlap between tools. The single tool 'lookup-observable' has a clear, distinct purpose of routing observables to appropriate handlers, leaving no room for confusion or misselection.
The naming is trivially consistent as there is only one tool. The tool name 'lookup-observable' follows a clear verb_noun pattern, and with no other tools to compare, there is no inconsistency in naming conventions.
A single tool is too few for a server named 'Enrichment MCP Server', which suggests a purpose of enriching various observables. This minimal toolset feels thin and inadequate for the implied scope, as it relies on internal routing rather than exposing a comprehensive set of enrichment operations directly.
The tool surface is severely incomplete for an enrichment server. There are obvious gaps, such as no direct tools for specific observable types (e.g., IP addresses, domains, files) or enrichment actions (e.g., threat intelligence lookup, geolocation). The single generic tool creates a dead end for agents, lacking the necessary coverage for the domain.
Maintenance
Related MCP Connectors
Enrich, search, assess, and manage threat intelligence through 80+ typed MCP tools.
A Model Context Protocol server for Wix AI tools
Remote MCP server to enrich company profiles with structured B2B data and confidence scores.
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol server that facilitates integration with OpenCTI, allowing users to query and retrieve cyber threat intelligence data via a standardized interface.1640MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides access to Shodan and VirusTotal APIs for cybersecurity analysis, enabling analysts to perform network intelligence operations including host lookups, vulnerability analysis, and threat intelligence gathering.25-
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that performs third-party threat intelligence enrichment for various observables (IP addresses, domains, URLs, emails) using services like VirusTotal, Shodan, and AbuseIPDB.-
- AlicenseAqualityDmaintenanceA Model Context Protocol server providing security vulnerability intelligence tools including CVE lookup, EPSS scoring, CVSS calculation, exploit detection, and Python package vulnerability checking.89MIT