Enrichment MCP Server

Servidor MCP de enriquecimiento

Un servidor de Protocolo de Contexto de Modelo (MCP) para realizar enriquecimiento dado un observable proporcionado. La combinación de los servicios configurados y los observables proporcionados determinará qué servicios de enriquecimiento utilizar.

Esta herramienta proporciona una implementación simple para realizar enriquecimiento de terceros utilizando servicios comunes (por ejemplo, VirusTotal, Hybrid Analysis, etc.).

Este proyecto no se ha utilizado en ningún entorno de producción.

Características

Esta implementación del servidor MCP enrichment-mcp expone las siguientes herramientas .

  • observable-lookup: un punto final genérico que examina y dirige el observable dado a la herramienta correcta.
  • lookup-ipaddress: realiza el enriquecimiento en una dirección IPv4 determinada.
  • lookup-domain: realiza el enriquecimiento en un nombre de dominio determinado.
  • lookup-url: realiza el enriquecimiento en una URL determinada (y en algunos casos, en un nombre de dominio).
  • lookup-email: realiza el enriquecimiento de una dirección de correo electrónico determinada.

Si encuentra un problema con el tipo observable determinado, cree un problema o puedo actualizar los patrones de expresiones regulares implementados actualmente.

Servicios soportados

Actualmente se admiten los siguientes servicios y tipos observables:

Si tiene alguna sugerencia o cree que se debería implementar otro servicio, ¡cree un problema o una solicitud de extracción!

NombreSe requiere clave APISoporta IPAdmite dominioAdmite URLAdmite correo electrónico
VirusTotalNo
Análisis híbridoNo
Bóveda alienígenaNo
ShodanNo
Urlscan.ioNo
AbuseIPDBNoNoNo
He sido derrotadoNoNoNo

Requisitos

Este servicio MCP implementa un archivo de configuración personalizado que se utiliza para determinar qué servicios de enriquecimiento de terceros se deben utilizar para búsquedas observables.

Dado que esto es puramente para desarrollo/prueba en este momento, la forma más fácil de ejecutarlo en un sistema/Mac local es:

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

Esto requiere que utilice la plantilla proporcionada .env.example y cree un nuevo archivo .env con sus secretos.

config.yaml

Este proyecto proporciona un archivo de configuración personalizado y creo que es bastante fácil de entender.

Primero, copie la configuración config.yaml.example proporcionada y elimine la extensión .example antes de usar este servicio.

Dentro de este archivo de configuración hay dos secciones principales de datos; servidor y enriquecimientos .

De forma predeterminada, todos los servicios compatibles se asignan a los tipos de acciones de enriquecimiento implementados actualmente. Actualmente, el único tipo de acción de enriquecimiento real son lookups pero es posible que se implementen otras en el futuro.

Debajo de las lookups tenemos los diferentes tipos de enriquecimiento soportados.

Dicho esto, cada servicio individual puede tener una clave llamada apikey y el valor de la clave API de ese servicio, pero considere no hacerlo.

Puede establecer este valor de clave directamente en config.yaml.example pero la forma preferida es usar un .env .

NOTA: Se recomienda encarecidamente configurar los secretos como variables de entorno al implementar este servicio. ¡Deja de almacenar secretos, idiota!

Para que este servicio detecte estas variables, deben tener un formato específico. A continuación, se muestra la lista de variables admitidas actualmente:

  • ENRIQUECIMIENTO_MCP_VIRUSTOTAL_CLAVE
  • ENRIQUECIMIENTO_MCP_ANÁLISIS_HÍBRIDO_CLAVE
  • ENRIQUECIMIENTO_MCP_ALIENVAULT_CLAVE
  • ENRIQUECIMIENTO_MCP_SHODAN_CLAVE
  • ENRIQUECIMIENTO_MCP_URLSCAN_CLAVE
  • ENRIQUECIMIENTO_MCP_ABUSEIPDB_CLAVE
  • ENRIQUECIMIENTO_MCP_HIBP_CLAVE

