feat: add Claude Code plugin with pre-registered Authentik OAuth client #8

Merged
jknapp merged 1 commits from feat/claude-code-plugin into main 2026-07-27 03:21:18 +00:00
Owner

Adds a distributable Claude Code plugin so users can install shared-memory instead of running the claude mcp add --client-id ... one-liner by hand.

.mcp.json now accepts an oauth block with a pre-registered clientId, so this no longer depends on Authentik shipping RFC 7591 DCR (goauthentik/authentik#8751, still open, milestoned 2026.8.0).

OIDC_CLIENT_ID_MCP is a Public PKCE client — committing it is safe, no secret involved.

Verified

  • Both manifests pass claude plugin validate
  • Local-path marketplace install on Claude Code 2.1.220 preserves the oauth block into the installed cache
  • Remote clone from this private Gitea repo authenticates fine

Not yet verified

  • Whether a git-sourced marketplace install preserves the oauth block (anthropics/claude-ai-mcp#359 reports GitHub-sync stripping it). Cannot be tested until marketplace.json is on the default branch — i.e. until this PR merges.
  • The interactive OAuth handshake itself (needs a browser).

🤖 Generated with Claude Code

Adds a distributable Claude Code plugin so users can install shared-memory instead of running the `claude mcp add --client-id ...` one-liner by hand. `.mcp.json` now accepts an `oauth` block with a pre-registered `clientId`, so this no longer depends on Authentik shipping RFC 7591 DCR (goauthentik/authentik#8751, still open, milestoned 2026.8.0). `OIDC_CLIENT_ID_MCP` is a **Public** PKCE client — committing it is safe, no secret involved. ### Verified - Both manifests pass `claude plugin validate` - Local-path marketplace install on Claude Code 2.1.220 preserves the `oauth` block into the installed cache - Remote clone from this private Gitea repo authenticates fine ### Not yet verified - Whether a **git-sourced** marketplace install preserves the `oauth` block (anthropics/claude-ai-mcp#359 reports GitHub-sync stripping it). Cannot be tested until `marketplace.json` is on the default branch — i.e. until this PR merges. - The interactive OAuth handshake itself (needs a browser). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
jknapp added 1 commit 2026-07-27 03:20:11 +00:00
Claude Code's .mcp.json now accepts an `oauth` block with a pre-registered
clientId, so the plugin no longer depends on RFC 7591 Dynamic Client
Registration (still unshipped in Authentik — goauthentik/authentik#8751,
milestoned for 2026.8.0). This lets users install shared-memory as a plugin
instead of running the `claude mcp add --client-id ...` one-liner by hand.

OIDC_CLIENT_ID_MCP is a Public PKCE client, so committing it is safe; no
secret is involved. callbackPort 33418 matches the documented one-liner and
is covered by the loopback redirect regex on the Authentik provider.

Verified: both manifests pass `claude plugin validate`, and a local-path
marketplace install on Claude Code 2.1.220 preserves the oauth block through
to the installed cache. Remote (git-sourced) marketplace install is still
untested — see anthropics/claude-ai-mcp#359.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
jknapp merged commit 0cb749806c into main 2026-07-27 03:21:18 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cybercove-labs/shared-memory#8