feat: add Antigravity CLI plugin.json and mcp_config.json#6
feat: add Antigravity CLI plugin.json and mcp_config.json#6patrickcping wants to merge 1 commit into
Conversation
Adds the required plugin marker and optional MCP server config for Antigravity CLI compatibility under plugins/ping-identity/. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
It looks like this would lead to the plugin install URL being |
george-bafaloukas-forgerock
left a comment
There was a problem hiding this comment.
Thanks for getting the Antigravity config in, Patrick — nice and tight, and appreciate the agy validation output in the description. One thing I'd love you to confirm before this goes in:
Substitution model (the main question). mcp_config.json uses Claude Code's ${user_config.*} placeholder syntax, but the new plugin.json doesn't declare a userConfig block (the Claude variant resolves those only because .claude-plugin/plugin.json carries the full userConfig schema). The Cursor variant sidesteps this entirely by reading ${env:...}. So as written I don't think the MCP env injection will actually resolve under Antigravity — the placeholders would come through empty. Could you confirm how agy does config substitution? Two ways to land it:
- If Antigravity supports
user_configsubstitution → add theuserConfigblock to thisplugin.json(copy the 5 fields from.claude-plugin/plugin.json). - If it doesn't → switch to
${env:...}likecursor-mcp.json.
The agy install log shows the servers loading, but that wouldn't catch empty env values at runtime, so worth a quick check against a real DaVinci tenant. Left a couple of minor inline notes too — nothing blocking beyond the substitution question. 🙏
| "command": "npx", | ||
| "args": ["-y", "@ping-identity/davinci-mcp-server", "start"], | ||
| "env": { | ||
| "DAVINCI_MCP_ENVIRONMENT_ID": "${user_config.davinci_environment_id}" |
There was a problem hiding this comment.
Minor: the davinci server here only passes DAVINCI_MCP_ENVIRONMENT_ID, whereas both claude-mcp.json and cursor-mcp.json also pass AUTHORIZATION_CODE_CLIENT_ID, ROOT_DOMAIN, and CUSTOM_DOMAIN. Without the client ID + domain, the DaVinci server won't authenticate / will default the region for any non-standard tenant. Looks like an accidental trim (the aic block matches the others exactly) — suggest copying the full 4-var env from claude-mcp.json:
"env": {
"DAVINCI_MCP_ENVIRONMENT_ID": "${user_config.davinci_environment_id}",
"AUTHORIZATION_CODE_CLIENT_ID": "${user_config.davinci_client_id}",
"ROOT_DOMAIN": "${user_config.davinci_root_domain}",
"CUSTOM_DOMAIN": "${user_config.davinci_custom_domain}"
}(env-var names if you go the ${env:...} route instead.)
| @@ -0,0 +1,11 @@ | |||
| { | |||
| "name": "ping-identity", | |||
There was a problem hiding this comment.
Minor/consistency: this declares "name": "ping-identity", while .claude-plugin and .cursor-plugin both use "ping-identity-agent-plugins". If Antigravity keys off the directory name this is fine — but if the plugin identifier matters for how it's referenced/configured, worth aligning with the other two variants for consistency.
Adds the required plugin marker and optional MCP server config for Antigravity CLI compatibility under plugins/ping-identity/.
Changes
Validation
Installed directly from this PR branch and validated via agy: