MCP-Maltego
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HIBP_API_KEY | No | API key for Have I Been Pwned transforms. | |
| CENSYS_API_ID | No | Censys API ID for Censys transforms. | |
| TATUM_API_KEY | No | API key for Tatum transforms. | |
| HUNTER_API_KEY | No | API key for Hunter.io transforms. | |
| MCP_MALTEGO_UV | No | Full path to uv if it is not on PATH. | auto-detected |
| SHODAN_API_KEY | No | API key for Shodan transforms. | |
| MALTEGO_MCP_HOME | No | Shared state directory for the graph, catalog, imports, exports, and runtime. | ~/.maltego-mcp |
| CENSYS_API_SECRET | No | Censys API secret for Censys transforms. | |
| GREYNOISE_API_KEY | No | API key for GreyNoise transforms. | |
| VIRUSTOTAL_API_KEY | No | API key for VirusTotal transforms. | |
| MALTEGO_MCP_BACKEND | No | Backend to use: memory (local JSON, multi-process safe) or gremlin (Azure Cosmos DB, experimental). | memory |
| SECURITYTRAILS_API_KEY | No | API key for SecurityTrails transforms. | |
| MALTEGO_MCP_TRANSFORMS_FILE | No | Catalog of custom transform servers and Machines. | <home>/transforms.toml |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| osint_list_entity_typesA | Lista los tipos de entidad soportados (estándar de Maltego e importados de tu Maltego) por categoría, con su propiedad principal. El valor de maltego_type es el entity_type que usan las demás tools. |
| osint_list_transformsA | Inventario: transforms (integrados sin API key, de proveedores con API key y de tus servidores TRX/iTDS) filtrables por tipo de entrada o categoría, Machines disponibles y estado de cada proveedor y servidor (check_servers=true comprueba la conexión). |
| osint_manage_caseA | Crea o actualiza un caso (action=create), divide un caso en sub-casos por rol para enjambres multi-agente (action=fork o delegate, sub_roles), fusiona otro caso o todos los sub-casos con bloqueo optimista (action=merge, source_case o 'all', expected_version) o lo borra (action=delete, confirm). |
| osint_list_casesA | Lista los casos de investigación, del más reciente al más antiguo, con paginación. |
| osint_get_case_summaryA | Resume un caso: recuentos por tipo, entidades prioritarias (puntuación explicable de confianza, fiabilidad de fuentes, conexiones y novedad), entidades aisladas e índices de calidad. |
| osint_upsert_entityA | Guarda una entidad en un caso (lo crea si no existe). Normaliza el valor y devuelve su entity_id determinista. Reinsertar fusiona fuentes y propiedades. Úsala también para volcar al grafo datos de otros MCP (MISP, ATT&CK, TheHive...) con source=. |
| osint_manage_entityA | action=update cambia confianza, notas o propiedades. action=visual_style fija peso/color/tamaño visual para .mtgx. action=analyze_behavior ejecuta perfilado conductual HUMINT sobre el sujeto y su vecindario. action=delete borra la entidad y sus relaciones. |
| osint_get_entityA | Devuelve una entidad con propiedades, notas, fuentes, puntuación explicada, qué paso la descubrió (procedencia), qué transforms se ejecutaron sobre ella y cuáles quedan pendientes. |
| osint_search_entitiesA | Busca entidades por texto contenido en el valor y/o tipo, en un caso o en todos (case_id vacío: correlación entre casos). sort=priority ordena por puntuación (requiere case_id). |
| osint_link_entitiesA | action=link crea/refuerza la relación dirigida source -> target (con rol, sentimiento y peso HUMINT opcionales); action=analyze infiere rol/sentimiento/peso; action=correlate calcula la probabilidad de solapamiento de identidad entre alias/perfiles y enlaza si >=0.85; action=unlink elimina la relación. |
| osint_get_neighborsB | Lista las entidades relacionadas con una entidad, con el tipo y la dirección de cada relación. |
| osint_find_pathsA | Encuentra caminos (sin ciclos, en cualquier dirección, el más corto primero) entre dos entidades. |
| osint_run_transformA | Ejecuta un transform (integrado, de proveedor o de tus servidores TRX/iTDS) sobre una entidad. Con save=true guarda entidad, resultados, relaciones y el paso en la memoria del caso. |
| osint_expand_entityA | Ejecuta sobre una entidad del caso todos los transforms disponibles que declaran su tipo (como 'Run All' en Maltego) y guarda los resultados. Indica los que faltan por API key. |
| osint_run_machineA | Ejecuta una Machine (DomainRecon, InfrastructureRecon, EmailRecon, CompanyFootprint, PersonalFootprint, URLRecon, ThreatSweep, ASNToNetblocks o las de tu catálogo) o una cadena propia (transforms en orden). max_rounds repite la expansión sobre lo nuevo; los presupuestos limitan coste. |
| osint_investigateB | Punto de entrada: detecta el tipo del valor, crea el caso (o usa case_id), ejecuta la Machine adecuada (o expand_entity), puntúa entidades, propone los siguientes pasos y devuelve un informe en línea. |
| osint_suggest_next_stepsA | Recomienda de forma determinista y explicada los pivotes más valiosos: entidad prioritaria x transform aplicable aún no ejecutado x rendimiento histórico del transform (aprendizaje por resultados). |
| osint_get_timelineA | mode=investigation devuelve la memoria procedimental del caso (pasos ejecutados, con since_seq). mode=subject construye la cronología vital/conductual del sujeto a partir de fechas de entidades (whois.created, breach.date, github.created_at...) y detecta anomalías temporales (de-confliction). |
| osint_export_caseA | Exporta a fichero: mtgx (grafo nativo de Maltego con layout hierarchical/radial/force y la memoria de la investigación dentro), json, graphml (SIEM/SOAR, Gephi), csv, report_md o report_html (informe ejecutivo). inline=true devuelve además el informe Markdown en la respuesta. |
| osint_import_graphA | Importa (fusiona) en un caso un grafo .mtgx guardado en Maltego —con su memoria si la trae— o un CSV (source_type,source_value,relation,target_type,target_value,confidence). El fichero debe estar en ~/.maltego-mcp/imports o exports. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Most tools target clearly distinct OSINT resources/actions (cases, entities, links, transforms, machines, timelines, exports). Some boundaries need care: osint_upsert_entity vs osint_manage_entity action=update, and osint_run_transform vs osint_expand_entity vs osint_run_machine are related enough that an agent must read descriptions to choose correctly.
All tools share the osint_ prefix and snake_case convention, with mostly predictable verb_noun naming (get_case_summary, search_entities, run_transform, export_case). The single verb-only osint_investigate is a minor stylistic exception but remains clear and consistent within the set.
Twenty tools is at the upper end, but the surface is segmented into coherent OSINT subdomains: case management, entity CRUD, graph traversal, transform/machine execution, investigation guidance, timeline, and import/export. Each tool appears to earn its place, though some manage_* multi-action tools could be split or streamlined.
The set covers the full investigation lifecycle: create/list/merge/fork/delete cases, create/read/update/delete entities, link/unlink/correlate relations, traverse neighbors and paths, run transforms and machines, get timelines, suggest next steps, and import/export Maltego and other formats. No obvious dead ends for the stated OSINT domain.