Skip to content

feat: add Antigravity CLI plugin.json and mcp_config.json#6

Open
patrickcping wants to merge 1 commit into
mainfrom
feat/antigravity-plugin-config
Open

feat: add Antigravity CLI plugin.json and mcp_config.json#6
patrickcping wants to merge 1 commit into
mainfrom
feat/antigravity-plugin-config

Conversation

@patrickcping

@patrickcping patrickcping commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

Adds the required plugin marker and optional MCP server config for Antigravity CLI compatibility under plugins/ping-identity/.

Changes

  • plugins/ping-identity/plugin.json — required package marker for Antigravity CLI
  • plugins/ping-identity/mcp_config.json — optional MCP server config declaring aic and davinci servers via local npx processes

Validation

Installed directly from this PR branch and validated via agy:

$ agy plugin install https://github.com/pingidentity/agent-plugins/tree/feat/antigravity-plugin-config/plugins/ping-identity

Cloning plugin from https://github.com/pingidentity/agent-plugins.git...
  [ok]  ping-identity
        ✔ skills     : 6 processed
        - agents     : skipped (not found)
        - commands   : skipped (not found)
        ✔ mcpServers : 2 processed
        - hooks      : skipped (not found)

6 skills and 2 MCP servers loaded successfully.

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>
@patrickcping

Copy link
Copy Markdown
Collaborator Author

It looks like this would lead to the plugin install URL being https://github.com/pingidentity/agent-plugins/tree/main/plugins/ping-identity (agy plugin install https://github.com/pingidentity/agent-plugins/tree/main/plugins/ping-identity) because there doesn't appear to be any custom marketplace support yet

@patrickcping patrickcping marked this pull request as ready for review June 12, 2026 13:32

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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_config substitution → add the userConfig block to this plugin.json (copy the 5 fields from .claude-plugin/plugin.json).
  • If it doesn't → switch to ${env:...} like cursor-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}"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants