Skip to content

Commit 89db210

Browse files
committed
alignment for jfrog mcp to be like claude
1 parent 2444742 commit 89db210

2 files changed

Lines changed: 41 additions & 40 deletions

File tree

plugins/jfrog/README.md

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,25 +8,27 @@ JFrog Platform integration for Cursor — artifact management, security scanning
88
2. An admin must **enable the JFrog MCP Server** on the platform (Cloud/SaaS only):
99
- Navigate to **Administration > General > Settings** in the JFrog UI.
1010
- Toggle the **MCP Server** option ON and save.
11-
3. Set the `JFROG_PLATFORM_URL` environment variable to your JFrog instance (e.g., `mycompany.jfrog.io`).
12-
4. **JFrog CLI** (`jf`) is used by the skills for authentication and REST/GraphQL API operations. If missing, the agent will attempt to install it. You can also install manually via `brew install jfrog-cli` or the [official install script](https://jfrog.com/help/r/jfrog-cli/install-the-jfrog-cli).
11+
3. Set the `JFROG_URL` (full URL, e.g. `https://mycompany.jfrog.io`) and `JFROG_ACCESS_TOKEN` environment variables — the built-in `jfrog` MCP needs both at launch.
12+
4. **Node.js** (≥ 14) — with `npx` on your `PATH` (used to launch `@jfrog/agent-guard`).
13+
5. **JFrog CLI** (`jf`) is used by the skills for authentication and REST/GraphQL API operations. If missing, the agent will attempt to install it. You can also install manually via `brew install jfrog-cli` or the [official install script](https://jfrog.com/help/r/jfrog-cli/install-the-jfrog-cli).
1314

14-
CLI authentication options: run `jf login` for browser-based setup, or set the `JFROG_ACCESS_TOKEN` environment variable. MCP-based workflows authenticate via **OAuth** and require no additional configuration.
15+
CLI authentication options: run `jf login` for browser-based setup, or set the same `JFROG_ACCESS_TOKEN` from step 3.
1516

1617
## Included
1718

1819
| Component | Path | Description |
1920
|---|---|---|
20-
| **MCP** | `mcp.json` | Built-in JFrog MCP at `https://${JFROG_PLATFORM_URL}/mcp` (server name: `jfrog`). Always available, not subject to AI Catalog policy — see [JFrog MCP](#jfrog-mcp). |
21+
| **MCP** | `mcp.json` | Built-in JFrog MCP routed through `@jfrog/agent-guard` to `${JFROG_URL}/mcp` (server name: `jfrog`). Always available, not subject to AI Catalog policy — see [JFrog MCP](#jfrog-mcp). |
2122
| **Hook** | `hooks/hooks.json` | Agent Guard — MCP server governance via JFrog AI Catalog |
2223

2324
### JFrog MCP
2425

25-
The plugin ships a built-in `jfrog` MCP registered in `mcp.json`, pointing
26-
at `https://${JFROG_PLATFORM_URL}/mcp`. Cursor launches it automatically
27-
when the plugin is enabled. If your Cursor admin enforces a URL allowlist,
28-
permit `https://${JFROG_PLATFORM_URL}/mcp` (or a wildcard like
29-
`https://*.jfrog.io/mcp`).
26+
The plugin ships a built-in `jfrog` MCP registered in `mcp.json`. Cursor
27+
launches it automatically as `npx @jfrog/agent-guard` with
28+
`_JF_ARGS=mcp=jfrog-mcp`. agent-guard recognizes that shape, skips the AI
29+
Catalog, and connects directly to `${JFROG_URL}/mcp` with
30+
`Authorization: Bearer ${JFROG_ACCESS_TOKEN}` (both env vars are listed
31+
under [Prerequisites](#prerequisites)).
3032

3133
### Skills
3234

plugins/jfrog/templates/jfrog-mcp-management.md

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,28 @@
11
# Built-in `jfrog` MCP
22

3-
The plugin ships a built-in `jfrog` MCP at
4-
`https://${JFROG_PLATFORM_URL}/mcp` in its read-only `mcp.json`.
5-
**Hard rules** (apply before any MCP action below):
6-
7-
- `jfrog` is always available with respect to AI Catalog policy;
8-
never tell the user it's blocked or missing for catalog reasons.
9-
- NEVER run any Agent Guard flow (`--inspect`, `--login`, install,
10-
remove) against `jfrog`, and NEVER edit or delete its entry.
11-
Removal is only possible by uninstalling the plugin from Cursor.
3+
The plugin ships a built-in `jfrog` MCP in its read-only `mcp.json`,
4+
launched as `npx @jfrog/agent-guard` with `_JF_ARGS=mcp=jfrog-mcp`.
5+
agent-guard recognizes that shape, skips the AI Catalog, and connects
6+
directly to `${JFROG_URL}/mcp`. **Hard rules** (apply before any MCP
7+
action below):
8+
9+
- `jfrog` is always available; never tell the user it's blocked,
10+
missing, or pending because of catalog/entitlement.
11+
- NEVER run any Agent Guard catalog flow (`--inspect`, `--login`,
12+
install, remove) against `jfrog`, and NEVER edit or delete its
13+
entry. Removal is only possible by uninstalling the plugin from
14+
Cursor.
1215
- In any "currently installed" listing, report `jfrog` as
1316
`scope: plugin (jfrog)`, `managed-by: plugin`. The rest of this
1417
document does not apply to it.
15-
- If the AI Catalog also publishes the JFrog MCP (typically as
16-
`jfrog-mcp`) and the user wants catalog-managed tool policy,
17-
install it via the standard catalog flow under a different
18-
`mcpServers` key — e.g., `jfrog-catalog` — so it coexists with
19-
the built-in `jfrog`. Tell the user about the rename and that
20-
they end up with both entries.
21-
- Cursor's enterprise admin **MCP Configuration** panel sits above
22-
plugins and CAN block `jfrog`. If the user reports `jfrog` is
23-
missing, see "Built-in `jfrog` MCP missing under enterprise MCP
24-
Configuration" in Troubleshooting.
18+
- Tool calls on the built-in `jfrog` are constrained by the JFrog
19+
access token, not by AI Catalog tool policy. If the AI Catalog
20+
also publishes the JFrog MCP (typically as `jfrog-mcp`) and the
21+
user wants catalog-managed tool policy, install it via the
22+
standard catalog flow (`_JF_ARGS=project=<key>&mcp=jfrog-mcp`)
23+
under a different `mcpServers` key — e.g., `jfrog-catalog` — so
24+
it coexists with the built-in `jfrog`. Tell the user about the
25+
rename and that they end up with both entries.
2526

2627
# MCP Server Management — JFrog Agent Guard
2728

@@ -446,18 +447,16 @@ the display name.
446447
Tools & MCP** — never enabled. Re-run Step 4a
447448
(`cursor agent mcp enable <name>`); if the entry is brand-new,
448449
also `Developer: Reload Window` so Cursor picks up the file.
449-
- **Built-in `jfrog` MCP missing under enterprise MCP
450-
Configuration** — the built-in `jfrog` server is HTTP at
451-
`https://${JFROG_PLATFORM_URL}/mcp` and is filtered by Cursor's
452-
admin **MCP Configuration** allowlist (Server/Command list with
453-
Command or URL entries) like every MCP. Most common silent-block:
454-
an allowlist with only Command entries (e.g. agent-guard-only
455-
`npx ... @jfrog/agent-guard ...`) and zero URL entries — an HTTP
456-
server has nothing to match. The plugin cannot bypass the admin
457-
panel. Tell the user this is an enterprise-policy block (not a
458-
plugin or AI Catalog issue) and to ask their Cursor admin to add a
459-
URL entry covering `https://${JFROG_PLATFORM_URL}/mcp` in the
460-
admin **MCP Configuration** panel.
450+
- **Built-in `jfrog` MCP missing** — almost always either (a)
451+
`JFROG_URL` / `JFROG_ACCESS_TOKEN` unset (agent-guard fails fast at
452+
startup; check the error in the Cursor MCP / Output panel), or (b)
453+
Cursor's admin **MCP Configuration** allowlist filters the
454+
`npx ... @jfrog/agent-guard` Command. The plugin cannot bypass the
455+
admin panel — tell the user this is an environment / enterprise
456+
policy issue (not a plugin or AI Catalog issue) and either to set
457+
the env vars or to ask their Cursor admin to add a Command entry
458+
covering `npx ... @jfrog/agent-guard` (no `--server` / `--mcp` /
459+
`--project` args) in the admin **MCP Configuration** panel.
461460
- **Agent Guard: `multiple/no JFrog server configured`** (the agent guard
462461
cannot pick a JFrog server) — pass `--server <ID>` (after
463462
`jf c add <SERVER_ID>`) OR export both `JFROG_URL` and

0 commit comments

Comments
 (0)