Skip to main content
Glama

mcp-freeipa

MCP server for FreeIPA / Red Hat IdM — user, group, host, DNS, HBAC, and sudo management via the Model Context Protocol.

Features

  • Users — list, get, create, enable, disable, delete, and reset passwords

  • Groups — list, get, and manage group memberships

  • Hosts — list and inspect enrolled hosts

  • DNS — list zones, list and get records (A, AAAA, CNAME, MX, PTR, TXT, SRV, …)

  • Sudo rules — list and inspect sudo policy rules

  • HBAC rules — list and inspect host-based access control rules

Related MCP server: IPA MCP Server

Requirements

  • FreeIPA 4.6+ or Red Hat IdM 7.6+ (any modern version with the JSON-RPC API)

  • Node.js 18+

  • An admin account or a dedicated service account with read access to the relevant objects

FreeIPA permissions

The minimum required privileges depend on which tools you use:

Area

Required privilege

Users

User Administrators role or System: Read Users permission

Groups

Group Administrators role or System: Read Groups permission

Hosts

Host Administrators role or System: Read Hosts permission

DNS

DNS Administrators role or System: Read DNS Entries permission

Sudo

Sudo Administrator role or System: Read Sudo Rules permission

HBAC

HBAC Administrator role or System: Read HBAC Rules permission

For read-only usage, you can create a dedicated service account and grant it only the System: Read * permissions via an RBAC role.

Environment variables

Variable

Required

Default

Description

FREEIPA_HOST

Yes

—

FreeIPA server hostname (e.g. ipa.example.com)

FREEIPA_PASSWORD

Yes

—

Password for the FreeIPA account

FREEIPA_USERNAME

No

admin

FreeIPA account username

FREEIPA_ALLOW_SELF_SIGNED

No

true

Allow self-signed TLS certificates (true/false)

Installation

npm install
npm run build

Claude Desktop configuration

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "freeipa": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-freeipa/dist/index.js"],
      "env": {
        "FREEIPA_HOST": "ipa.example.com",
        "FREEIPA_USERNAME": "admin",
        "FREEIPA_PASSWORD": "your-password-here",
        "FREEIPA_ALLOW_SELF_SIGNED": "true"
      }
    }
  }
}

If you have installed the package globally via npm install -g mcp-freeipa:

{
  "mcpServers": {
    "freeipa": {
      "command": "mcp-freeipa",
      "env": {
        "FREEIPA_HOST": "ipa.example.com",
        "FREEIPA_USERNAME": "admin",
        "FREEIPA_PASSWORD": "your-password-here"
      }
    }
  }
}

Available tools

Users

Tool

Description

list_users

List users, with optional uid / cn / mail filters

get_user

Get full details for a user by UID

enable_user

Enable a disabled user account

disable_user

Disable (lock) a user account

add_user

Create a new user account

delete_user

Permanently delete a user account

reset_password

Reset a user's password

Groups

Tool

Description

list_groups

List groups with optional name filter

get_group

Get full details for a group by name

add_user_to_group

Add one or more users to a group

remove_user_from_group

Remove one or more users from a group

Hosts

Tool

Description

list_hosts

List enrolled hosts with optional FQDN filter

get_host

Get full details for a host by FQDN

DNS

Tool

Description

list_dns_zones

List all DNS zones

list_dns_records

List all records in a DNS zone

get_dns_record

Get all record types for a specific name in a zone

Sudo

Tool

Description

list_sudo_rules

List all sudo rules

get_sudo_rule

Get full details of a sudo rule

HBAC

Tool

Description

list_hbac_rules

List all host-based access control rules

get_hbac_rule

Get full details of an HBAC rule

FreeIPA API notes

The server uses the FreeIPA JSON-RPC API (/ipa/session/json). It authenticates with a username and password via form-encoded login (/ipa/session/login_password) and stores the resulting ipa_session cookie for all subsequent requests. The session cookie is refreshed automatically on expiry (HTTP 401).

FreeIPA returns all attribute values as arrays even for scalar fields (e.g., {"uid": ["john"]}). The server normalises these automatically, extracting the first element for scalar fields and preserving full arrays for list fields such as memberof_group.

Development

npm run dev      # run with tsx (no build step)
npm run build    # compile TypeScript to dist/
npm start        # run compiled output

License

See LICENSE.

Available Tools

20 tools
add_userB

