FreeIPA目录管理服务

FreeIPA MCP服务器提供与FreeIPA身份管理系统交互的工具,包括用户和组管理、密码操作及系统状态监控。

  • by ahmetazanpa
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ahmetazanpa/freeipa-mcp-server

使用说明

FreeIPA MCP服务器

用于与FreeIPA目录管理系统交互的模型上下文协议(MCP)服务器。

📋 概述

此MCP服务器提供了各种与FreeIPA身份管理系统交互的工具。您可以执行用户和组管理、密码操作和系统状态监视。

🚀 特性

用户管理

  • ✅ 列出用户
  • ✅ 显示用户详细信息
  • ✅ 添加新用户
  • ✅ 修改用户信息
  • ✅ 更改密码
  • ✅ 重置密码(通过手机验证)

组管理

  • ✅ 列出组
  • ✅ 显示组详细信息
  • ✅ 添加新组
  • ✅ 向组中添加成员
  • ✅ 从组中删除成员

系统管理

  • ✅ 连接到FreeIPA服务器
  • ✅ 检查连接状态
  • ✅ 和服务器断开连接

🛠️ 安装

需求

  • Python 3.8+
  • FreeIPA服务器
  • FreeIPA API访问

依赖项

pip install -r requirements.txt

环境变量

创建一个 .env 文件并定义以下变量:

FREEIPA_SERVER=https://your-freeipa-server.com
FREEIPA_USERNAME=admin
FREEIPA_PASSWORD=your-password
FREEIPA_VERIFY_SSL=true
PORT=8000
HOST=0.0.0.0

🚀 跑步

开发环境

python freeipa_mcp_server.py

使用Docker

# Build image
docker build -t freeipa-mcp-server .

# Run container
docker run -p 8000:8000 --env-file .env freeipa-mcp-server

使用Docker Compose

version: '3.8'
services:
  freeipa-mcp-server:
    build: .
    ports:
      - "8000:8000"
    env_file:
      - .env
    restart: unless-stopped

📚 API终点

健康检查

  • GET /health -系统状态和连接信息

连接状态

  • GET /connection-status -FreeIPA连接状态

MCP端点

  • GET /sse -服务器发送事件端点
  • POST /messages -MCP消息端点

🔧 MCP工具

连接管理

freeipa_connect

连接到FreeIPA服务器。

{
  "server": "https://freeipa.example.com",
  "username": "admin",
  "password": "password",
  "verify_ssl": true
}

freeipa_disconnect

断开与FreeIPA服务器的连接。

freeipa_status

检查连接状态。

用户操作

user_list

获取用户列表。

{
  "sizelimit": 100
}

user_show

显示用户详细信息。

{
  "uid": "john.doe"
}

user_add

添加新用户。

{
  "uid": "newuser",
  "givenname": "John",
  "sn": "Doe",
  "mail": "john.doe@example.com",
  "userpassword": "password123"
}

user_modify

更新用户信息。

{
  "uid": "john.doe",
  "mail": "newemail@example.com",
  "telephonenumber": "+905551234567"
}

change_password

更改用户密码。

{
  "username": "john.doe",
  "new_password": "newpassword123",
  "old_password": "oldpassword123"
}

forgot_reset_password

重置密码(通过手机验证)。

{
  "username": "john.doe",
  "phone": "+905551234567",
  "new_password": "newpassword123"
}

组操作

group_list

获取组列表。

{
  "sizelimit": 100,
  "cn": "developers",
  "description": "Development team"
}

group_show

显示组详细信息。

{
  "cn": "developers"
}

group_add

添加新组。

{
  "cn": "newgroup",
  "description": "New group description"
}

group_add_member

将成员添加到组。

{
  "cn": "developers",
  "user": "john.doe"
}

group_remove_member

从组中删除成员。

{
  "cn": "developers",
  "user": "john.doe"
}