Skip to main content
Glama
MSAdministrator

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"
			]
		}
    }
}
  1. デスクトップ版Claudeの再起動

チャット バーに、使用可能なツールを示すハンマーと、定義されたプロンプトと必要な入力を示す接続アイコンの 2 つのアイコンが表示されます。

貢献

貢献を歓迎します!プルリクエストをお気軽に送信してください。

Available Tools

1 tool
lookup-observableD

A generic tool which takes any observable and passes it the correct tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

D1.6/5.0
Behavior1/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose2/5

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.

Usage Guidelines1/5

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. 1 tool update
    • First observedlookup-observable

TDQS

C2.1/5.0

Scored across 1 tool

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count2/5

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.

Completeness1/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    A Model Context Protocol server that facilitates integration with OpenCTI, allowing users to query and retrieve cyber threat intelligence data via a standardized interface.
    16
    40
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    -
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server providing security vulnerability intelligence tools including CVE lookup, EPSS scoring, CVSS calculation, exploit detection, and Python package vulnerability checking.
    8
    9
    MIT