Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 0 additions & 25 deletions .cursor-plugin/plugin.json

This file was deleted.

11 changes: 5 additions & 6 deletions docs/ci-and-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,11 @@ MCP Registry
`package.json` they ship, since neither artifact is the package registered under that name.

Client plugin manifests
- `plugins/*/.claude-plugin/` (Claude), `.cursor-plugin/plugin.json` (Cursor) and
`gemini-extension.json` (Gemini CLI) let each client install the server from this
repository. The root `.claude-plugin/marketplace.json` is the marketplace listing, not a
plugin manifest. Gemini reads its file directly; Cursor additionally requires submission
to the Cursor marketplace before the plugin is discoverable.
- The Claude manifests carry no `version`. The other two do, and `npm run sync:manifests`
- `plugins/*/.claude-plugin/` (Claude), `gemini-extension.json` (Gemini CLI) and the root
`plugin.json` plus `mcp.json` (the Agent Plugins standard, which cursor.directory reads)
let each client install the server from this repository. The root
`.claude-plugin/marketplace.json` is the marketplace listing, not a plugin manifest.
- The Claude manifests and `mcp.json` carry no `version`. The others do, and `npm run sync:manifests`
copies it from `package.json`, along with `manifest.mcpb.json`, `server.json` and the two
version fields in `package-lock.json`. Since each manifest launches the server with `@latest`,
the field is metadata only and does not pin what gets installed.
Expand Down
18 changes: 18 additions & 0 deletions mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
"mcpServers": {
"firefox-devtools": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@mozilla/firefox-devtools-mcp@latest",
"--auto-profile",
"--tool-preset",
"developer",
"--pref",
"remote.prefs.recommended=false"
]
}
}
}
20 changes: 20 additions & 0 deletions plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "firefox-devtools-mcp",
"version": "0.10.4",
"description": "Control Firefox for browsing, web testing, and debugging. Fill forms, capture network and console activity, take screenshots, run scripts, and profile performance. Supports Android devices.",
"author": {
"name": "Mozilla"
},
"homepage": "https://github.com/mozilla/firefox-devtools-mcp",
"repository": "https://github.com/mozilla/firefox-devtools-mcp",
"license": "MIT OR Apache-2.0",
"keywords": [
"firefox",
"browser",
"devtools",
"debugging",
"automation",
"performance"
]
}
2 changes: 1 addition & 1 deletion scripts/sync-manifest-versions.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const setVersion = (doc) => ({ ...doc, version });

/** Each entry maps a file to the update it needs, since several carry the version more than once. */
const targets = [
['.cursor-plugin/plugin.json', setVersion],
['plugin.json', setVersion],
['gemini-extension.json', setVersion],
['manifest.mcpb.json', setVersion],
[
Expand Down
Loading