enrichment-mcp

查看源码
2025-5-12
Words 1813Read Time 5 min
Score:85

用于安全数据增强的MCP服务器,支持多种第三方服务进行IP、域名、URL和邮箱的查询。

Enrichment MCP Server

一个基于 Model Context Protocol (MCP) 的服务,用于对提供的可观察对象(observable)进行信息丰富化(enrichment)。通过配置的服务和提供的可观察对象,该工具将决定使用哪些丰富化服务。
该工具提供了一个简单的实现,用于使用常见的第三方服务(如 VirusTotal、Hybrid Analysis 等)进行信息丰富化。
该项目尚未在任何生产环境中使用。

功能

enrichment-mcp MCP 服务器的实现提供了以下 工具
  • observable-lookup - 一个通用端点,用于检查并将给定的可观察对象路由到正确的工具。
  • lookup-ipaddress - 对给定的 IPv4 地址进行丰富化。
  • lookup-domain - 对给定的域名进行丰富化。
  • lookup-url - 对给定的 URL(在某些情况下包括域名)进行丰富化。
  • lookup-email - 对给定的电子邮件地址进行丰富化。
如果您在确定可观察对象类型时遇到问题,请创建 issue 或我可以更新当前实现的正则表达式模式。

支持的服务

以下是当前支持的服务及其可观察对象类型:
如果您有任何建议或认为应该实现其他服务,请创建 issue 或提交 pull request!
名称
需要 API 密钥
支持 IP
支持域名
支持 URL
支持电子邮件
VirusTotal
HybridAnalysis
AlienVault
Shodan
Urlscan.io
AbuseIPDB
HaveIBeenPwned

要求

该 MCP 服务使用自定义配置文件来确定应对可观察对象使用哪些第三方丰富化服务。
由于目前仅用于开发/测试,在本地 Mac/系统上运行的最简单方式是:
这要求您使用提供的模板 .env.example 并创建一个包含您的密钥的新 .env 文件。

config.yaml

该项目提供了一个自定义配置文件,我认为它非常容易理解。
首先,复制提供的 config.yaml.example 配置文件,并在使用此服务之前移除 .example 扩展名。
在此配置文件中,有两个主要部分:服务器配置 和 丰富化配置。
默认情况下,所有支持的服务都映射到当前实现的丰富化操作类型。目前,唯一的丰富化操作类型是 lookups,但未来可能会实现其他类型。
lookups 下,我们有不同的支持丰富化类型。
也就是说,每个服务都可以有一个名为 apikey 的键及其 API 密钥值,但建议不要这样做。
您可以直接在 config.yaml.example 中设置此键值,但推荐的方式是使用 .env 文件。
注意:强烈建议在实现此服务时将密钥设置为环境变量。不要再存储密钥了,愚蠢的家伙。
为了使此服务能够发现这些变量,它们必须采用特定格式。以下是当前支持的变量列表:
  • ENRICHMENT_MCP_VIRUSTOTAL_KEY
  • ENRICHMENT_MCP_HYBRIDANALYSIS_KEY
  • ENRICHMENT_MCP_ALIENVAULT_KEY
  • ENRICHMENT_MCP_SHODAN_KEY
  • ENRICHMENT_MCP_URLSCAN_KEY
  • ENRICHMENT_MCP_HIBP_KEY

服务器配置

这里的设置较少,因为主要用于沙盒测试,通常不需要更改或调整这些设置以使服务正常工作。

丰富化配置

配置文件中的每个丰富化都位于 enrichments 键下。此外,我将不同类型的丰富化操作进行了分类。这意味着在当前实现中,我们只有一个操作类型 lookups,但未来可以扩展为 scansqueries 等。
在这些高级操作下,我们列出了可观察对象类型,然后是支持该类型的服务列表。当前支持的可观察对象类型包括:
  • ipaddress - IPv4 地址
  • domain - 域名或网络位置
  • url - 包含协议等的完整 URL
  • email - 标准电子邮件地址
我们还支持以下类型,但目前尚未实现:
  • md5 - 文件的 MD5 哈希值
  • sha1 - 文件的 SHA1 哈希值
  • sha256 - 文件的 SHA256 哈希值
每个服务必须具有 nametemplate。可以提供 apikey 字段,但建议使用环境变量。

提示模板

每个服务和可观察对象类型都可以有自己的模板。这些模板位于 templates 目录中,所有模板都应存在于此。
每个服务都使用 jinja2 模板定义了一个提示模板。您可以根据需要修改这些模板,但文件名格式必须保持不变。
这些文件的文件名模式如下:
此外,请确保模板中的响应对象具有正确的字段,否则您将收到错误。
以下是对 Enrich this IP 91.195.240.94 提示的示例输出,其中包含一些错误:

使用说明

要使用预构建的服务器,请按照以下说明操作:https://modelcontextprotocol.io/quickstart/user
  • 下载 Claude for Desktop
  • 安装 uv
  • 下载此仓库并添加到 Claude for Desktop 配置中
    • Claude for Desktop > 设置 > 开发者 > 编辑配置
这将创建一个配置文件,路径如下:
在任何文本编辑器中打开配置文件,并将文件内容替换为以下内容:
  1. 重新启动 Claude for Desktop
您现在应该在聊天栏中看到两个图标,一个是锤子图标,显示可用的工具,另一个是连接图标,显示定义的提示和所需的输入。

设计

在构建此服务器时,我正在学习 astral uv 以及 MCP。我确实过度设计了它,但这很有趣。我还为其中一些代码设想了未来的用途,因此我也尝试在设计时考虑到这一点(更多内容即将推出)。
此外,我特别转向使用 Jinja2 模板,因为这可以更好地管理返回的提示/结果,并且同样适用于未来的用例。
请提供任何反馈、改进或功能请求;很高兴听到它们。

贡献

欢迎贡献!请随时提交 pull requests。

免责声明

此工具仅用于教育和授权测试目的。
上一篇
cve-search_mcp
下一篇
meta-ads-mcp