Skip to main content
Glama
BloodHound MCP

BloodHound MCP

BloodHound MCP

BloodHound MCP (Model Context Protocol) is an innovative extension of the BloodHound tool, designed to enable Large Language Models (LLMs) to interact with and analyze Active Directory (AD) and Azure Active Directory (AAD) environments through natural language queries. By leveraging the power of LLMs, BloodHound MCP allows users to perform complex queries and retrieve insights from their AD/AAD environments using simple, conversational commands.

Features

  • Natural Language Queries: Use conversational language to query your AD/AAD environment without needing to write Cypher queries manually.

  • LLM-Powered Analysis: Harness the capabilities of Large Language Models to interpret and execute queries on your behalf.

  • Seamless Integration: Works with existing BloodHound data stored in Neo4j, providing a user-friendly interface for complex analysis.

  • Customizable: Easily configure the system to work with your specific environment and tools.

Related MCP server: BloodHound MCP Server

Configure the MCP Server

{
  "mcpServers": {
    "BloodHound": {
      "name": "BloodHound",
      "isActive": true,
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp[cli],neo4j",
        "mcp",
        "run",
        "<PATH_TO_THE_PROJECT>server.py"
      ],
      "env": {
        "BLOODHOUND_URI": "bolt://localhost:7687",
        "BLOODHOUND_USERNAME": "neo4j",
        "BLOODHOUND_PASSWORD": "bloodhound"
      }
    }
  }
}

Usage

Configuration

