Enrichment MCP Server

丰富 MCP 服务器

模型上下文协议 (MCP) 服务器,用于根据提供的可观察对象执行丰富功能。配置的服务与提供的可观察对象的组合将决定要使用哪些丰富服务。

该工具提供了一个简单的实现,以使用常见服务(例如 VirusTotal、Hybrid Analysis 等)执行第三方丰富。

该项目尚未在任何生产环境中使用。

特征

enrichment-mcp MCP 服务器的此实现公开了以下工具

  • observable-lookup - 一个通用端点,用于检查给定的可观察对象并将其路由到正确的工具。
  • lookup-ipaddress - 对给定的 IPv4 地址执行丰富操作。
  • lookup-domain - 对给定的域名执行丰富操作。
  • lookup-url - 对给定的 URL(在某些情况下是域名)执行丰富操作。
  • lookup-email - 对给定的电子邮件地址进行丰富。

如果您在确定可观察类型时遇到问题,请创建一个问题,或者我可以更新当前实现的正则表达式模式。

支持的服务

目前支持以下服务和可观察类型:

如果您有任何建议或认为应该实施其他服务,请创建问题或拉取请求!

姓名需要 API 密钥支持IP支持域名支持 URL支持电子邮件
VirusTotal是的是的是的是的
混合分析是的是的是的是的
AlienVault是的是的是的是的
初段是的是的是的是的
Urlscan.io是的是的是的是的
滥用IPDB是的是的
已获得是的是的

要求

此 MCP 服务实现了一个自定义配置文件,用于确定应使用哪些第三方丰富服务进行可观察查找。

由于这目前纯粹是为了开发/测试,因此在本地 mac/系统上运行它的最简单方法是:

uv run --env-file .env server.py

这要求您使用提供的模板.env.example并创建一个包含您的机密的新.env文件。

配置.yaml

该项目提供了一个自定义配置文件,我相信它很容易理解。

首先,在使用此服务之前,复制提供的config.yaml.example配置并删除.example扩展名。

在此配置文件中,有两个主要数据部分:服务器丰富内容

默认情况下,所有支持的服务都会映射到当前已实现的丰富操作类型。目前,唯一真正的丰富操作类型是lookups ,但其他类型可能会在未来实现。

lookups下,我们有不同的受支持的丰富类型。

话虽如此,每个单独的服务都可以有一个名为apikey的密钥和来自该服务的 API 密钥值,但请考虑不要这样做。

您可以直接在config.yaml.example中设置此键值,但首选方法是使用.env

注意:强烈建议在实现此服务时将机密设置为环境变量。别再存储机密了,傻瓜。

为了使此服务能够发现这些变量,它们必须采用特定的格式。以下是当前支持的变量列表:

  • 丰富_MCP_VIRUSTOTAL_KEY
  • 富集_MCP_杂交分析_密钥
  • 丰富_MCP_ALIENVAULT_KEY
  • ENRICHMENT_MCP_SHODAN_KEY
  • 丰富_MCP_URLSCAN_KEY
  • ENRICHMENT_MCP_ABUSEIPDB_KEY
  • 富集_MCP_HIBP_KEY

服务器配置

这里的设置很少,因为这主要用于沙盒和测试,但这些设置通常不需要更改或修改即可使该服务正常工作。

server: host: 0.0.0.0 # the host address port: 8000 # the port debug: false # whether to enable debug logging log_level: INFO # the default logging level

丰富配置

我们配置文件中的每个富集操作都位于enrichments键下。此外,我还列出了可以执行的不同类型的富集操作。这意味着,在当前的实现中,我们只有一种名为lookups的操作类型,但将来可以将其扩展到scansqueries等操作。

在这些高级操作下方,我们列出了可观察对象的类型,后面跟着支持该类型的服务列表。当前支持的可观察对象类型包括:

  • ipaddress - ipv4 地址
  • 域 - 域或 netloc
  • url - 带有架构等的完全限定 URL。
  • 电子邮件 - 标准电子邮件地址

我们也支持这些类型,但目前尚未实现:

  • md5 - 文件 MD5 哈希值
  • sha1 - 文件 SHA1 哈希
  • sha256 - 文件 SHA256 哈希

每个服务必须有一个name和一个templateapikey字段可以提供,但建议使用环境变量。

提示模板

每个服务和可观察对象类型都可以拥有自己的模板。这些模板位于templates目录中,所有模板都应位于此处。

每个定义的服务都有一个使用 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" }

用法

要使用预建服务器,请参阅此处的说明: https://modelcontextprotocol.io/quickstart/user

  • 下载 Claude 桌面版
  • 安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
  • 下载此 repo 并添加到 Claude 桌面配置
    • Claude 桌面版 > 设置 > 开发者 > 编辑配置

这将在以下位置创建一个配置文件:

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 桌面版

您现在应该在聊天栏中看到两个图标,一个锤子图标(显示可用的工具)和一个连接图标(显示定义的提示和所需的输入)。

设计

在搭建这个服务器的过程中,我学习了 Astral UV和 MCP。我确实设计得有点过度,但很有趣。我之前也考虑过这些代码的未来用途,所以在设计时也尽量考虑到了这一点(关于这一点,后面会详细介绍)。

此外,我特意转向了 Jinja2 模板,因为这可以更好地管理返回的提示/结果,以及未来的用例。

请提供任何反馈、改进或功能请求;很高兴听到您的反馈。

贡献

欢迎贡献代码!欢迎随时提交 Pull Request。

免责声明

此工具仅用于教育和授权测试目的。

-
security - not tested
-
license - not tested
-
quality - not tested

模型上下文协议服务器,使用户能够通过 VirusTotal、Shodan 等服务对安全可观察对象(IP 地址、域、URL、电子邮件)执行第三方丰富查找。

  1. Features
    1. Supported Services
  2. Requirements
    1. config.yaml
    2. Server Configuration
    3. Enrichments Configuration
    4. Prompt Templates
  3. Usage
    1. Design
      1. Contributing
        1. Disclaimer

          Related MCP Servers

          • -
            security
            F
            license
            -
            quality
            A standalone Model Context Protocol server for Snyk security scanning functionality.
            Last updated -
            2
            1
            JavaScript
          • -
            security
            F
            license
            -
            quality
            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.
            Last updated -
            1
            TypeScript
          • -
            security
            A
            license
            -
            quality
            A Model Context Protocol server designed for testing backend APIs for security vulnerabilities like authentication bypass, injection attacks, and data leakage.
            Last updated -
            1
            TypeScript
            MIT License
          • A
            security
            F
            license
            A
            quality
            A Model Context Protocol server implementation that provides endpoints for wallet-based authentication, cluster management, and name registration services.
            Last updated -
            TypeScript

          View all related MCP servers

          ID: haigmzjbvf