Skycloak
chính thứcMáy chủ Model Context Protocol cho Skycloak quản lý Keycloak. Quản lý cụm, realm, ứng dụng, SSO và người dùng từ bất kỳ máy khách MCP nào.
Bạn có thể làm gì với Skycloak MCP?
-
Đánh giá nâng cấp cụm — Hỏi cụm Keycloak nào đang chậm nâng cấp và nhận lộ trình đề xuất thông qua
list_cluster_upgradesvàget_cluster_upgrade_path. -
Cấp phát realm — Tạo realm staging trên một cụm cụ thể với các nhà cung cấp danh tính đã cấu hình, sử dụng
create_realmvàcreate_identity_provider. -
Kiểm toán hoạt động người dùng — Tìm ai vừa được thêm vào realm gần đây và xem xét các thay đổi của quản trị viên, tận dụng
list_realm_usersvàquery_events. -
Thiết lập tích hợp SIEM — Cấu hình đích chuyển tiếp các sự kiện quản trị đến webhook bên ngoài, sử dụng
create_siem_destinationvàtest_siem_destination. -
Thay thế nội dung chủ đề — Cập nhật kho lưu trữ chủ đề tùy chỉnh tại chỗ mà không làm mất các bài gán của nó, qua
update_theme_contentvới xác nhận. -
Định tuyến tên miền tùy chỉnh — Thêm tên miền tùy chỉnh, truy xuất các bản ghi DNS cần tạo, xác minh chúng và định tuyến lưu lượng đến realm bằng
create_domainvàverify_domain.
Tài liệu
skycloak-mcp
Máy chủ Model Context Protocol chính thức cho Skycloak (Keycloak được quản lý): quản lý cụm, realm, ứng dụng và SSO của bạn từ bất kỳ máy khách MCP nào (Claude Desktop, Claude Code, Cursor).
Trạng thái: bản phát hành sớm. Phạm vi công cụ đang được mở rộng; xem changelog để biết những gì hiện có.
Bắt đầu nhanh
claude mcp add --transport http skycloak https://mcp.skycloak.io
Không cần khóa API, không cần client ID, không cần cấu hình. Trình duyệt của bạn mở ra, bạn đăng nhập vào Skycloak và các công cụ xuất hiện. Bất kỳ máy khách MCP nào hỗ trợ HTTP có thể truyền phát đều hoạt động theo cùng cách: chỉ cần cung cấp URL và không gì khác.
Sau đó hãy yêu cầu điều gì đó:
- "Cụm Keycloak nào của tôi đang chậm nâng cấp?"
- "Tạo một realm staging trên cụm EU với đăng nhập Google và GitHub."
- "Ai đã được thêm vào realm production trong tuần qua?"
- "Thiết lập đích SIEM chuyển tiếp sự kiện quản trị đến webhook Datadog của chúng tôi."
Xác thực & an toàn
- HTTP được lưu trữ, với OAuth (không cần cấu hình thông tin xác thực). Trỏ máy khách của bạn đến
https://mcp.skycloak.iomà không cần tiêu đề. Máy chủ trả lời401bằng con trỏ tới siêu dữ liệu RFC 9728 của nó tại/.well-known/oauth-protected-resource, máy khách chạy luồng mã ủy quyền trình duyệt với realm đăng nhập Skycloak và mã truy cập nhận được sẽ được trao đổi lấy khóa API có phạm vi workspace, tồn tại trong thời gian ngắn mà phiên chạy sử dụng. Khóa kéo dài một giờ và được gia hạn tự động. Không có gì được lưu trữ trong cấu hình máy khách của bạn. - HTTP được lưu trữ, với khóa API. Tạo khóa trong bảng điều khiển Skycloak và gửi nó dưới dạng
Authorization: Bearer <key>(hoặcAPI-Key: <key>). Mỗi yêu cầu mang thông tin xác thực riêng và chỉ hoạt động với workspace của thông tin xác thực đó. Máy chủ không giữ trạng thái phiên, vì vậy một yêu cầu không bao giờ kế thừa của người gọi khác. Khóa không được xác minh trước khi sử dụng: API Skycloak là cơ quan có thẩm quyền, vì vậy khóa không hợp lệ sẽ xuất hiện dưới dạng401trong lần gọi công cụ đầu tiên thay vì tại thời điểm kết nối. - Công cụ khớp với vai trò của bạn. Qua OAuth, danh sách công cụ được cắt giảm theo phạm vi mà phiên cho phép, vì vậy thành viên workspace chỉ đọc sẽ không được hiển thị các công cụ ghi có thể trả lời
403. Với khóa API, toàn bộ bề mặt được đăng ký, vì phạm vi của khóa không hiển thị với máy chủ và một cuộc gọi không được phép sẽ xuất hiện dưới dạng403từ API. - Stdio cục bộ. Chạy
skycloak-mcp initvà phê duyệt trong trình duyệt của bạn (luồng ủy quyền thiết bị OAuth 2.0). Nó tạo khóa API có phạm vi workspace, lưu trữ trong keychain hệ điều hành của bạn và tự động phát hiện workspace mặc định của bạn (truyền--workspace <id>để chọn workspace khác).skycloak-mcp logoutxóa khóa đã lưu trữ. - Headless / CI. Đặt biến môi trường
SKYCLOAK_API_KEY(tạo khóa trong bảng điều khiển Skycloak) để bỏ qua trình duyệt hoàn toàn. Nó luôn được ưu tiên hơn keychain. - Các thao tác ghi được kiểm soát bởi thông tin xác thực của bạn, không phải bởi cờ. Máy chủ được lưu trữ tại
https://mcp.skycloak.iochạy có khả năng ghi và những gì bạn thực sự có thể thay đổi bị giới hạn bởi phạm vi khóa và vai trò workspace của bạn: thành viên chỉ đọc không thể thay đổi bất cứ điều gì, bất kể danh sách công cụ nói gì. Thêm?readonly=truevào URL để buộc bề mặt công cụ chỉ đọc cho một phiên. Tệp nhị phân cục bộ ngược lại và không đăng ký công cụ ghi trừ khi được khởi động với--allow-writes. - Thông tin xác thực cụm là tùy chọn.
get_cluster_credentialstrả về thông tin xác thực quản trị Keycloak của một cụm, mà trợ lý giữ khóa sẽ thấy, vì vậyinitkhông yêu cầu phạm vi đó theo mặc định. Sử dụng khóa mang phạm vi đó: tạo một khóa trong bảng điều khiển hoặc qua stdio đăng nhập vớiskycloak-mcp init --allow-credentials. Nếu không có nó, công cụ trả về 403 giải thích cả hai tuyến. - Các công cụ phá hủy yêu cầu xác nhận: ví dụ: xóa một realm cần đối số
confirm=truerõ ràng. - Các yêu cầu bị giới hạn tốc độ theo gói Skycloak của bạn; trên phản hồi
429, máy chủ hiển thịRetry-After.
Công cụ
137 công cụ: 60 chỉ đọc và 77 ghi. Các công cụ chỉ đọc luôn khả dụng. Trên máy chủ được lưu trữ, các công cụ ghi cũng được đăng ký và được kiểm soát bởi phạm vi thông tin xác thực của bạn; tệp nhị phân cục bộ chỉ đăng ký chúng khi được khởi động với --allow-writes.
Tên công cụ mang tiền tố skycloak_ mà bảng dưới đây bỏ qua, vì vậy list_clusters là skycloak_list_clusters trong máy khách của bạn.
| Khu vực | Chỉ đọc | Ghi (--allow-writes) |
|---|---|---|
| Cụm | list_clusters, get_cluster, list_cluster_locations, list_cluster_types, list_cluster_features, list_cluster_versions, list_cluster_upgrades, get_cluster_upgrade_path, get_cluster_credentials, get_cluster_insights, get_cluster_maintenance_window | create_cluster, update_cluster, delete_cluster, cancel_cluster_upgrade, restart_cluster_instances, set_cluster_maintenance_window, delete_cluster_maintenance_window |
| Bảo mật biên | get_cluster_security, list_cluster_captcha_domains | update_cluster_security, add_cluster_captcha_domain, remove_cluster_captcha_domain |
| Realm | list_realms, get_realm | create_realm, update_realm, delete_realm |
| Ứng dụng | list_applications, get_application, list_application_roles, list_application_sessions | create_application, update_application, delete_application, assign_application_role, remove_application_role, rotate_application_secret |
| Nhà cung cấp danh tính | list_identity_providers, get_identity_provider, list_identity_provider_templates, discover_oidc | create_identity_provider (OIDC), update_identity_provider, delete_identity_provider, test_identity_provider |
| Người dùng, vai trò & nhóm | list_realm_users, get_realm_user, list_realm_roles, get_realm_role, list_realm_groups, get_realm_group, list_realm_group_members, list_user_roles, list_user_groups | create_realm_user, update_realm_user, delete_realm_user, create_realm_role, update_realm_role, delete_realm_role, create_realm_group, update_realm_group, delete_realm_group, assign_realm_user_role, remove_realm_user_role, add_realm_user_to_group, remove_realm_user_from_group |
| Tên miền tùy chỉnh | list_domains, get_domain, list_domain_routes, get_domain_route | create_domain, verify_domain, delete_domain, create_domain_route, update_domain_route, delete_domain_route |
| Thương hiệu & chủ đề | list_themes, get_theme, get_theme_assignment, get_client_theme_assignment, get_login_branding, get_email_branding, download_theme_content, get_theme_settings | set_theme_assignment, set_client_theme_assignment, update_theme, update_theme_content, update_theme_settings, delete_theme, upsert_login_branding, delete_login_branding, upsert_email_branding, delete_email_branding |
| Tiện ích mở rộng | list_extensions, list_cluster_extensions | install_extension, upgrade_extension, update_extension, uninstall_extension, delete_extension |
| SMTP | get_smtp | upsert_smtp, delete_smtp, test_smtp |
| Xuất & nhật ký | list_exports, get_export, get_logs, get_security_logs, query_events | create_export, delete_export, export_cluster_events |
| Nhập & xuất realm | get_realm_export, get_realm_import | create_realm_export, create_realm_import, create_realm_import_upload_url |
| SIEM | list_siem_destinations, get_siem_destination | create_siem_destination, update_siem_destination, delete_siem_destination, test_siem_destination |
| Webhook | list_webhook_event_types, list_webhook_subscriptions, get_webhook_subscription | create_webhook_subscription, update_webhook_subscription, delete_webhook_subscription, test_webhook_subscription |
Quy ước: các công cụ phá hủy (delete_*, uninstall_extension, cancel_cluster_upgrade, update_theme_content, update_theme_settings, restart_cluster_instances) yêu cầu confirm=true. update_theme_settings bật hoặc tắt exact_theme_names cho workspace; khóa API của người gọi phải được tạo cho chủ sở hữu hoặc quản trị viên workspace, nếu không sẽ nhận được 403 ngay cả với themes:write. Bật nó sẽ di chuyển các chủ đề hiện có đến tên phục vụ chính xác của chúng trong nền; một chủ đề có nội dung được thay thế dưới tên chính xác của nó báo cáo restart_required: true từ get_theme/list_themes/update_theme_content cho đến khi restart_cluster_instances khởi động lại các phiên bản Keycloak của cụm đó. Việc khởi động lại có thể bị hoãn đến cửa sổ bảo trì của cụm thay vì áp dụng ngay lập tức, được báo cáo là deferred: true và, khi biết, next_window. create_cluster là không đồng bộ: thăm dò get_cluster cho đến khi cụm ở trạng thái available. create_domain trả về các bản ghi DNS mà khách hàng phải tạo; verify_domain kích hoạt kiểm tra DNS. set_theme_assignment kích hoạt chủ đề tùy chỉnh theo từng loại chủ đề Keycloak (chuỗi trống đặt lại về mặc định tích hợp). update_theme_content thay thế kho lưu trữ của chủ đề tại chỗ (ZIP base64 hoặc JAR Keycloakify trong content_base64), giữ ID, tên và các chỉ định realm và ứng dụng của chủ đề, vì vậy chỉnh sửa chủ đề không còn nghĩa là xóa và tải lại; nó cần confirm=true vì kho lưu trữ mà nó ghi đè không thể khôi phục và update_theme vẫn chỉ thay đổi tên, mô tả và phiên bản. Xem docs/theme-content-update.md để biết cách thực hiện cuộc gọi đó. update_cluster_security không chạm vào cài đặt CAPTCHA. Nhập/xuất realm di chuyển cấu hình của một realm và tách biệt với create_export, nơi kết xuất toàn bộ cơ sở dữ liệu của cụm: cả hai đều không đồng bộ và kho lưu trữ realm luôn được mã hóa, vì vậy mật khẩu dùng để xuất nó là cần thiết để nhập lại. Một realm có thể được nhập trực tiếp từ bản xuất hiện có (source_export_id) hoặc từ kho lưu trữ đã tải lên (create_realm_import_upload_url, PUT, sau đó upload_s3_key); nhập tạo một realm và từ chối xung đột tên thay vì ghi đè, và cần confirm=true vì nó mang theo người dùng và thông tin xác thực.
Lời nhắc
Tám lời nhắc cung cấp cho bạn điểm khởi đầu vào bề mặt công cụ đó. Máy khách hiển thị chúng dưới dạng lệnh gạch chéo hoặc hành động được đề xuất; mỗi lời nhắc nhận các đối số (realm, cụm, cửa sổ thời gian) và hướng dẫn mô hình qua các công cụ phù hợp theo đúng thứ tự.
| Lời nhắc | Chức năng |
|---|---|
audit_self_registration | Tìm mọi realm vẫn cho phép tự đăng ký, trên một cụm hoặc tất cả |
review_upgrades | Phát hiện các cụm chậm phiên bản Keycloak và vạch ra lộ trình nâng cấp |
triage_failed_logins | Kéo các lần đăng nhập thất bại gần đây cho một realm và nhóm chúng theo IP nguồn |
review_identity_providers | Liệt kê các kết nối SSO của một realm và kiểm tra xem một kết nối cụ thể có được bật không |
review_admin_changes | Hiển thị ai đã thay đổi gì trong một realm gần đây, tập trung vào cài đặt đăng nhập và bảo mật |
provision_environment | Tạo một cụm, thêm một realm và kết nối nhà cung cấp danh tính, xác nhận từng bước |
set_up_custom_domain | Thêm tên miền tùy chỉnh, trả lại các bản ghi DNS chính xác, xác minh và định tuyến đến một realm |
rotate_client_secret | Tạo lại bí mật máy khách của ứng dụng với phạm vi ảnh hưởng được nêu rõ trước tiên |
Các lời nhắc được kiểm soát theo cùng cách với các công cụ mà chúng đặt tên: ba lời nhắc thay đổi chỉ được cung cấp cho các phiên có thể gọi các công cụ ghi mà chúng tham chiếu và hướng dẫn của chúng yêu cầu mô hình xác nhận với bạn trước khi thay đổi bất cứ điều gì. Yêu cầu confirm=true trên các công cụ phá hủy vẫn được áp dụng bên trên.
Kỹ năng
Trong khi lời nhắc là điểm khởi đầu, kỹ năng là một sổ tay vận hành đầy đủ mà mô hình tải theo yêu cầu. Máy chủ cung cấp bốn kỹ năng, được phục vụ qua bản nháp Tiện ích mở rộng Kỹ năng SEP-2640: nó khai báo io.modelcontextprotocol/skills trong các khả năng của mình, trả lời skills/list và skills/get, và phục vụ mỗi SKILL.md như một tài nguyên thông thường tại skill://<name>/SKILL.md với hàm băm sha256 trong mục danh sách của nó. Thư mục plugin của OpenAI nhập các kỹ năng theo đúng hình dạng này.
| Kỹ năng | Nội dung mã hóa |
|---|---|
auth-incident-triage | Phân loại "người dùng không đăng nhập được": tách biệt sự cố hạ tầng khỏi tấn công và thay đổi cấu hình, sử dụng sự kiện, nhật ký WAF và tình trạng cụm. Chỉ đọc |
enterprise-sso-rollout | Kết nối IdP doanh nghiệp vào một realm từ đầu đến cuối: xác thực issuer, đăng ký ứng dụng upstream, cấu hình broker, kiểm tra kết nối và xác minh với sự kiện đăng nhập thực tế |
keycloak-migration-doctor | Kiểm tra trước một thao tác xuất, nhập hoặc di chuyển Keycloak dựa trên các rào cản mà bộ phận hỗ trợ thực sự gặp phải (script policies, đường dẫn /auth cũ, kỳ vọng xuất một phần) và chẩn đoán một tác vụ thất bại bằng cách đọc error_message thực tế thay vì thông báo chung trên bảng điều khiển |
keycloak-upgrade-readiness | Đánh giá độ lệch phiên bản, xác định những gì phiên bản Keycloak mới làm hỏng (tiện ích mở rộng, giao diện) và sắp xếp triển khai qua các môi trường với bản xuất làm kế hoạch khôi phục |
Các kỹ năng tuân theo cùng quy tắc kiểm soát như các công cụ mà chúng đặt tên: ba quy trình làm việc xây dựng quanh công cụ ghi bị giữ lại khỏi phiên chỉ đọc và phiên có phạm vi chỉ được cung cấp kỹ năng có công cụ mà phiên đó thực sự sở hữu. Các nguồn nằm trong internal/tools/skills/, một thư mục cho mỗi kỹ năng, theo định dạng Agent Skills tiêu chuẩn, vì vậy chúng cũng hoạt động khi sao chép trực tiếp vào thư mục kỹ năng cục bộ.
Kết nối
Đối với HTTP được lưu trữ, cách đơn giản nhất là OAuth, không cần thông tin xác thực nào:
claude mcp add --transport http skycloak https://mcp.skycloak.io
Lần gọi đầu tiên mở trình duyệt của bạn, bạn phê duyệt trên trang đăng nhập Skycloak và các công cụ xuất hiện. Nếu bạn thuộc nhiều hơn một không gian làm việc, hãy nêu tên không gian bạn muốn:
claude mcp add --transport http skycloak "https://mcp.skycloak.io?workspace=<workspace-id>"
Nếu không, hãy tạo khóa API trong bảng điều khiển Skycloak và cấu hình máy khách MCP của bạn để gửi khóa đó dưới dạng mã thông báo bearer:
claude mcp add --transport http skycloak https://mcp.skycloak.io --header "Authorization: Bearer sk_sc_XXX"
Thao tác này thêm nội dung sau vào .claude.json:
{
"mcpServers": {
"skycloak": {
"type": "http",
"url": "https://mcp.skycloak.io",
"headers": {
"Authorization": "Bearer sk_sc_XXX"
}
}
}
}
Đối với stdio cục bộ, hãy đăng nhập một lần, sau đó trỏ máy khách của bạn vào skycloak-mcp run:
skycloak-mcp init # one-time browser sign-in; stores a key in your keychain
Claude Desktop / Cursor (cục bộ, stdio):
{
"mcpServers": {
"skycloak": {
"command": "skycloak-mcp",
"args": ["run", "--transport", "stdio"]
}
}
}
Claude Code:
claude mcp add skycloak -- skycloak-mcp run --transport stdio
Đối với headless / CI (không có trình duyệt), bỏ qua init và truyền khóa thay vào đó: thêm "env": { "SKYCLOAK_API_KEY": "sk_sc_..." } vào cấu hình hoặc claude mcp add skycloak --env SKYCLOAK_API_KEY=sk_sc_... -- skycloak-mcp run --transport stdio.
Chỉ thêm --allow-writes khi bạn định thực hiện thay đổi (đăng nhập bằng skycloak-mcp init --allow-writes hoặc sử dụng khóa có phạm vi ghi).
Thêm ?readonly=true vào URL HTTP được lưu trữ để chỉ hiển thị các công cụ chỉ đọc cho phiên HTTP đó hoặc ?readonly=false để yêu cầu bề mặt công cụ có khả năng ghi. Tham số truy vấn mặc định là false, nhưng các công cụ ghi chỉ được đăng ký khi máy chủ được khởi động với --allow-writes.
Thêm ?workspace=<uuid> để chọn không gian làm việc mà phiên OAuth hoạt động. Chỉ cần thiết khi bạn thuộc nhiều hơn một không gian; với một không gian làm việc duy nhất, máy chủ tự chọn cho bạn và nếu bạn thuộc nhiều không gian mà không nêu tên không gian nào, kết nối sẽ thất bại với thông báo liệt kê chúng.
Chạy giao thức truyền tải HTTP
skycloak-mcp run --transport http --http-addr :8080
Nó không cần thông tin xác thực riêng: người gọi cung cấp thông tin xác thực của họ cho mỗi yêu cầu, vì vậy không có gì được tiêm vào lúc triển khai. GET /healthz và GET /readyz không được xác thực và chỉ báo cáo rằng tiến trình đang chạy; chúng cố ý không thăm dò API Skycloak, vì vậy một sự cố upstream không thể làm hỏng lần thăm dò của mọi bản sao cùng lúc. Máy chủ không giữ trạng thái phiên, vì vậy các bản sao không cần gắn kết phiên và có thể được mở rộng hoặc xoay vòng tự do. SIGTERM dừng kết nối mới và xử lý hết các lệnh gọi đang chạy.
Đường dẫn OAuth luôn bật khi SKYCLOAK_ISSUER và SKYCLOAK_DASHBOARD_URL được đặt, điều này mặc định là có. GET /.well-known/oauth-protected-resource sau đó được phục vụ không xác thực, đặt tên realm làm máy chủ ủy quyền. Giá trị resource của nó được lấy từ SKYCLOAK_PUBLIC_URL khi được đặt và nếu không thì từ chính Host và scheme của yêu cầu, vì vậy một triển khai máy chủ đơn sau ingress không cần cấu hình thêm. Scheme đến từ X-Forwarded-Proto khi có mặt và nếu không thì mặc định là https cho mọi thứ trừ máy chủ loopback, vì TLS kết thúc ở upstream và việc xuất bản định danh http:// sẽ không khớp với URL mà máy khách kết nối. Đặt SKYCLOAK_PUBLIC_URL nếu ingress của bạn viết lại Host. Tài liệu cũng liệt kê openid profile email làm scopes_supported của nó và thử thách WWW-Authenticate lặp lại chúng dưới dạng tham số scope, vì vậy máy khách đọc một trong hai sẽ yêu cầu realm cung cấp chúng: openid là bắt buộc, vì trao đổi mã thông báo khiến bảng điều khiển gọi điểm cuối userinfo của Keycloak và Keycloak từ chối mã thông báo được cấp mà không có nó. Mã thông báo đến mà không có nó sẽ bị từ chối khi xác minh với 401 và thử thách, thay vì được chuyển đến một trao đổi không thể thành công, vì vậy máy khách vẫn giữ khoản cấp từ trước sẽ ngừng thử lại và đăng nhập lại. Làm trống một trong hai biến issuer hoặc dashboard sẽ tắt hoàn toàn OAuth và máy chủ quay lại thách thức khóa API và không có gì khác.
OPENAI_APPS_CHALLENGE_TOKEN phục vụ mã xác minh thư mục plugin của OpenAI tại /.well-known/openai-apps-challenge, dưới dạng văn bản thuần túy và không có gì khác. Nếu không đặt, tuyến đường không được đăng ký và đường dẫn trả về 404.
Nhật ký khởi động ghi một dòng với cấu hình đã giải quyết (oauth=, issuer=, dashboard=, public_url=, endpoint=, allow_writes=), vì vậy có thể phát hiện triển khai sai cấu hình mà không cần triển khai lại. Mọi yêu cầu bị từ chối trên đường dẫn OAuth ghi một dòng nêu tên giai đoạn thất bại (verify, exchange hoặc scopes), trạng thái người gọi nhận được và lỗi cơ bản. Lỗi xác minh thêm kiểm tra đã từ chối mã thông báo (expired, wrong_issuer, bad_signature, unknown_key_id, wrong_token_type, no_openid_scope, v.v.); lỗi trao đổi thêm trạng thái của bảng điều khiển và máy chủ được gọi. Người gọi xuất hiện dưới dạng chủ thể của mã thông báo sau khi được xác minh và không bao giờ dưới dạng thông tin xác thực: mã thông báo truy cập, tiêu đề Authorization và khóa API được tạo không bao giờ được ghi nhật ký.
Cấu hình
| Biến môi trường | Mặc định |
|---|---|
SKYCLOAK_API_KEY | không có (tùy chọn cho stdio; máy khách HTTP cung cấp tiêu đề API-Key thay vào đó) |
SKYCLOAK_ENDPOINT | https://api.skycloak.io |
SKYCLOAK_API_VERSION | phiên bản API hiện tại |
SKYCLOAK_ISSUER | https://login.app.skycloak.io/realms/skycloak (đăng nhập CLI và máy chủ ủy quyền mà giao thức truyền tải HTTP xác minh mã thông báo) |
SKYCLOAK_CLIENT_ID | skycloak-mcp (chỉ luồng thiết bị CLI) |
SKYCLOAK_DASHBOARD_URL | https://app.skycloak.io (tạo khóa CLI và khóa phiên HTTP) |
SKYCLOAK_PUBLIC_URL | không có (suy ra từ mỗi yêu cầu; đặt khi ingress viết lại Host) |
OPENAI_APPS_CHALLENGE_TOKEN | Phục vụ mã xác minh thư mục plugin của OpenAI tại /.well-known/openai-apps-challenge. Nếu không đặt, đường dẫn đó trả về 404. |
Lệnh: init (đăng nhập trình duyệt), run (phục vụ), logout (xóa khóa đã lưu). init chấp nhận --workspace <id>, --allow-writes, --allow-credentials và --ttl-days (mặc định 90).
| Cờ | Mặc định | Mô tả |
|---|---|---|
--transport | stdio | stdio hoặc http |
--http-addr | :8080 | địa chỉ lắng nghe cho giao thức truyền tải HTTP |
--allow-writes | false | bật công cụ thay đổi cho stdio và cho phép phiên HTTP có readonly=false đăng ký công cụ ghi |
Phát triển
make build # build the server binary
make test # unit tests
make run # run on stdio for local testing
make inspector # MCP Inspector against the local binary
make lint # golangci-lint
make generate # regenerate the API client from the OpenAPI spec
Máy khách API trong internal/apiclient được tạo từ đặc tả OpenAPI Skycloak bằng oapi-codegen.
Giữ đồng bộ với API
Máy khách trong internal/apiclient được tạo từ internal/apiclient/openapi.yaml bằng oapi-codegen; chạy make generate để làm mới. CI thất bại nếu mã đã tạo được cam kết lệch khỏi đặc tả. Yêu cầu được thử lại trên 429/5xx với backoff nhận biết Retry-After.
Phân phối
Được phát hành dưới dạng tệp nhị phân GitHub và hình ảnh container ghcr.io/sky-cloak/skycloak-mcp trên mỗi thẻ và được xuất bản lên MCP Registry dưới dạng io.skycloak/skycloak-mcp. Hầu hết mọi người không cần cả hai: máy chủ được lưu trữ không cần cài đặt.
Bảo mật
Vui lòng báo cáo lỗ hổng một cách riêng tư. Xem SECURITY.md.
Người đóng góp
Được xây dựng tại Skycloak bởi Guilliano Molaire, Neville Omangi và Aphilas. Lịch sử kho lưu trữ đã được nén khi mở, vì vậy nhật ký cam kết không phản ánh ai đã viết gì.
Giấy phép
Apache-2.0. Mô tả OpenAPI trong internal/apiclient/openapi.yaml được tạo từ API nền tảng Skycloak và thuộc bản quyền Skycloak; nó được đưa vào đây để máy khách có thể được tạo và xác minh. Xem NOTICE.