Configuración del servidor

Aquí hay configuraciones mínimas, ya que esto es principalmente para pruebas y entornos aislados, pero generalmente no es necesario cambiar ni alterar estas configuraciones para que este servicio funcione.

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

Configuración de enriquecimientos

Cada enriquecimiento en nuestro archivo de configuración reside bajo la clave enrichments . Además, he desglosado los diferentes tipos de enriquecimiento que se pueden realizar. Esto significa que, en la implementación actual, solo tenemos un tipo de acción llamado lookups pero en el futuro esto se puede ampliar para funciones como scans , queries , etc.

Debajo de estas acciones de alto nivel, enumeramos el tipo de observable, seguido de una lista de servicios que lo admiten. Los tipos de observables actualmente admitidos son:

  • direcciónip - direcciones ipv4
  • dominio - Un dominio o netloc
  • url: una URL completa con esquema, etc.
  • correo electrónico - Una dirección de correo electrónico estándar

También admitimos estos tipos, pero actualmente no están implementados:

  • md5 - Un hash MD5 de archivo
  • sha1 - Un hash SHA1 de archivo
  • sha256 - Un hash SHA256 de archivo

Cada servicio debe tener un name y una template . Se puede proporcionar el campo apikey , pero se recomienda usar variables de entorno.

Plantillas de indicaciones

Cada servicio y tipo de observable puede tener su propia plantilla. Estas se encuentran en el directorio de plantillas y se espera que todas las plantillas se encuentren aquí.

Cada servicio definido tiene una plantilla de solicitud que utiliza plantillas de jinja2. Puede modificarlas según sea necesario, pero el formato del nombre de archivo debe ser el mismo.

Estos archivos tienen el siguiente patrón de nombre de archivo.

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

Además, asegúrese de que el objeto de respuesta tenga los campos correctos en la plantilla o recibirá un error.

A continuación se muestra un ejemplo de salida para un mensaje de Enrich this IP 91.195.240.94 con algunos errores incluidos:

{ "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" }

Uso

Para utilizar un servidor prediseñado, instrucciones desde aquí: https://modelcontextprotocol.io/quickstart/user

  • Descargar Claude para escritorio
  • Instalar uv
curl -LsSf https://astral.sh/uv/install.sh | sh
  • Descargue este repositorio y agréguelo a la configuración de Claude para escritorio
    • Claude para escritorio > Configuración > Desarrollador > Editar configuración

Esto creará un archivo de configuración en:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

Abra el archivo de configuración en cualquier editor de texto. Reemplace el contenido del archivo con esto:

{ "mcpServers": { "enrichment-mcp": { "command": "/ABSOLUTE/PATH/TO/PARENT/FOLDER/uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/CLONED/REPOSITORY/enrichment-mcp", "run", "server.py" ] } } }
  1. Reiniciar Claude para escritorio

Ahora debería ver dos íconos en la barra de chat: un martillo que muestra las herramientas disponibles y un ícono de conexión que muestra el mensaje definido y la entrada requerida.

Diseño

Mientras construía este servidor, aprendí a usar Astral UV y MCP. Definitivamente, lo sobredimensioné, pero fue divertido. Además, tenía previstos usos futuros para parte de este código, así que intenté diseñarlo con eso en mente (más adelante).

Además, pasé específicamente a las plantillas Jinja2 porque esto permite una mejor gestión de las indicaciones/resultados devueltos y, nuevamente, también de los casos de uso futuros.

Envíanos tus comentarios, mejoras o solicitudes de funciones; nos alegrará escucharlos todos.

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar solicitudes de incorporación de cambios.

Descargo de responsabilidad

Esta herramienta es únicamente para fines educativos y de prueba autorizada.

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

Un servidor de protocolo de contexto de modelo que permite a los usuarios realizar búsquedas de enriquecimiento de terceros para observables de seguridad (direcciones IP, dominios, URL, correos electrónicos) a través de servicios como VirusTotal, Shodan y otros.

  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