凭证管理服务器

一个用于管理凭证的服务器,支持Kerberos认证,提供kinit执行、cookies获取和Jenkins凭证更新等功能。

  • by IH8E
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 IH8E/keycloak-client-mcp-server

使用说明

凭证 MCP 服务器

使用Kerberos认证管理凭证的MCP服务器。

🚀 表情符号“🚀”通常表示火箭、发射、快速前进或突破等含义,可以翻译为“🚀(火箭/发射/快速前进等)”。具体翻译可能需要根据上下文来确定最准确的表述。 快速启动见 QUICK_START.md 翻译为中文是:“快速入门指南.md” 或者 “快速开始指南.md”(其中“.md”表示这是一个Markdown格式的文件)
🐳 这个表情符号在中文里通常被解释为“海豚”,所以可以翻译为“海豚”。不过,具体翻译可能还取决于上下文和使用场景。 Docker 文档见 DOCKER.md(文件名,可译为“Docker.md”或保持原样,因为文件扩展名通常不翻译)
🔐 Kerberos配置见 KERBEROS_SETUP.md 翻译为中文是:“KERBEROS 安装指南.md” 或 “KERBEROS 设置说明.md”(具体翻译可能根据上下文有所调整,但核心意思是“关于KERBEROS的安装或设置说明的Markdown文件”)

目前,我们通过本地或MCP工具获取kerberos票据:

# Локально (для систем с поддержкой --password-file, например macOS/Debian)
kinit --password-file=./password.txt user@EXAMPLE.COM

# Локально через stdin (работает везде, включая Alpine Linux)
echo "your-password" | kinit user@EXAMPLE.COM

# Через MCP инструмент (универсальный способ, работает на всех платформах)
kinit_auth(username="user@EXAMPLE.COM", password="your-password")

功能/可能性

服务器提供四种工具(tools):

  1. `kinit_auth` 可以翻译为“Kerberos认证初始化”或“Kerberos身份验证启动”。这个术语通常与网络安全和身份验证系统相关,特别是在使用Kerberos协议进行身份验证时,`kinit` 命令用于获取票据授予票据(TGT),而 `kinit_auth` 可能是指与该过程相关的某种认证或初始化步骤。不过,具体的翻译可能需要根据上下文来确定 - 使用指定的凭据执行kinit以获取Kerberos票据
  2. 获取cookies - 通过Kerberos从指定的URL获取cookies
  3. 更新凭证 - 在Jenkins中更新凭证
  4. 获取cookie并更新 - 综合操作:获取cookies和更新Jenkins凭证

安装

pip install -r requirements.txt
# или 
pipenv install

使用

服务器启动

本地运行

# STDIO режим (для локального использования)
python server.py

# SSE режим (HTTP сервер на порту 8000)
python server.py --sse

# Или через pipenv
pipenv run python server.py

在Docker中启动

📚 书籍或学习的象征 Docker的详细文档见 DOCKER.md(文件名,可翻译为“DOCKER 文档.md”或保持原样,因为文件名通常不翻译,但根据语境,“DOCKER 文档”可能更易理解)

构建镜像
docker build -t keycloak-mcp-server .
通过docker-compose启动
# SSE режим (HTTP сервер)
docker-compose up mcp-server-sse -d

# STDIO режим
docker-compose up mcp-server-stdio
通过Makefile启动(推荐)
# Показать все доступные команды
make help

# Сборка образа
make build

# Запуск в режиме SSE (HTTP на порту 8000)
make run-sse

# Запуск в режиме STDIO
make run-stdio

# Выполнение kinit в контейнере
make kinit

# Просмотр логов
make logs

# Открыть shell в контейнере
make shell

# Остановка контейнера
make stop

# Полная очистка (удаление контейнера и образа)
make clean

# Пересборка образа с нуля
make rebuild

# Статус контейнеров
make status
通过辅助脚本启动
# Сборка образа
./docker-run.sh build

# Запуск в режиме SSE (HTTP на порту 8000)
./docker-run.sh run-sse

# Запуск в режиме STDIO
./docker-run.sh run-stdio

# Выполнение kinit в контейнере
./docker-run.sh kinit

# Просмотр логов
./docker-run.sh logs

# Открыть shell в контейнере
./docker-run.sh shell

# Остановка контейнера
./docker-run.sh stop

# Полная очистка (удаление контейнера и образа)
./docker-run.sh clean
直接启动 Docker
# STDIO режим
docker run -it --rm \
  -v $(pwd)/krb5.conf:/etc/krb5.conf:ro \
  keycloak-mcp-server

# SSE режим (HTTP сервер)
docker run -d \
  --name keycloak-mcp-server \
  -p 8000:8000 \
  -v $(pwd)/krb5.conf:/etc/krb5.conf:ro \
  keycloak-mcp-server \
  python server.py --sse

使用工具

执行 kinit 命令

kinit_auth(
    username="user@EXAMPLE.COM",
    password="your-password"
)

获取cookies

get_cookies(url="https://your-platform.com")

在Jenkins中更新凭证

update_credential(
    jenkins_url="https://jenkins.example.com",
    credentials_id="your-credential-id",
    secret_value="your-secret-value"
)

一次性获取cookies并更新凭证

get_cookies_and_update(
    source_url="https://your-platform.com",
    jenkins_url="https://jenkins.example.com",
    credentials_id="your-credential-id"
)

要求

  • 配置的Kerberos认证
  • 访问Jenkins服务器
  • Python 3.10+
  • Docker 和 docker-compose(用于在容器中运行)

Kerberos配置

本地设置

要使用Kerberos,需要创建一个文件 /etc/krb5.conf 或者 ~/krb5.conf:

# Скопируйте пример конфигурации
cp krb5.conf.example krb5.conf

# Отредактируйте конфигурацию под ваше окружение
# Укажите правильные значения для:
# - default_realm
# - kdc
# - admin_server

在Docker中的配置

在通过Docker启动时,Kerberos配置会从文件挂载 krb5.conf:

# Убедитесь, что файл krb5.conf существует
ls -l krb5.conf

# Если файла нет, создайте его из примера
cp krb5.conf.example krb5.conf

工作时间安排

STDIO模式

适用于:

  • 本地开发和测试
  • 与通过stdin/stdout工作的MCP客户端的集成
  • 通过Claude Desktop或其他本地MCP客户端启动

SSE模式(HTTP)

适用于:

  • 远程访问MCP服务器
  • 在微服务架构中的应用
  • 通过REST API访问
  • 在Kubernetes或其他编排器中启动

使用示例

通过MCP使用kinit

# Сначала выполните kinit для получения Kerberos тикета
kinit_auth(
    username="user@EXAMPLE.COM",
    password="your-password"
)

# Затем используйте другие инструменты
get_cookies(url="https://your-platform.com")

在Docker中的使用

# 1. Соберите образ
./docker-run.sh build

# 2. Запустите сервер в режиме SSE
./docker-run.sh run-sse

# 3. Выполните kinit внутри контейнера
./docker-run.sh kinit

# 4. Используйте MCP инструменты через HTTP API на http://localhost:8000