@extension.dev/mcp 4.2.2 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +22 -0
- package/.claude-plugin/plugin.json +33 -0
- package/CHANGELOG.md +61 -0
- package/LICENSE +1 -1
- package/README.md +20 -7
- package/bin/extension-mcp.js +7 -1
- package/claude/CLAUDE.md +29 -39
- package/claude/commands/extension-debug.md +2 -3
- package/claude/rules/mcp-tools.md +68 -18
- package/dist/module.js +422 -41
- package/dist/src/__tests__/fixtures/ready-contract.d.ts +7 -0
- package/dist/src/index.d.ts +0 -7
- package/dist/src/lib/act.d.ts +0 -22
- package/dist/src/lib/browser-family.d.ts +5 -0
- package/dist/src/lib/exec.d.ts +0 -11
- package/dist/src/lib/launch-flags.d.ts +43 -0
- package/dist/src/lib/session-browser.d.ts +0 -1
- package/dist/src/lib/validate-input.d.ts +0 -5
- package/dist/src/tools/build.d.ts +24 -0
- package/dist/src/tools/dev.d.ts +45 -7
- package/dist/src/tools/doctor.d.ts +22 -0
- package/dist/src/tools/preview.d.ts +44 -1
- package/dist/src/tools/start.d.ts +44 -1
- package/dist/src/tools/uninstall-browser.d.ts +24 -0
- package/package.json +30 -16
- package/server.json +23 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function writeModernContract(projectPath: string, browser: string, overrides?: Record<string, unknown>): string;
|
|
2
|
+
export declare function writeLegacyContract(projectPath: string, browser: string, overrides?: Record<string, unknown>): string;
|
|
3
|
+
export declare function writeErrorContract(projectPath: string, browser: string): string;
|
|
4
|
+
export declare function writeLegacyEngineState(projectPath: string, browser: string): {
|
|
5
|
+
legacyPortFile: string;
|
|
6
|
+
legacyTokenFile: string;
|
|
7
|
+
};
|
package/dist/src/index.d.ts
CHANGED
|
@@ -8,11 +8,4 @@ export interface ToolModule {
|
|
|
8
8
|
}
|
|
9
9
|
export declare const tools: ToolModule[];
|
|
10
10
|
export declare function startServer(): Promise<void>;
|
|
11
|
-
/**
|
|
12
|
-
* Human-facing subcommands for `extension-mcp <cmd>`. Unlike the MCP tools
|
|
13
|
-
* (which must return promptly and so resume across calls), the bin blocks on
|
|
14
|
-
* the device flow because there is a person watching the terminal. Returns a
|
|
15
|
-
* process exit code. All console output goes to stderr so it never pollutes a
|
|
16
|
-
* machine-readable stdout if a script captures it.
|
|
17
|
-
*/
|
|
18
11
|
export declare function runCli(cmd: string, args: string[]): Promise<number>;
|
package/dist/src/lib/act.d.ts
CHANGED
|
@@ -1,26 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Translate CLI-speak in an error message into the MCP tool surface
|
|
3
|
-
* (fresh-eyes walk, friction #2). The CLI's hints say things like
|
|
4
|
-
* "Run `extension dev --browser=chromium --allow-control` first" — correct
|
|
5
|
-
* for a human at a terminal, a dead end for an agent that only has the MCP
|
|
6
|
-
* tools. Rewrite flags to their tool-argument names so the hint is actionable
|
|
7
|
-
* on the surface the caller is actually using. Result data is never touched —
|
|
8
|
-
* only error/hint prose.
|
|
9
|
-
*/
|
|
10
1
|
export declare function toMcpSpeak(text: string): string;
|
|
11
|
-
/**
|
|
12
|
-
* Run an `extension <verb> … --output json` act command and return its result
|
|
13
|
-
* JSON as a string (the MCP tool payload). The CLI prints the control-channel
|
|
14
|
-
* result frame to stdout (for ok and !ok alike); connection/no-session failures
|
|
15
|
-
* go to stderr with a non-zero exit. Either way we return a JSON object.
|
|
16
|
-
*
|
|
17
|
-
* Per lockstep invariant #1 the act tools wrap the CLI verb rather than talking
|
|
18
|
-
* to the control WS directly — so MCP behavior can never drift from the CLI.
|
|
19
|
-
* Error PROSE is the one exception: hints are rewritten from CLI flags to MCP
|
|
20
|
-
* tool arguments before returning (see toMcpSpeak).
|
|
21
|
-
*/
|
|
22
2
|
export declare function runActVerb(args: string[], projectPath: string, timeoutMs?: number): Promise<string>;
|
|
23
|
-
/** Shared input fields for act tools. */
|
|
24
3
|
export interface ActArgs {
|
|
25
4
|
projectPath: string;
|
|
26
5
|
browser?: string;
|
|
@@ -29,5 +8,4 @@ export interface ActArgs {
|
|
|
29
8
|
tab?: number;
|
|
30
9
|
timeout?: number;
|
|
31
10
|
}
|
|
32
|
-
/** Build the trailing CLI flags common to act verbs. */
|
|
33
11
|
export declare function commonFlags(args: ActArgs): string[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const CHROMIUM_FAMILY: ReadonlySet<string>;
|
|
2
|
+
export declare const GECKO_FAMILY: ReadonlySet<string>;
|
|
3
|
+
export declare const WEBKIT_FAMILY: ReadonlySet<string>;
|
|
4
|
+
export declare function isChromiumFamily(browser: string): boolean;
|
|
5
|
+
export declare function isGeckoFamily(browser: string): boolean;
|
package/dist/src/lib/exec.d.ts
CHANGED
|
@@ -4,17 +4,6 @@ export interface CliResult {
|
|
|
4
4
|
stdout: string;
|
|
5
5
|
stderr: string;
|
|
6
6
|
}
|
|
7
|
-
/**
|
|
8
|
-
* Resolve how to invoke the `extension` CLI for a given project.
|
|
9
|
-
*
|
|
10
|
-
* Preference order:
|
|
11
|
-
* 1. The project's own `node_modules/.bin/extension` — the version the project
|
|
12
|
-
* pinned is the single source of behavior for that project (lockstep
|
|
13
|
-
* invariant), and spawning it needs no network.
|
|
14
|
-
* 2. `npx extension@<pinned>` — pinned to the extension-develop version this
|
|
15
|
-
* package vendors, never a floating `latest`, so MCP behavior stays
|
|
16
|
-
* reproducible even without a project-local install.
|
|
17
|
-
*/
|
|
18
7
|
export declare function resolveExtensionInvocation(projectDir?: string): {
|
|
19
8
|
command: string;
|
|
20
9
|
prefixArgs: string[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare const LAUNCH_FLAG_SCHEMA: {
|
|
2
|
+
readonly profile: {
|
|
3
|
+
readonly type: "string";
|
|
4
|
+
readonly description: "Browser profile path, or \"false\" to reuse the default user profile. Omit for a fresh throwaway profile.";
|
|
5
|
+
};
|
|
6
|
+
readonly startingUrl: {
|
|
7
|
+
readonly type: "string";
|
|
8
|
+
readonly description: "URL the browser opens on launch";
|
|
9
|
+
};
|
|
10
|
+
readonly chromiumBinary: {
|
|
11
|
+
readonly type: "string";
|
|
12
|
+
readonly description: "Path to a custom Chromium-based binary (overrides browser)";
|
|
13
|
+
};
|
|
14
|
+
readonly geckoBinary: {
|
|
15
|
+
readonly type: "string";
|
|
16
|
+
readonly description: "Path to a custom Gecko/Firefox binary (overrides browser)";
|
|
17
|
+
};
|
|
18
|
+
readonly host: {
|
|
19
|
+
readonly type: "string";
|
|
20
|
+
readonly description: "Dev server bind host. Use 0.0.0.0 for Docker or devcontainers. Defaults to 127.0.0.1";
|
|
21
|
+
};
|
|
22
|
+
readonly publicHost: {
|
|
23
|
+
readonly type: "string";
|
|
24
|
+
readonly description: "Connectable host the browser dials for HMR and reload when it differs from the bind host";
|
|
25
|
+
};
|
|
26
|
+
readonly extensions: {
|
|
27
|
+
readonly type: "array";
|
|
28
|
+
readonly items: {
|
|
29
|
+
readonly type: "string";
|
|
30
|
+
};
|
|
31
|
+
readonly description: "Companion extension paths or store URLs to load alongside the project";
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export interface LaunchFlagArgs {
|
|
35
|
+
profile?: string;
|
|
36
|
+
startingUrl?: string;
|
|
37
|
+
chromiumBinary?: string;
|
|
38
|
+
geckoBinary?: string;
|
|
39
|
+
host?: string;
|
|
40
|
+
publicHost?: string;
|
|
41
|
+
extensions?: string[];
|
|
42
|
+
}
|
|
43
|
+
export declare function launchFlagArgs(args: LaunchFlagArgs): string[];
|
|
@@ -2,6 +2,5 @@ export interface ResolvedBrowser {
|
|
|
2
2
|
browser: string;
|
|
3
3
|
source: "explicit" | "session" | "contract" | "fallback";
|
|
4
4
|
}
|
|
5
|
-
/** Browsers with a live session for this project (registry + disk contracts). */
|
|
6
5
|
export declare function knownSessionBrowsers(projectPath: string): string[];
|
|
7
6
|
export declare function resolveSessionBrowser(projectPath: string, explicit: string | undefined, fallback?: string): ResolvedBrowser;
|
|
@@ -2,10 +2,5 @@ export interface InputIssue {
|
|
|
2
2
|
path: string;
|
|
3
3
|
message: string;
|
|
4
4
|
}
|
|
5
|
-
/**
|
|
6
|
-
* Validate tools/call arguments against a tool inputSchema. Returns an empty
|
|
7
|
-
* array when the args are acceptable.
|
|
8
|
-
*/
|
|
9
5
|
export declare function validateToolInput(inputSchema: Record<string, unknown>, args: Record<string, unknown>): InputIssue[];
|
|
10
|
-
/** Frozen-style error envelope for input validation failures. */
|
|
11
6
|
export declare function inputValidationError(toolName: string, issues: InputIssue[]): string;
|
|
@@ -24,6 +24,26 @@ export declare const schema: {
|
|
|
24
24
|
default: boolean;
|
|
25
25
|
description: string;
|
|
26
26
|
};
|
|
27
|
+
zipFilename: {
|
|
28
|
+
type: string;
|
|
29
|
+
description: string;
|
|
30
|
+
};
|
|
31
|
+
polyfill: {
|
|
32
|
+
type: string;
|
|
33
|
+
default: boolean;
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
silent: {
|
|
37
|
+
type: string;
|
|
38
|
+
default: boolean;
|
|
39
|
+
description: string;
|
|
40
|
+
};
|
|
41
|
+
mode: {
|
|
42
|
+
type: string;
|
|
43
|
+
enum: string[];
|
|
44
|
+
default: string;
|
|
45
|
+
description: string;
|
|
46
|
+
};
|
|
27
47
|
};
|
|
28
48
|
required: string[];
|
|
29
49
|
};
|
|
@@ -33,4 +53,8 @@ export declare function handler(args: {
|
|
|
33
53
|
browser?: string;
|
|
34
54
|
zip?: boolean;
|
|
35
55
|
zipSource?: boolean;
|
|
56
|
+
zipFilename?: string;
|
|
57
|
+
polyfill?: boolean;
|
|
58
|
+
silent?: boolean;
|
|
59
|
+
mode?: "development" | "production" | "none";
|
|
36
60
|
}): Promise<string>;
|
package/dist/src/tools/dev.d.ts
CHANGED
|
@@ -1,9 +1,51 @@
|
|
|
1
|
+
import { type LaunchFlagArgs } from "../lib/launch-flags";
|
|
1
2
|
export declare const schema: {
|
|
2
3
|
name: string;
|
|
3
4
|
description: string;
|
|
4
5
|
inputSchema: {
|
|
5
6
|
type: "object";
|
|
6
7
|
properties: {
|
|
8
|
+
allowControl: {
|
|
9
|
+
type: string;
|
|
10
|
+
default: boolean;
|
|
11
|
+
description: string;
|
|
12
|
+
};
|
|
13
|
+
allowEval: {
|
|
14
|
+
type: string;
|
|
15
|
+
default: boolean;
|
|
16
|
+
description: string;
|
|
17
|
+
};
|
|
18
|
+
profile: {
|
|
19
|
+
readonly type: "string";
|
|
20
|
+
readonly description: "Browser profile path, or \"false\" to reuse the default user profile. Omit for a fresh throwaway profile.";
|
|
21
|
+
};
|
|
22
|
+
startingUrl: {
|
|
23
|
+
readonly type: "string";
|
|
24
|
+
readonly description: "URL the browser opens on launch";
|
|
25
|
+
};
|
|
26
|
+
chromiumBinary: {
|
|
27
|
+
readonly type: "string";
|
|
28
|
+
readonly description: "Path to a custom Chromium-based binary (overrides browser)";
|
|
29
|
+
};
|
|
30
|
+
geckoBinary: {
|
|
31
|
+
readonly type: "string";
|
|
32
|
+
readonly description: "Path to a custom Gecko/Firefox binary (overrides browser)";
|
|
33
|
+
};
|
|
34
|
+
host: {
|
|
35
|
+
readonly type: "string";
|
|
36
|
+
readonly description: "Dev server bind host. Use 0.0.0.0 for Docker or devcontainers. Defaults to 127.0.0.1";
|
|
37
|
+
};
|
|
38
|
+
publicHost: {
|
|
39
|
+
readonly type: "string";
|
|
40
|
+
readonly description: "Connectable host the browser dials for HMR and reload when it differs from the bind host";
|
|
41
|
+
};
|
|
42
|
+
extensions: {
|
|
43
|
+
readonly type: "array";
|
|
44
|
+
readonly items: {
|
|
45
|
+
readonly type: "string";
|
|
46
|
+
};
|
|
47
|
+
readonly description: "Companion extension paths or store URLs to load alongside the project";
|
|
48
|
+
};
|
|
7
49
|
projectPath: {
|
|
8
50
|
type: string;
|
|
9
51
|
description: string;
|
|
@@ -22,12 +64,7 @@ export declare const schema: {
|
|
|
22
64
|
default: boolean;
|
|
23
65
|
description: string;
|
|
24
66
|
};
|
|
25
|
-
|
|
26
|
-
type: string;
|
|
27
|
-
default: boolean;
|
|
28
|
-
description: string;
|
|
29
|
-
};
|
|
30
|
-
allowEval: {
|
|
67
|
+
polyfill: {
|
|
31
68
|
type: string;
|
|
32
69
|
default: boolean;
|
|
33
70
|
description: string;
|
|
@@ -41,6 +78,7 @@ export declare function handler(args: {
|
|
|
41
78
|
browser?: string;
|
|
42
79
|
port?: number;
|
|
43
80
|
noBrowser?: boolean;
|
|
81
|
+
polyfill?: boolean;
|
|
44
82
|
allowControl?: boolean;
|
|
45
83
|
allowEval?: boolean;
|
|
46
|
-
}): Promise<string>;
|
|
84
|
+
} & LaunchFlagArgs): Promise<string>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const schema: {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object";
|
|
6
|
+
properties: {
|
|
7
|
+
projectPath: {
|
|
8
|
+
type: string;
|
|
9
|
+
description: string;
|
|
10
|
+
};
|
|
11
|
+
browser: {
|
|
12
|
+
type: string;
|
|
13
|
+
description: string;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
required: string[];
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export declare function handler(args: {
|
|
20
|
+
projectPath: string;
|
|
21
|
+
browser?: string;
|
|
22
|
+
}): Promise<string>;
|
|
@@ -1,9 +1,41 @@
|
|
|
1
|
+
import { type LaunchFlagArgs } from "../lib/launch-flags";
|
|
1
2
|
export declare const schema: {
|
|
2
3
|
name: string;
|
|
3
4
|
description: string;
|
|
4
5
|
inputSchema: {
|
|
5
6
|
type: "object";
|
|
6
7
|
properties: {
|
|
8
|
+
profile: {
|
|
9
|
+
readonly type: "string";
|
|
10
|
+
readonly description: "Browser profile path, or \"false\" to reuse the default user profile. Omit for a fresh throwaway profile.";
|
|
11
|
+
};
|
|
12
|
+
startingUrl: {
|
|
13
|
+
readonly type: "string";
|
|
14
|
+
readonly description: "URL the browser opens on launch";
|
|
15
|
+
};
|
|
16
|
+
chromiumBinary: {
|
|
17
|
+
readonly type: "string";
|
|
18
|
+
readonly description: "Path to a custom Chromium-based binary (overrides browser)";
|
|
19
|
+
};
|
|
20
|
+
geckoBinary: {
|
|
21
|
+
readonly type: "string";
|
|
22
|
+
readonly description: "Path to a custom Gecko/Firefox binary (overrides browser)";
|
|
23
|
+
};
|
|
24
|
+
host: {
|
|
25
|
+
readonly type: "string";
|
|
26
|
+
readonly description: "Dev server bind host. Use 0.0.0.0 for Docker or devcontainers. Defaults to 127.0.0.1";
|
|
27
|
+
};
|
|
28
|
+
publicHost: {
|
|
29
|
+
readonly type: "string";
|
|
30
|
+
readonly description: "Connectable host the browser dials for HMR and reload when it differs from the bind host";
|
|
31
|
+
};
|
|
32
|
+
extensions: {
|
|
33
|
+
readonly type: "array";
|
|
34
|
+
readonly items: {
|
|
35
|
+
readonly type: "string";
|
|
36
|
+
};
|
|
37
|
+
readonly description: "Companion extension paths or store URLs to load alongside the project";
|
|
38
|
+
};
|
|
7
39
|
projectPath: {
|
|
8
40
|
type: string;
|
|
9
41
|
description: string;
|
|
@@ -13,6 +45,15 @@ export declare const schema: {
|
|
|
13
45
|
enum: string[];
|
|
14
46
|
default: string;
|
|
15
47
|
};
|
|
48
|
+
port: {
|
|
49
|
+
type: string;
|
|
50
|
+
description: string;
|
|
51
|
+
};
|
|
52
|
+
noBrowser: {
|
|
53
|
+
type: string;
|
|
54
|
+
default: boolean;
|
|
55
|
+
description: string;
|
|
56
|
+
};
|
|
16
57
|
};
|
|
17
58
|
required: string[];
|
|
18
59
|
};
|
|
@@ -20,4 +61,6 @@ export declare const schema: {
|
|
|
20
61
|
export declare function handler(args: {
|
|
21
62
|
projectPath: string;
|
|
22
63
|
browser?: string;
|
|
23
|
-
|
|
64
|
+
port?: number;
|
|
65
|
+
noBrowser?: boolean;
|
|
66
|
+
} & LaunchFlagArgs): Promise<string>;
|
|
@@ -1,9 +1,41 @@
|
|
|
1
|
+
import { type LaunchFlagArgs } from "../lib/launch-flags";
|
|
1
2
|
export declare const schema: {
|
|
2
3
|
name: string;
|
|
3
4
|
description: string;
|
|
4
5
|
inputSchema: {
|
|
5
6
|
type: "object";
|
|
6
7
|
properties: {
|
|
8
|
+
profile: {
|
|
9
|
+
readonly type: "string";
|
|
10
|
+
readonly description: "Browser profile path, or \"false\" to reuse the default user profile. Omit for a fresh throwaway profile.";
|
|
11
|
+
};
|
|
12
|
+
startingUrl: {
|
|
13
|
+
readonly type: "string";
|
|
14
|
+
readonly description: "URL the browser opens on launch";
|
|
15
|
+
};
|
|
16
|
+
chromiumBinary: {
|
|
17
|
+
readonly type: "string";
|
|
18
|
+
readonly description: "Path to a custom Chromium-based binary (overrides browser)";
|
|
19
|
+
};
|
|
20
|
+
geckoBinary: {
|
|
21
|
+
readonly type: "string";
|
|
22
|
+
readonly description: "Path to a custom Gecko/Firefox binary (overrides browser)";
|
|
23
|
+
};
|
|
24
|
+
host: {
|
|
25
|
+
readonly type: "string";
|
|
26
|
+
readonly description: "Dev server bind host. Use 0.0.0.0 for Docker or devcontainers. Defaults to 127.0.0.1";
|
|
27
|
+
};
|
|
28
|
+
publicHost: {
|
|
29
|
+
readonly type: "string";
|
|
30
|
+
readonly description: "Connectable host the browser dials for HMR and reload when it differs from the bind host";
|
|
31
|
+
};
|
|
32
|
+
extensions: {
|
|
33
|
+
readonly type: "array";
|
|
34
|
+
readonly items: {
|
|
35
|
+
readonly type: "string";
|
|
36
|
+
};
|
|
37
|
+
readonly description: "Companion extension paths or store URLs to load alongside the project";
|
|
38
|
+
};
|
|
7
39
|
projectPath: {
|
|
8
40
|
type: string;
|
|
9
41
|
description: string;
|
|
@@ -18,6 +50,15 @@ export declare const schema: {
|
|
|
18
50
|
default: boolean;
|
|
19
51
|
description: string;
|
|
20
52
|
};
|
|
53
|
+
port: {
|
|
54
|
+
type: string;
|
|
55
|
+
description: string;
|
|
56
|
+
};
|
|
57
|
+
noBrowser: {
|
|
58
|
+
type: string;
|
|
59
|
+
default: boolean;
|
|
60
|
+
description: string;
|
|
61
|
+
};
|
|
21
62
|
};
|
|
22
63
|
required: string[];
|
|
23
64
|
};
|
|
@@ -26,4 +67,6 @@ export declare function handler(args: {
|
|
|
26
67
|
projectPath: string;
|
|
27
68
|
browser?: string;
|
|
28
69
|
polyfill?: boolean;
|
|
29
|
-
|
|
70
|
+
port?: number;
|
|
71
|
+
noBrowser?: boolean;
|
|
72
|
+
} & LaunchFlagArgs): Promise<string>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const schema: {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
inputSchema: {
|
|
5
|
+
type: "object";
|
|
6
|
+
properties: {
|
|
7
|
+
browser: {
|
|
8
|
+
type: string;
|
|
9
|
+
enum: string[];
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
all: {
|
|
13
|
+
type: string;
|
|
14
|
+
default: boolean;
|
|
15
|
+
description: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
required: never[];
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export declare function handler(args: {
|
|
22
|
+
browser?: string;
|
|
23
|
+
all?: boolean;
|
|
24
|
+
}): Promise<string>;
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@extension.dev/mcp",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "4.
|
|
5
|
-
"description": "MCP server that lets AI agents build, run, inspect, and publish browser extensions.
|
|
4
|
+
"version": "4.4.0",
|
|
5
|
+
"description": "MCP server that lets AI agents (Claude Code, Claude Desktop, Cursor, Copilot, Codex) build, run, inspect, and publish browser extensions. 30 tools for scaffolding, live DOM inspection, log streaming, and store-ready builds across Chrome, Edge, Firefox, Safari, and every Chromium- or Gecko-based browser (Brave, Opera, Vivaldi, Yandex, Waterfox, LibreWolf). Powered by extension.dev and Extension.js.",
|
|
6
|
+
"mcpName": "io.github.extensiondev/mcp",
|
|
6
7
|
"license": "MIT",
|
|
7
8
|
"author": {
|
|
8
9
|
"name": "Cezar Augusto",
|
|
@@ -16,10 +17,11 @@
|
|
|
16
17
|
"bugs": {
|
|
17
18
|
"url": "https://github.com/extensiondev/mcp/issues"
|
|
18
19
|
},
|
|
19
|
-
"homepage": "https://
|
|
20
|
+
"homepage": "https://extension.dev",
|
|
20
21
|
"engines": {
|
|
21
22
|
"node": ">=20.18"
|
|
22
23
|
},
|
|
24
|
+
"packageManager": "pnpm@10.19.0",
|
|
23
25
|
"exports": {
|
|
24
26
|
".": {
|
|
25
27
|
"types": "./dist/module.d.ts",
|
|
@@ -35,16 +37,31 @@
|
|
|
35
37
|
"dist",
|
|
36
38
|
"bin",
|
|
37
39
|
"claude",
|
|
40
|
+
".claude-plugin",
|
|
41
|
+
"server.json",
|
|
38
42
|
"README.md",
|
|
39
43
|
"CHANGELOG.md",
|
|
40
44
|
"LICENSE"
|
|
41
45
|
],
|
|
46
|
+
"scripts": {
|
|
47
|
+
"clean": "rm -rf dist",
|
|
48
|
+
"watch": "rslib build --watch",
|
|
49
|
+
"compile": "rslib build",
|
|
50
|
+
"build": "pnpm run compile",
|
|
51
|
+
"start": "node bin/extension-mcp.js",
|
|
52
|
+
"test": "vitest run",
|
|
53
|
+
"prepack": "node scripts/readme-logo-width.mjs npm",
|
|
54
|
+
"postpack": "node scripts/readme-logo-width.mjs github",
|
|
55
|
+
"prepublishOnly": "pnpm run test && pnpm run compile"
|
|
56
|
+
},
|
|
42
57
|
"publishConfig": {
|
|
43
58
|
"access": "public",
|
|
59
|
+
"provenance": true,
|
|
44
60
|
"registry": "https://registry.npmjs.org"
|
|
45
61
|
},
|
|
46
62
|
"keywords": [
|
|
47
63
|
"mcp",
|
|
64
|
+
"mcp-server",
|
|
48
65
|
"model-context-protocol",
|
|
49
66
|
"ai-agent",
|
|
50
67
|
"agents",
|
|
@@ -52,23 +69,28 @@
|
|
|
52
69
|
"claude-code",
|
|
53
70
|
"claude-desktop",
|
|
54
71
|
"cursor",
|
|
72
|
+
"github-copilot",
|
|
73
|
+
"codex",
|
|
55
74
|
"browser-extension",
|
|
56
75
|
"chrome-extension",
|
|
57
76
|
"firefox-addon",
|
|
77
|
+
"edge-extension",
|
|
78
|
+
"safari-web-extension",
|
|
58
79
|
"manifest-v3",
|
|
59
80
|
"webextension",
|
|
60
81
|
"cross-browser",
|
|
61
82
|
"developer-tools",
|
|
62
|
-
"extension.dev"
|
|
83
|
+
"extension.dev",
|
|
84
|
+
"extension.js"
|
|
63
85
|
],
|
|
64
86
|
"dependencies": {
|
|
65
87
|
"@extension.dev/core": "^0.2.0",
|
|
66
88
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
67
89
|
"browser-extension-manifest-fields": "^2.2.9",
|
|
68
90
|
"cross-spawn": "^7.0.6",
|
|
69
|
-
"extension-create": "^4.0.
|
|
70
|
-
"extension-develop": "^4.0.
|
|
71
|
-
"extension-install": "^4.0.
|
|
91
|
+
"extension-create": "^4.0.11",
|
|
92
|
+
"extension-develop": "^4.0.11",
|
|
93
|
+
"extension-install": "^4.0.11",
|
|
72
94
|
"ws": "^8.20.0"
|
|
73
95
|
},
|
|
74
96
|
"devDependencies": {
|
|
@@ -77,13 +99,5 @@
|
|
|
77
99
|
"@types/ws": "^8.18.1",
|
|
78
100
|
"typescript": "6.0.2",
|
|
79
101
|
"vitest": "^4.1.3"
|
|
80
|
-
},
|
|
81
|
-
"scripts": {
|
|
82
|
-
"clean": "rm -rf dist",
|
|
83
|
-
"watch": "rslib build --watch",
|
|
84
|
-
"compile": "rslib build",
|
|
85
|
-
"build": "pnpm run compile",
|
|
86
|
-
"start": "node bin/extension-mcp.js",
|
|
87
|
-
"test": "vitest run"
|
|
88
102
|
}
|
|
89
|
-
}
|
|
103
|
+
}
|
package/server.json
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-09-29/server.schema.json",
|
|
3
|
+
"name": "io.github.extensiondev/mcp",
|
|
4
|
+
"description": "Build, run, inspect, and publish browser extensions from any MCP client. 30 tools, 11 browsers.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"url": "https://github.com/extensiondev/mcp",
|
|
7
|
+
"source": "github"
|
|
8
|
+
},
|
|
9
|
+
"websiteUrl": "https://extension.dev",
|
|
10
|
+
"version": "4.4.0",
|
|
11
|
+
"packages": [
|
|
12
|
+
{
|
|
13
|
+
"registryType": "npm",
|
|
14
|
+
"registryBaseUrl": "https://registry.npmjs.org",
|
|
15
|
+
"identifier": "@extension.dev/mcp",
|
|
16
|
+
"version": "4.4.0",
|
|
17
|
+
"runtimeHint": "npx",
|
|
18
|
+
"transport": {
|
|
19
|
+
"type": "stdio"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|