privilege-cloud-mcp

Diagnose and configure the PingOne Privilege Cloud MCP gateway integration.

1|Updated Jun 25, 2026
One-click install
npx skills add https://github.com/curtismu7/AI-DEMO2 --skill privilege-cloud-mcp-curtismu7
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: privilege-cloud-mcp
Source: https://github.com/curtismu7/AI-DEMO2/tree/main/.claude/skills/privilege-cloud-mcp
Command: npx skills add https://github.com/curtismu7/AI-DEMO2 --skill privilege-cloud-mcp-curtismu7

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Integrating an application with the PingOne Privilege Cloud MCP gateway involves undocumented behavior, binary-specific port models, and misleading authentication errors that can cost weeks of trial and error. This Skill consolidates verified findings about the Privilege Gateway (mcpgw), the BFF MCP client relay, and the console configuration so you can troubleshoot and extend the integration without repeating dead-end investigations. ## Core Features & Use Cases - Gateway troubleshooting: Distinguish current-binary (mcpgw) facts from historical cyonproxy findings, including correct ports (8623 vs 8620), the ValidateInfraJwt kid-mismatch rejection, and log-delta diagnosis via /var/log/procyon/cyonproxy.log. - Deployment guidance: Covers the agentless nginx front door with Host rewriting, the agent-based cloud frontend, K8s ingress configuration, and the fast-path setup with smoke-test verification via scripts/privilege-smoke.sh. - Console configuration reference: Field-by-field recipes for enrolling gateway nodes, registering MCP applications, setting upstream auth modes, and reading the real Frontend Name from the console API. - Use Case: Your tokenless POST to /mcp returns a bare 401 with no WWW-Authenticate header. Use this Skill to determine whether the gateway build, the Host routing, or the PingOne token wall is the actual cause before changing any configuration. ## Quick Start Ask the assistant to diagnose why your Privilege MCP gateway returns 401 JWT signature validation failed when sending a PingOne token.

Frequently Asked Questions about privilege-cloud-mcp

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does the Privilege MCP gateway return JWT signature validation failed?▼

The gateway's ValidateInfraJwt check compares the token's kid against infra-root-jwt, a key fetched from Privilege's internal Notary PKI. No PingOne-issued token can match it, and no signature is actually checked, so chasing JWKS or signature problems is a dead end.

How do I verify the Privilege MCP gateway is responding correctly?▼

Send a tokenless POST to http://localhost:8623/mcp with an initialize JSON-RPC body. A working mcpgw gateway returns 401 with a WWW-Authenticate header containing authorization_uri; a bare 401 proves only the bearer check ran.

Which port does the Privilege MCP gateway use for MCP traffic?▼

On the current mcpgw binary the MCP+OAuth frontend is port 8623. The older cyonproxy binary used 8620, so do not carry that fact forward; probe the deployment in front of you to confirm.

Does an expired enrollment token break the Privilege gateway?▼

No, for an already-enrolled host the durable credential is the mTLS certificate pair in /procyon/ssl, not the token. Only a deleted volume, new cluster, or new host requires a fresh enrollment token.

Can PingOne-issued tokens authenticate against the Privilege MCP gateway?▼

Not currently confirmed. The mcpgw binary emits the OAuth discovery challenge, but ValidateInfraJwt is still present and no live test has proven a PingOne token passes the kid comparison. The untested lever is tenant-level IdP registration via cyctl object idprovider create.

How do I route multiple MCP applications through the agentless nginx front door?▼

Add one map line per application in nginx.conf mapping the client host to the registered Frontend Name, plus one /etc/hosts entry per host. The gateway matches the full registered Frontend Name; anything else yields Domain not found and an empty 200.