@mcpc-tech/unplugin-dev-inspector-mcp 0.0.12 → 0.0.14

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/dist/index.cjs CHANGED
@@ -1,8 +1,45 @@
1
1
  const require_chunk = require('./chunk.cjs');
2
2
  const require_config_updater = require('./config-updater.cjs');
3
3
  const require_vue_transform = require('./vue-transform.cjs');
4
+ let __modelcontextprotocol_sdk_client_index_js = require("@modelcontextprotocol/sdk/client/index.js");
5
+ let __modelcontextprotocol_sdk_client_sse_js = require("@modelcontextprotocol/sdk/client/sse.js");
4
6
  let unplugin = require("unplugin");
5
7
 
8
+ //#region src/utils/browser-launcher.ts
9
+ /**
10
+ * Launch browser via Chrome DevTools MCP
11
+ * Uses MCP Client to connect to the MCP server endpoint
12
+ */
13
+ async function launchBrowserWithDevTools(options) {
14
+ const { url, serverContext } = options;
15
+ const sseUrl = `http://${serverContext.host === "0.0.0.0" ? "localhost" : serverContext.host || "localhost"}:${serverContext.port || 5173}/__mcp__/sse?clientId=auto-browser`;
16
+ let client = null;
17
+ try {
18
+ client = new __modelcontextprotocol_sdk_client_index_js.Client({
19
+ name: "dev-inspector-auto-browser",
20
+ version: "1.0.0"
21
+ });
22
+ const transport = new __modelcontextprotocol_sdk_client_sse_js.SSEClientTransport(new URL(sseUrl));
23
+ await client.connect(transport);
24
+ await client.callTool({
25
+ name: "chrome_devtools",
26
+ arguments: {
27
+ useTool: "chrome_navigate_page",
28
+ hasDefinitions: ["chrome_navigate_page"],
29
+ chrome_navigate_page: { url }
30
+ }
31
+ });
32
+ await new Promise((resolve) => setTimeout(resolve, 500));
33
+ return true;
34
+ } catch (error) {
35
+ console.error(`[dev-inspector] ⚠️ Failed to auto-open browser:`, error instanceof Error ? error.message : String(error));
36
+ return false;
37
+ } finally {
38
+ if (client) await client.close().catch(() => {});
39
+ }
40
+ }
41
+
42
+ //#endregion
6
43
  //#region src/core.ts
7
44
  const unplugin$1 = (0, unplugin.createUnplugin)((options = {}) => {
8
45
  const enabled = options.enabled ?? process.env.NODE_ENV !== "production";
@@ -117,7 +154,8 @@ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
117
154
  host: options.host ?? (typeof viteHost === "string" ? viteHost : viteHost === true ? "0.0.0.0" : "localhost"),
118
155
  port: options.port ?? server.config.server.port ?? 5173
119
156
  };
120
- const baseUrl = `http://${serverContext.host === "0.0.0.0" ? "localhost" : serverContext.host}:${serverContext.port}/__mcp__/sse`;
157
+ const displayHost = serverContext.host === "0.0.0.0" ? "localhost" : serverContext.host;
158
+ const baseUrl = `http://${displayHost}:${serverContext.port}/__mcp__/sse`;
121
159
  console.log(`[dev-inspector] 📡 MCP: ${baseUrl}\n`);
122
160
  await require_config_updater.setupMcpMiddleware(server.middlewares, serverContext);
123
161
  require_config_updater.setupAcpMiddleware(server.middlewares, serverContext, {
@@ -132,6 +170,19 @@ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
132
170
  updateConfigAdditionalServers: options.updateConfigAdditionalServers,
133
171
  customEditors: options.customEditors
134
172
  });
173
+ if (options.autoOpenBrowser ?? true) {
174
+ const targetUrl = options.browserUrl ?? `http://${displayHost}:${serverContext.port}`;
175
+ setTimeout(async () => {
176
+ if (await launchBrowserWithDevTools({
177
+ url: targetUrl,
178
+ serverContext
179
+ })) console.log(`[dev-inspector] 🌐 Browser opened: ${targetUrl}`);
180
+ else console.log(`[dev-inspector] 💡 Use "launch_chrome_devtools" prompt to open browser manually.\n`);
181
+ }, 1e3);
182
+ } else {
183
+ console.log(`[dev-inspector] ⚠️ autoOpenBrowser: false - Console/Network context unavailable`);
184
+ console.log(`[dev-inspector] 💡 Use "launch_chrome_devtools" prompt to enable.\n`);
185
+ }
135
186
  }
