keycloak-skills

mcp
Guvenlik Denetimi
Uyari
System Uyari
  • Scan error รขโ‚ฌโ€ Audit could not complete: fetch failed

Bu listing icin henuz AI raporu yok.

SUMMARY

Agent Skills for Keycloak and Phase Two: Claude Code, Cursor and Codex plugins for passwordless login, SSO, organizations and cluster setup

README.md

keycloak-skills

docs

๐Ÿ“š Documentation โ€ข ๐Ÿš€ Hosted Keycloak โ€ข ๐Ÿค– Keycloak Skills โ€ข ๐Ÿ’ฌ Support

[!TIP]
Run this in our cloud, no setup needed. Phase Two hosts Keycloak with all of our extensions built in. Try it free with your own cluster โ†’

Using a coding agent? Add the Phase Two Keycloak skills (launch post) to Claude Code, Cursor or Codex so your agent can set up passwordless login, SSO, organizations and clusters for you:

# Install the skills (connects to our hosted MCP server)
claude plugin marketplace add p2-inc/keycloak-skills
claude plugin install phasetwo@keycloak-skills
# Or connect to the MCP server directly
claude mcp add --transport http keycloak https://mcp.phasetwo.io/mcp

An Agent Skills marketplace for Phase Two โ€” Claude Code, Cursor and Codex skills for configuring Keycloak/Phase Two extension behaviors, for both vanilla/self-hosted Keycloak and Phase Two hosted Keycloak.

Each plugin lives under plugins/<name>/, with one shared set of Agent Skills and a manifest per platform โ€” Claude Code, Cursor and Codex.

Install

One plugin, three clients. Pick your guide:

Client Guide Reads
Claude Code docs/install-claude-code.md .claude-plugin/marketplace.json
Cursor docs/install-cursor.md .cursor-plugin/marketplace.json
Codex / ChatGPT docs/install-codex.md .agents/plugins/marketplace.json

The repo root is the marketplace. keycloak-skills is the marketplace name declared
in those files (it matches the repo name); phasetwo is the plugin inside it. That
pairing is what ids like phasetwo@keycloak-skills are built from.

Plugins

  • phasetwo โ€” a unified keycloak skill that routes Keycloak/Phase Two requests to the right guidance: passwordless login (magic link, email OTP, passkey, or passkey-or-magic-link), email OTP as a second factor, organization-membership login restriction, corporate SSO by email domain, social login and enterprise IdP federation, IdP-initiated SSO, and Phase Two cluster/deployment provisioning. New capabilities get added as reference docs under the same skill, once genuinely written and verified, rather than as new skills.

Dependency

The keycloak skill relies on the Keycloak MCP server to check deployment targets and verify changes against a live deployment. The plugin declares it in plugins/phasetwo/.mcp.json, so installing the plugin connects it โ€” there is no command to run:

{ "mcpServers": { "keycloak": {
    "type": "http",
    "url": "https://mcp.phasetwo.io/mcp",
    "oauth": { "clientId": "claude-client", "callbackPort": 8787, "scopes": "openid" }
} } }

That file has to sit at the plugin root, beside .claude-plugin/. An mcpServers key inside plugin.json passes claude plugin validate --strict but is silently ignored at runtime โ€” claude plugin details phasetwo reports MCP servers (0). Cursor is the exception: its manifest schema does accept mcpServers, which is why the Cursor build declares its own entry with a pinned OAuth client (see docs/install-cursor.md). Endpoints are unversioned and images are tagged by commit, so this URL picks up new server releases with no change here.

It is a remote server behind OAuth. Each client authenticates against its own
pre-registered OAuth client
rather than registering one dynamically, so the only
prompt you ever see is the sign-in:

Client Declared in Key OAuth client
Claude Code .mcp.json oauth.clientId claude-client
Cursor .cursor-plugin/plugin.json auth.CLIENT_ID cursor-client
Codex .codex-plugin/plugin.json oauth.client_id codex-client

One per platform, so each carries only the redirect URIs that platform actually uses
and can be revoked on its own โ€” the per-client walkthroughs are in the
install guides. Check the connection with /mcp in a session.

If you are using the skill without the plugin โ€” a copy under ~/.claude/skills/, say โ€” add it yourself, since nothing declares it for you:

claude mcp add --transport http keycloak https://mcp.phasetwo.io/mcp

Linting

This repo uses skillsaw to enforce Agent Skills structure and marketplace conventions. Config is in .skillsaw.yaml; repo-specific rules are in .skillsaw/rules.py.

License

This repository is dual-licensed by content type, so the skills carry an
attribution-and-share-alike condition while the code stays permissive:

Content License Text
Skill content and documentation โ€” plugins/**/skills/**/*.md, docs/**/*.md, benchmarks/**/*.md, README.md CC BY-SA 4.0 LICENSE
Code, scripts, and configuration โ€” scripts/, bundled assets/*.json, benchmark harnesses, CI, lint rules Apache License 2.0 LICENSE-CODE

Copyright 2026 Phase Two, Inc.

Every file whose format allows a comment carries an SPDX-License-Identifier
header, so a single SKILL.md or reference doc copied into someone's
.claude/skills/ still declares its own terms โ€” the licensing does not live only
at the repo root. Files that cannot carry a comment (JSON, .jar, fixture
.txt) follow the table above and the mapping in NOTICE.

Bundled authentication-flow JSON under skills/*/assets/ is Apache-2.0 rather
than CC BY-SA: it is configuration you import into your own realm, and ShareAlike
should not reach your realm's config.

Attribution

If you redistribute, incorporate, or adapt the CC BY-SA 4.0 material, include
attribution substantially similar to:

Contains material from "keycloak-skills" by Phase Two, Inc.
https://github.com/p2-inc/keycloak-skills
Licensed under CC BY-SA 4.0.

Adaptations must indicate that changes were made, and must themselves be
distributed under CC BY-SA 4.0 or a compatible license.

Contributing

Contributors retain copyright in their contributions and license them to this
project under the license that applies to the file being changed โ€” CC BY-SA 4.0
for skill content and documentation, Apache-2.0 for code. There is no CLA.

Yorumlar (0)

Sonuc bulunamadi