Create a new FreeIPA user account.

Inputs: sn (required), uid (required), givenname (required), cn, +4 more.

add_user_to_groupA

Add one or more users to a FreeIPA group.

Inputs: uid (required), group_cn (required).

delete_userA

Permanently delete a FreeIPA user account.

Inputs: uid (required).

disable_userA

Disable a FreeIPA user account (locks it without deleting).

Inputs: uid (required).

enable_userA

Enable a disabled FreeIPA user account.

Inputs: uid (required).

get_dns_recordB

Get detailed DNS information for a specific record name within a zone.

Inputs: name (required), zone (required).

get_groupA

Get detailed information about a specific FreeIPA group by its name (cn).

Inputs: cn (required).

get_hbac_ruleA

Get detailed information about a specific FreeIPA HBAC rule by its name.

Inputs: cn (required).

get_hostA

Get detailed information about a specific FreeIPA-enrolled host by its FQDN.

Inputs: fqdn (required).

get_sudo_ruleA

Get detailed information about a specific FreeIPA sudo rule by its name.

Inputs: cn (required).

get_userA

Get detailed information about a specific FreeIPA user by their UID (login name).

Inputs: uid (required).

list_dns_recordsA

List DNS records within a specific zone in FreeIPA. Returns all record types (A, AAAA, CNAME, MX, etc.).

Inputs: zone (required), limit.

list_dns_zonesB

List all DNS zones managed by FreeIPA. Returns zone names and active status.

Inputs: name_filter.

list_groupsB

List groups in FreeIPA. Returns name, description, GID, and member lists.

Inputs: cn, limit.

list_hbac_rulesB

List all Host-Based Access Control (HBAC) rules in FreeIPA. HBAC rules control which users can access which hosts and services.

Inputs: cn.

list_hostsA

List hosts enrolled in FreeIPA. Returns FQDN, OS, enrollment status, and group memberships.

Inputs: fqdn, limit.

list_sudo_rulesA

List all sudo rules defined in FreeIPA. Returns who each rule applies to, which hosts, and what commands are allowed or denied.

Inputs: cn.

list_usersA

List users in FreeIPA. Optionally filter by UID, full name (cn), or email address.

Inputs: cn, uid, mail, limit.

remove_user_from_groupB

Remove one or more users from a FreeIPA group.

Inputs: uid (required), group_cn (required).

reset_passwordA

Reset a FreeIPA user's password. Requires the current password unless called by an admin with sufficient privileges using the admin API flow.

Inputs: uid (required), new_password (required), current_password.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 20 tools

    Disambiguation5/5

    Each tool targets a distinct resource-action pair, such as user lifecycle, group membership, sudo rules, HBAC rules, hosts, and DNS records. List-versus-get and add-versus-remove patterns are clearly differentiated, so an agent is unlikely to confuse tool purposes.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun snake_case pattern, with verbs like list, get, add, delete, enable, disable, reset, and remove used predictably. Even multi-word resources like sudo_rule and dns_record maintain a uniform style.

    Tool Count4/5

    Twenty tools is slightly above the typical well-scoped range, but FreeIPA is a broad domain covering users, groups, sudo, HBAC, hosts, and DNS. Each tool has a clear purpose, and the count feels reasonable rather than bloated.

    Completeness3/5

    User management is well covered with CRUD, password reset, and enable/disable, plus group membership operations. However, groups lack create/delete tools, and sudo rules, HBAC rules, hosts, and DNS are all read-only, leaving notable management gaps that could dead-end workflows.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      A Model Context Protocol server that enables management of Keycloak users and realms through a standardized interface, providing tools for user creation, deletion, role assignment, and group management.
      9
      102 npm
      13
      MIT
    • A
      license
      Not graded
      quality
      Not graded
      maintenance
      Enables management of FreeIPA resources including user groups, host groups, HBAC, and sudo rules via the FreeIPA JSON-RPC API. It provides comprehensive tools for automating access control and infrastructure provisioning in FreeIPA-managed environments.
      Apache 2.0
    • F
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that exposes LDAP directory operations to AI agents, supporting full CRUD, dual transport modes (stdio and SSE), and LDIF/JSON output with authentication.
      -
    • A
      license
      Not graded
      quality
      B
      maintenance
      MCP server for Authentik identity management, enabling natural language management of users, groups, applications, flows, policies, providers, and more.
      143 npm
      15
      MIT