136
187
  require_config_updater.setupInspectorMiddleware(server.middlewares, {
137
188
  agents: options.agents,
@@ -163,7 +214,8 @@ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
163
214
  port
164
215
  };
165
216
  if (enableMcp) {
166
- const baseUrl = `http://${host === "0.0.0.0" ? "localhost" : host}:${port}/__mcp__/sse`;
217
+ const displayHost = host === "0.0.0.0" ? "localhost" : host;
218
+ const baseUrl = `http://${displayHost}:${port}/__mcp__/sse`;
167
219
  console.log(`[dev-inspector] 📡 MCP (Standalone): ${baseUrl}\n`);
168
220
  require_config_updater.setupMcpMiddleware(server, serverContext);
169
221
  require_config_updater.setupAcpMiddleware(server, serverContext, {
@@ -178,6 +230,19 @@ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
178
230
  updateConfigAdditionalServers: options.updateConfigAdditionalServers,
179
231
  customEditors: options.customEditors
180
232
  });
233
+ if (options.autoOpenBrowser ?? true) {
234
+ const targetUrl = options.browserUrl ?? `http://${displayHost}:${port}`;
235
+ setTimeout(async () => {
236
+ if (await launchBrowserWithDevTools({
237
+ url: targetUrl,
238
+ serverContext
239
+ })) console.log(`[dev-inspector] 🌐 Browser opened: ${targetUrl}`);
240
+ else console.log(`[dev-inspector] 💡 Use "launch_chrome_devtools" prompt to open browser manually.\n`);
241
+ }, 1e3);
242
+ } else {
243
+ console.log(`[dev-inspector] ⚠️ autoOpenBrowser: false - Console/Network context unavailable`);
244
+ console.log(`[dev-inspector] 💡 Use "launch_chrome_devtools" prompt to enable.\n`);
245
+ }
181
246
  }
182
247
  require_config_updater.setupInspectorMiddleware(server, {
183
248
  agents: options.agents,
package/dist/index.d.cts CHANGED
@@ -118,6 +118,18 @@ interface DevInspectorOptions extends McpConfigOptions, AcpOptions {
118
118
  * @example "virtual:my-inspector" or "virtual:custom-mcp"
119
119
  */
120
120
  virtualModuleName?: string;
121
+ /**
122
+ * Automatically open browser with Chrome DevTools when dev server starts
123
+ * Uses Chrome DevTools Protocol for full debugging capabilities (console, network, etc.)
124
+ * @default true when enableMcp is true
125
+ */
126
+ autoOpenBrowser?: boolean;
127
+ /**
128
+ * Custom browser launch URL
129
+ * If not specified, uses the dev server URL (e.g., http://localhost:5173)
130
+ * @example "http://localhost:5173/dashboard"
131
+ */
132
+ browserUrl?: string;
121
133
  }
122
134
  declare const unplugin: unplugin0.UnpluginInstance<DevInspectorOptions | undefined, boolean>;
123
135
  //#endregion
package/dist/index.d.ts CHANGED
@@ -118,6 +118,18 @@ interface DevInspectorOptions extends McpConfigOptions, AcpOptions {
118
118
  * @example "virtual:my-inspector" or "virtual:custom-mcp"
119
119
  */
120
120
  virtualModuleName?: string;
121
+ /**
122
+ * Automatically open browser with Chrome DevTools when dev server starts
123
+ * Uses Chrome DevTools Protocol for full debugging capabilities (console, network, etc.)
124
+ * @default true when enableMcp is true
125
+ */
126
+ autoOpenBrowser?: boolean;
127
+ /**
128
+ * Custom browser launch URL
129
+ * If not specified, uses the dev server URL (e.g., http://localhost:5173)
130
+ * @example "http://localhost:5173/dashboard"
131
+ */
132
+ browserUrl?: string;
121
133
  }
122
134
  declare const unplugin: unplugin0.UnpluginInstance<DevInspectorOptions | undefined, boolean>;
123
135
  //#endregion
package/dist/index.js CHANGED
@@ -1,7 +1,44 @@
1
1
  import { i as setupMcpMiddleware, n as setupAcpMiddleware, r as setupInspectorMiddleware, t as updateMcpConfigs } from "./config-updater.js";
2
2
  import { n as transformJSX, t as compileVue } from "./vue-transform.js";
3
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
4
+ import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
3
5
  import { createUnplugin } from "unplugin";
4
6
 
7
+ //#region src/utils/browser-launcher.ts
8
+ /**
9
+ * Launch browser via Chrome DevTools MCP
10
+ * Uses MCP Client to connect to the MCP server endpoint
11
+ */
12
+ async function launchBrowserWithDevTools(options) {
13
+ const { url, serverContext } = options;
14
+ const sseUrl = `http://${serverContext.host === "0.0.0.0" ? "localhost" : serverContext.host || "localhost"}:${serverContext.port || 5173}/__mcp__/sse?clientId=auto-browser`;
15
+ let client = null;
16
+ try {
17
+ client = new Client({
18
+ name: "dev-inspector-auto-browser",
19
+ version: "1.0.0"
20
+ });
21
+ const transport = new SSEClientTransport(new URL(sseUrl));
22
+ await client.connect(transport);
23
+ await client.callTool({
24
+ name: "chrome_devtools",
25
+ arguments: {
26
+ useTool: "chrome_navigate_page",
27
+ hasDefinitions: ["chrome_navigate_page"],
28
+ chrome_navigate_page: { url }
29
+ }
30
+ });
31
+ await new Promise((resolve) => setTimeout(resolve, 500));
32
+ return true;
33
+ } catch (error) {
34
+ console.error(`[dev-inspector] ⚠️ Failed to auto-open browser:`, error instanceof Error ? error.message : String(error));
35
+ return false;
36
+ } finally {
37
+ if (client) await client.close().catch(() => {});
38
+ }
39
+ }
40
+
41
+ //#endregion
5
42
  //#region src/core.ts
6
43
  const unplugin = createUnplugin((options = {}) => {
7
44
  const enabled = options.enabled ?? process.env.NODE_ENV !== "production";
@@ -116,7 +153,8 @@ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
116
153
  host: options.host ?? (typeof viteHost === "string" ? viteHost : viteHost === true ? "0.0.0.0" : "localhost"),
117
154
  port: options.port ?? server.config.server.port ?? 5173
118
155
  };
119
- const baseUrl = `http://${serverContext.host === "0.0.0.0" ? "localhost" : serverContext.host}:${serverContext.port}/__mcp__/sse`;
156
+ const displayHost = serverContext.host === "0.0.0.0" ? "localhost" : serverContext.host;
157
+ const baseUrl = `http://${displayHost}:${serverContext.port}/__mcp__/sse`;
120
158
  console.log(`[dev-inspector] 📡 MCP: ${baseUrl}\n`);
121
159
  await setupMcpMiddleware(server.middlewares, serverContext);
122
160
  setupAcpMiddleware(server.middlewares, serverContext, {
@@ -131,6 +169,19 @@ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
131
169
  updateConfigAdditionalServers: options.updateConfigAdditionalServers,
132
170
  customEditors: options.customEditors
133
171
  });
172
+ if (options.autoOpenBrowser ?? true) {
173
+ const targetUrl = options.browserUrl ?? `http://${displayHost}:${serverContext.port}`;
174
+ setTimeout(async () => {
175
+ if (await launchBrowserWithDevTools({
176
+ url: targetUrl,
177
+ serverContext
178
+ })) console.log(`[dev-inspector] 🌐 Browser opened: ${targetUrl}`);
179
+ else console.log(`[dev-inspector] 💡 Use "launch_chrome_devtools" prompt to open browser manually.\n`);
180
+ }, 1e3);
181
+ } else {
182
+ console.log(`[dev-inspector] ⚠️ autoOpenBrowser: false - Console/Network context unavailable`);
183
+ console.log(`[dev-inspector] 💡 Use "launch_chrome_devtools" prompt to enable.\n`);
184
+ }
134
185
  }
135
186
  setupInspectorMiddleware(server.middlewares, {
136
187
  agents: options.agents,
@@ -162,7 +213,8 @@ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
162
213
  port
163
214
  };
164
215
  if (enableMcp) {
165
- const baseUrl = `http://${host === "0.0.0.0" ? "localhost" : host}:${port}/__mcp__/sse`;
216
+ const displayHost = host === "0.0.0.0" ? "localhost" : host;
217
+ const baseUrl = `http://${displayHost}:${port}/__mcp__/sse`;
166
218
  console.log(`[dev-inspector] 📡 MCP (Standalone): ${baseUrl}\n`);
167
219
  setupMcpMiddleware(server, serverContext);
168
220
  setupAcpMiddleware(server, serverContext, {
@@ -177,6 +229,19 @@ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
177
229
  updateConfigAdditionalServers: options.updateConfigAdditionalServers,
178
230
  customEditors: options.customEditors
179
231
  });
232
+ if (options.autoOpenBrowser ?? true) {
233
+ const targetUrl = options.browserUrl ?? `http://${displayHost}:${port}`;
234
+ setTimeout(async () => {
235
+ if (await launchBrowserWithDevTools({
236
+ url: targetUrl,
237
+ serverContext
238
+ })) console.log(`[dev-inspector] 🌐 Browser opened: ${targetUrl}`);
239
+ else console.log(`[dev-inspector] 💡 Use "launch_chrome_devtools" prompt to open browser manually.\n`);
240
+ }, 1e3);
241
+ } else {
242
+ console.log(`[dev-inspector] ⚠️ autoOpenBrowser: false - Console/Network context unavailable`);
243
+ console.log(`[dev-inspector] 💡 Use "launch_chrome_devtools" prompt to enable.\n`);
244
+ }
180
245
  }
181
246
  setupInspectorMiddleware(server, {
182
247
  agents: options.agents,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcpc-tech/unplugin-dev-inspector-mcp",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "description": "Universal dev inspector plugin for React/Vue - inspect component sources and API calls in any bundler",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -84,7 +84,7 @@
84
84
  "@ai-sdk/react": "^2.0.95",
85
85
  "@babel/parser": "^7.28.5",
86
86
  "@babel/traverse": "^7.28.5",
87
- "@mcpc-tech/acp-ai-provider": "^0.1.25",
87
+ "@mcpc-tech/acp-ai-provider": "^0.1.31",
88
88
  "@mcpc-tech/cmcp": "^0.0.15",
89
89
  "@mcpc-tech/core": "^0.3.8",
90
90
  "@modelcontextprotocol/sdk": "^1.20.1",