@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/client/dist/inspector.iife.js +1 -5
- package/dist/config-updater.cjs +710 -290
- package/dist/config-updater.js +646 -226
- package/dist/index.cjs +67 -2
- package/dist/index.d.cts +12 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +67 -2
- package/package.json +2 -2
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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",
|