s

synackpwn

@synackpwn/enrichment-mcp
0 Stars 277 次浏览 synackpwn 更新于 2026-08-23
该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

丰富 MCP 服务器

这是一个 Model Context Protocol (MCP) 服务器,用于根据提供的可观察对象执行丰富操作。配置的服务和提供的可观察对象将决定使用哪些丰富服务。

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

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

功能

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

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

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

支持的服务

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

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

名称 需要 API 密钥 支持 IP 支持域名 支持 URL 支持电子邮件
VirusTotal
HybridAnalysis
AlienVault
Shodan
Urlscan.io
AbuseIPDB
HaveIBeenPwned

要求

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

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

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

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

config.yaml

此项目提供了一个自定义配置文件,我认为它非常容易理解。

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

在此配置文件中,有两个主要的数据部分;serverenrichments

默认情况下,所有支持的服务都映射到当前实现的丰富操作类型。目前,唯一的真正丰富操作类型是 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

服务器配置

这里的设置非常少,主要是为了沙箱和测试使用,但通常不需要更改这些设置即可使服务正常工作。

yaml
server:
host: 0.0.0.0 # 主机地址
port: 8000 # 端口
debug: false # 是否启用调试日志
log_level: INFO # 默认日志级别

丰富配置

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

在这些高层次的动作之下,我们列出了可观察类型及其支持该类型的服务列表。目前支持的可观察类型包括:

  • ipaddress - IPv4 地址
  • domain - 域名或网络位置
  • url - 完整的 URL(包含协议等)
  • email - 标准电子邮件地址

我们还支持以下类型,但目前尚未实现:

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

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

提示模板

每个服务和可观察类型都可以有自己的模板。这些模板位于 templates 目录中,并且所有模板都应存在于这里。

每个定义的服务都有一个使用 jinja2 模板的提示模板。您可以根据需要修改这些模板,但文件名格式必须保持不变。

这些文件具有以下文件名模式。

bash
{service.name}.{enrichment.type}.jinja2

此外,请确保响应对象在模板本身中具有正确的字段,否则您将收到错误。

下面是一个针对 Enrich this IP 91.195.240.94 提示的示例输出,其中包含一些错误:

python
{
"virustotal": "在 virustotal 中查找 IP 91.195.240.94 时发生错误",
"alienvault": "服务: alienvault
IP 地址:
信誉评分: 0
总投票数: ",
"shodan": "服务: shodan
IP 地址: 91.195.240.94
上次分析结果: 2025-04-25T21:02:52.644602

标签

附加信息包括:

统计

  • uniqIPs - 6

  • uniqCountries - 2

  • dataLength - 432561

  • encodedDataLength - 218606

  • requests - 14

页面

  • 国家 - DE
  • 服务器 - Parking/1.0
  • IP - 91.195.240.94
  • MIME 类型 - text/html
  • 标题 - wearab.orgxa0-xa0Informationen zum Thema wearab.
  • URL - https://login.wearab.org/
  • tlsValidDays - 364
  • tlsAgeDays - 0
  • tlsValidFrom - 2025-04-25T00:00:00.000Z
  • 域名 - login.wearab.org
  • 顶级域名 - wearab.org
  • asnname - SEDO-AS SEDO GmbH, DE
  • asn - AS47846
  • tlsIssuer - Encryption Everywhere DV TLS CA - G2
  • 状态 - 200
    ",
    "abuseipdb": "服务: abuseripdb
    IP 地址: 91.195.240.94
    上次分析结果: 2025-03-30T14:04:45+00:00
    评分: 7
    用途: 数据中心/网站托管/传输
    是否为 Tor: 否
    是否列入白名单: 否
    ISP: Sedo Domain Parking"
    }

使用方法

对于使用预构建服务器,请参考此处的说明:https://modelcontextprotocol.io/quickstart/user

  • 下载 Claude for Desktop

  • 安装 uv
    bash
    curl -LsSf https://astral.sh/uv/install.sh | sh

  • 下载此仓库并添加到 Claude for Desktop 配置

    • Claude for Desktop > 设置 > 开发者 > 编辑配置

这将在以下位置创建一个配置文件:
bash
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%Claudeclaude_desktop_config.json打开配置文件,使用任意文本编辑器。将文件内容替换为以下内容:

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 for Desktop

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

设计

在构建这个服务器时,我正在学习 astral uv 以及 MCP。我确实过度设计了这个项目,但过程很有趣。此外,我还考虑到了未来可能会用到的一些代码,因此在设计时也考虑到了这一点(后续会有更多介绍)。

另外,我特意改用了 Jinja2 模板,因为这可以更好地管理返回的提示/结果,并且同样适用于未来的使用场景。

请提供任何反馈、改进建议或功能请求;非常乐意听取您的意见。

贡献

欢迎贡献!请随时提交拉取请求。

免责声明

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

相关 MCP 服务