To customize BloodHound MCP, update the configuration file in your MCP-supported tool. Key settings include:

  • Neo4j Database Connection:

    • BLOODHOUND_URI: The URI of your Neo4j database (e.g., bolt://localhost:7687).

    • BLOODHOUND_USERNAME: Your Neo4j username.

    • BLOODHOUND_PASSWORD: Your Neo4j password.

  • Server Settings: Adjust the command and args to match your environment and tool requirements.

Contributing

We welcome contributions to BloodHound MCP! To get involved:

  1. Fork the Repository: Create your own copy on GitHub.

  2. Create a Branch: Work on your feature or fix in a new branch.

  3. Submit a Pull Request: Include a clear description of your changes.

Special Thanks

Custom queries from : https://github.com/CompassSecurity/BloodHoundQueries

Available Tools

106 tools
computers_with_most_sessionsD

[WIP] Computers with Most Sessions [Required: sessions]

Inputs: domain (required).

find_all_enabled_as_rep_roastable_usersC

Find all enabled AS-REP roastable user(s)

Inputs: domain (required).

find_all_enabled_kerberoastable_usersC

Find all enabled kerberoastable user(s)

Inputs: domain (required).

find_all_owned_groups_granting_network_share_accessC

Find all owned groups that grant access to network shares

Inputs: domain (required).

find_allshortestpaths_with_dcsync_to_domainD

Find allshortestpaths with DCSync to domain object

Inputs: domain (required).

find_allshortestpaths_with_shadow_credential_permissionD

Find allshortestpaths with Shadow Credential permission to principal(s)

Inputs: domain (required).

find_azure_app_owners_with_dangerous_rightsC

Owned: [WIP] Find all Owners of Azure Applications with Owners to Service Principals with Dangerous Rights (Required: azurehound)

Inputs: domain (required).

find_enabled_certificate_templatesC

Find enabled Certificate Template(s) [Required: Certipy]

Inputs: domain (required).

find_owned_users_with_azure_tenancy_accessC

Owned: [WIP] Find all owned user with privileged access to Azure Tenancy (Required: azurehound)

Inputs: domain (required).

find_owned_users_with_group_granted_azure_accessC

Owned: [WIP] Find all owned user where group membership grants privileged access to Azure Tenancy (Required: azurehound)

Inputs: domain (required).

find_paths_dangerous_rights_to_adminsdholderC

Find allshortestpaths with dangerous rights to AdminSDHolder object

Inputs: domain (required).

list_all_aad_groups_synchronized_with_adC

[WIP] List all AAD Group(s) that are synchronized with AD (Required: azurehound)

Inputs: no named parameters.

list_all_ad_principals_with_edges_to_azure_principalsC

[WIP] List all AD principal(s) with edge(s) to Azure principal(s) (Required: azurehound)

Inputs: no named parameters.

list_all_authenticated_users_group_membershipsC

List all "Authenticated Users" group membership(s)

Inputs: domain (required).

list_all_certificate_templatesC

List all Certificate Template(s) [Required: Certipy]

Inputs: domain (required).

list_all_cross_domain_user_sessions_and_membershipsC

List all cross-domain user session(s) and user group membership(s)

Inputs: domain (required).

list_all_domain_users_group_membershipsC

List all "Domain Users" group membership(s)

Inputs: domain (required).

list_all_enabled_azure_usersC

List all enabled Azure User(s) (Required: azurehound)

Inputs: no named parameters.

list_all_enabled_azure_users_group_membershipsC

List all enabled Azure User(s) Azure Group membership(s) (Required: azurehound)

Inputs: no named parameters.

list_all_enabled_users_logged_in_last_90_daysC

List all enabled user(s) that logged in within the last 90 days

Inputs: domain (required).

list_all_enabled_users_never_logged_inC

List all enabled user(s) but never logged in

Inputs: domain (required).

list_all_enabled_users_set_password_last_90_daysC

List all enabled user(s) that set password within the last 90 days

Inputs: domain (required).

list_all_enabled_users_with_foreign_group_membershipD

List all enabled user(s) with foreign group membership

Inputs: domain (required).

list_all_enabled_users_with_no_password_requiredC

List all enabled user(s) with "don't require passwords" attribute

Inputs: domain (required).

list_all_enabled_users_with_password_never_expiresC

List all enabled user(s) with "password never expires" attribute

Inputs: domain (required).

list_all_enabled_users_with_userpassword_attributeC

List all enabled user(s) with "userpassword" attribute

Inputs: domain (required).

list_all_enrollment_rights_for_certificate_templatesD

[WIP] List all Enrollment Right(s) for Certificate Template(s)

Inputs: domain (required).

list_all_gposC

List all GPO(s)

Inputs: domain (required).

list_all_groupsD

List all group(s)

Inputs: domain (required).

list_all_owned_computersD

List all owned computer(s)

Inputs: domain (required).

list_all_owned_enabled_usersC

List all owned & enabled user(s)

Inputs: domain (required).

list_all_owned_enabled_users_with_emailC

List all owned & enabled user(s) with an email address

Inputs: domain (required).

list_all_owned_enabled_users_with_rdp_and_sessionsC

List all owned & enabled user(s) with "RDP" permission, and any active sessions and their group membership(s)

Inputs: domain (required).

list_all_owned_enabled_users_with_sqladminC

List all owned & enabled user(s) with "SQLAdmin" permission

Inputs: domain (required).

list_all_owned_usersD

List all owned user(s)

Inputs: domain (required).

list_all_principals_used_for_syncing_ad_and_aadC

[WIP] List all principal(s) used for syncing AD and AAD

Inputs: no named parameters.

list_all_principals_with_local_admin_permissionC

List all principal(s) with "Local Admin" permission

Inputs: domain (required).

list_all_principals_with_rdp_permissionC

List all principal(s) with "RDP" permission

Inputs: domain (required).

list_all_principals_with_sqladmin_permissionC

List all principal(s) with "SQLAdmin" permission

Inputs: domain (required).

list_all_tenancyC

List all Tenancy (Required: azurehound)

Inputs: no named parameters.

list_all_user_sessionsD

List all user session(s) [Required: sessions]

Inputs: domain (required).

list_all_users_with_description_fieldD

List all user(s) with description field

Inputs: domain (required).

list_certificate_authority_serversC

List Certificate Authority server(s) [Required: Certipy]

Inputs: domain (required).

list_computers_without_lapsD

List computer(s) WITHOUT LAPS

Inputs: domain (required).

list_custom_privileged_groupsD

List custom privileged group(s)

Inputs: domain (required).

list_domain_computersD

List domain computer(s)

Inputs: domain (required).

list_domain_controllersD

List domain controller(s)

Inputs: domain (required).

list_domainsD

List domain(s)

Inputs: no named parameters.

list_domain_trustsD

List domain trust(s)

Inputs: no named parameters.

list_enabled_non_privileged_users_with_local_adminC

List enabled non-privileged user(s) with "Local Admin" permission

Inputs: domain (required).

list_enabled_non_privileged_users_with_rdpC

List enabled non-privileged user(s) with "RDP" permission

Inputs: domain (required).

list_enabled_non_privileged_users_with_rdp_and_sessionsC

List enabled non-privileged user(s) with "RDP" permission, and any active sessions and their group membership(s)

Inputs: domain (required).

list_enabled_non_privileged_users_with_sqladminC

List enabled non-privileged user(s) with "SQLAdmin" permission

Inputs: domain (required).

list_enabled_principals_with_constrained_delegationC

List enabled principal(s) with "Constrained Delegation"

Inputs: domain (required).

list_enabled_principals_with_unconstrained_delegationC

List enabled principal(s) with "Unconstrained Delegation"

Inputs: domain (required).

list_enabled_usersD

List enabled user(s)

Inputs: domain (required).

list_enabled_users_pwd_never_expires_unchanged_1yrC

List all enabled user(s) with "password never expires" attribute and not changed in last year

Inputs: domain (required).

list_enabled_users_with_emailC

List enabled user(s) with an email address

Inputs: domain (required).

list_en_svc_accts_priv_grp_memsC

List all enabled SVC account(s) with privileged group membership(s)

Inputs: domain (required).

list_esc1_vulnerable_certificate_templatesC

List ESC1 vulnerable Certificate Template(s) [Required: Certipy]

Inputs: domain (required).

list_esc2_vulnerable_certificate_templatesC

List ESC2 vulnerable Certificate Template(s) [Required: Certipy]

Inputs: domain (required).

list_esc3_vulnerable_certificate_templatesC

List ESC3 vulnerable Certificate Template(s) [Required: Certipy]

Inputs: domain (required).

list_esc4_vulnerable_certificate_templatesC

List ESC4 vulnerable Certificate Template(s) [Required: Certipy]

Inputs: domain (required).

list_esc6_vulnerable_certificate_templatesC

List ESC6 vulnerable Certificate Template(s) [Required: Certipy]

Inputs: domain (required).

list_esc7_vulnerable_certificate_templatesC

List ESC7 vulnerable Certificate Template(s) [Required: Certipy]

Inputs: domain (required).

list_esc8_vulnerable_certificate_templatesC

List ESC8 vulnerable Certificate Template(s) [Required: Certipy]

Inputs: domain (required).

list_high_value_targetsD

List high value target(s)

Inputs: domain (required).

list_network_shares_ignoring_sysvolC

List network share(s), ignoring SYSVOL

Inputs: domain (required).

list_non_managed_service_accountsD

List non-managed service account(s)

Inputs: domain (required).

list_non_priv_users_with_admin_and_sessionsC

List enabled non-privileged user(s) with "Local Admin" permission, and any active sessions and their group membership(s)

Inputs: domain (required).

list_own_en_usrs_local_adm_sessC

List all owned & enabled user(s) with "Local Admin" permission, and any active sessions and their group membership(s)

Inputs: domain (required).

list_principals_with_azure_tenancy_accessB

[WIP] List all principal(s) with privileged access to Azure Tenancy (Required: azurehound)

Inputs: no named parameters.

list_privileged_users_without_protected_usersC

List privileged user(s) without "Protected Users" group membership

Inputs: domain (required).

list_privileges_for_certificate_authority_serversD

[WIP] List privileges for Certificate Authority server(s) [Required: Certipy]

Inputs: domain (required).

non_privileged_users_with_dangerous_permissionsC

List non-privileged user(s) with dangerous permissions to any node type

Inputs: domain (required).

route_all_owned_enabled_group_membershipsD

Route all owned & enabled group membership(s)

Inputs: domain (required).

route_all_owned_enabled_non_privileged_group_membershipsD

Route all owned & enabled non-privileged group(s) membership

Inputs: domain (required).

route_all_owned_enabled_privileged_group_membershipsD

Route all owned & enabled privileged group(s) membership

Inputs: domain (required).

route_all_sessions_to_computersD

Route all sessions to computers (Required: sessions)

Inputs: domain (required).

route_all_sessions_to_computers_without_lapsC

Route all sessions to computers WITHOUT LAPS (Required: sessions)

Inputs: domain (required).

route_azure_users_with_dangerous_rights_to_usersC

[WIP] Route from Azure User principal(s) that have dangerous rights to Azure User and User principal(s) (Required: azurehound)

Inputs: no named parameters.

route_from_owned_enabled_principals_to_high_value_targetsD

Route from owned & enabled principals to high value target(s)

Inputs: domain (required).

route_non_priv_comps_dangerous_rights_to_compsD

Route non-privileged computer(s) with dangerous rights to computer(s) [HIGH RAM]

Inputs: domain (required).

route_non_priv_comps_dangerous_rights_to_gposC

Route non-privileged computer(s) with dangerous rights to GPO(s) [HIGH RAM]

Inputs: domain (required).

route_non_priv_comps_dangerous_rights_to_groupsC

Route non-privileged computer(s) with dangerous rights to group(s) [HIGH RAM]

Inputs: domain (required).

route_non_priv_comps_dangerous_rights_to_priv_nodesC

Route non-privileged computer(s) with dangerous rights to privileged node(s) [HIGH RAM]

Inputs: domain (required).

route_non_priv_comps_dangerous_rights_to_usersC

Route non-privileged computer(s) with dangerous rights to user(s) [HIGH RAM]

Inputs: domain (required).

route_non_privileged_users_with_dangerous_permissionsC

Route non-privileged user(s) with dangerous permissions to any node type

Inputs: domain (required).

route_non_privileged_users_with_dangerous_rights_to_gposD

Route non-privileged user(s) with dangerous rights to GPO(s) [HIGH RAM]

Inputs: domain (required).

route_non_privileged_users_with_dangerous_rights_to_usersC

Route non-privileged user(s) with dangerous rights to user(s) [HIGH RAM]

Inputs: domain (required).

route_non_priv_users_dangerous_rights_to_compsC

Route non-privileged user(s) with dangerous rights to computer(s) [HIGH RAM]

Inputs: domain (required).

route_non_priv_users_dangerous_rights_to_priv_nodesC

Route non-privileged user(s) with dangerous rights to privileged node(s) [HIGH RAM]

Inputs: domain (required).

route_non_priv_usrs_dang_rts_grpsC

Route non-privileged user(s) with dangerous rights to group(s) [HIGH RAM]

Inputs: domain (required).

route_owned_users_dangerous_rights_to_anyC

Route all owned & enabled user(s) with Dangerous Rights to any node type

Inputs: domain (required).

route_owned_users_dangerous_rights_to_groupsC

Route all owned & enabled user(s) with Dangerous Rights to group(s)

Inputs: domain (required).

route_own_en_usrs_dang_rts_usrsC

Route all owned & enabled user(s) with Dangerous Rights to user(s)

Inputs: domain (required).

route_own_en_usrs_unconst_delC

Route from owned & enabled user(s) to all principals with "Unconstrained Delegation"

Inputs: domain (required).

route_principals_to_azure_apps_and_spsC

[WIP] Route all principal(s) that have control permissions to Azure Application(s) running as Azure Service Principals (AzSP), and route from privileged ASP to Azure Tenancy (Required: azurehound)

Inputs: no named parameters.

route_principals_to_azure_vmC

[WIP] Route from principal(s) to Azure VM (Required: azurehound)

Inputs: no named parameters.

route_principals_to_global_administratorsC

[WIP] Route from principal(s) to principal(s) with Global Administrator permissions (Required: azurehound)

Inputs: no named parameters.

route_priv_users_sessions_to_non_priv_compsC

Route all privileged user(s) with sessions to non-privileged computer(s) [Required: sessions]

Inputs: domain (required).

route_user_principals_to_azure_service_principalsC

[WIP] Route all user principal(s) that have control permissions to Azure Service Principals (AzSP), and route from AzSP to principal(s) (Required: azurehound)

Inputs: no named parameters.

run_queryC

執行Cypher查詢並返回結果

Args: query: Cypher查詢字符串 parameters: 查詢參數字典

Returns: 查詢結果列表

Inputs: query (required), parameters.

users_with_most_cross_domain_sessionsD

[WIP] Users with most cross-domain sessions [Required: sessions]

Inputs: domain (required).

users_with_most_local_admin_rightsD

[WIP] Users with Most Local Admin Rights

Inputs: domain (required).

users_with_most_sessionsD

[WIP] Users with Most Sessions [Required: sessions]

Inputs: domain (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.1/5.0

    Scored across 106 tools

    Disambiguation2/5

    Many tools have overlapping purposes and unclear boundaries, causing significant ambiguity. For example, there are multiple 'list' tools for similar user attributes (e.g., list_enabled_users_with_password_never_expires vs list_enabled_users_pwd_never_expires_unchanged_1yr) and numerous 'route' tools with similar dangerous rights targeting different node types, making it difficult for an agent to distinguish between them without deep domain knowledge.

    Naming Consistency3/5

    The naming is mixed with some consistency but notable deviations. Most tools follow a verb_noun pattern (e.g., list_all_gpos, find_all_enabled_as_rep_roastable_users), but there are inconsistencies like abbreviations (e.g., list_own_en_usrs_local_adm_sess), varying verb styles (find vs list vs route), and occasional use of underscores inconsistently, reducing predictability.

    Tool Count2/5

    With 106 tools, the count is excessive and feels heavy for the domain of BloodHound (security analysis and Active Directory/Azure reconnaissance). This large number suggests over-fragmentation and redundancy, making it overwhelming for agents to navigate and likely including many tools that could be consolidated or parameterized.

    Completeness4/5

    The tool set appears highly complete for the BloodHound domain, covering a wide range of security analysis tasks such as listing, finding, and routing across users, groups, computers, certificates, and Azure resources. There are minor gaps (e.g., some tools marked as [WIP] or requiring specific data like sessions or azurehound), but overall, it provides extensive coverage for attack path discovery and privilege escalation scenarios.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      Enables LLMs to perform Active Directory penetration testing using tools like NetExec, Bloodhound, Nmap, Certipy, and John the Ripper. Automates vulnerability discovery, attack path analysis, and documentation generation for security assessments.
      26
      7
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables security professionals to query and analyze Active Directory attack paths from BloodHound Community Edition data using natural language through Claude Desktop's Model Context Protocol interface.
      79
      143
      GPL 3.0
    • A
      license
      A
      quality
      D
      maintenance
      Connects LLMs to BloodHound Enterprise for natural language attack path analysis, Cypher queries, and exploration of Active Directory, Azure/Entra ID, and OpenGraph environments.
      20
      GPL 3.0
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables managing Active Directory users, groups, and computers using natural language, with support for queries and updates.
      59
      MIT