Make mcp plugin always ready to be in multiuser

This commit is contained in:
Andrey Antukh
2026-03-17 14:28:30 +01:00
parent ab4e195cca
commit 6079ef4e22
9 changed files with 10 additions and 20 deletions

View File

@@ -36,7 +36,7 @@ popd
pushd ../mcp;
rm -rf node_modules;
./scripts/setup
WS_URI="/mcp/ws" pnpm run --filter "mcp-plugin" build:multi-user
WS_URI="/mcp/ws" pnpm run --filter "mcp-plugin" build
popd;
pushd ../plugins

View File

@@ -462,3 +462,9 @@
(defn print-last-exception
[]
(some-> errors/last-exception ex/print-throwable))
(defn ^:export dbg
[o]
(app.common.pprint/pprint o {:level 100 :length 100}))

View File

@@ -10,9 +10,7 @@
"build:multi-user": "pnpm -r run build:multi-user",
"build:types": "bash ./scripts/build-types",
"start": "pnpm -r --parallel run start",
"start:multi-user": "pnpm -r --parallel --filter \"./packages/*\" run start:multi-user",
"bootstrap": "pnpm -r install && pnpm run build && pnpm run start",
"bootstrap:multi-user": "pnpm -r install && pnpm run build:multi-user && pnpm run start:multi-user",
"fmt": "prettier --write packages/",
"fmt:check": "prettier --check packages/"
},

View File

@@ -5,9 +5,7 @@
"type": "module",
"scripts": {
"start": "vite build --watch --config vite.config.ts",
"start:multi-user": "cross-env MULTI_USER_MODE=true vite build --watch --config vite.config.ts",
"build": "tsc && vite build --config vite.release.config.ts",
"build:multi-user": "tsc && cross-env MULTI_USER_MODE=true vite build --config vite.release.config.ts",
"types:check": "tsc --noEmit",
"clean": "rm -rf dist/"
},

View File

@@ -4,10 +4,6 @@ import "./style.css";
const searchParams = new URLSearchParams(window.location.search);
document.body.dataset.theme = searchParams.get("theme") ?? "light";
// Determine whether multi-user mode is enabled based on URL parameters
const isMultiUserMode = searchParams.get("multiUser") === "true";
console.log("Penpot MCP multi-user mode:", isMultiUserMode);
// WebSocket connection management
let ws: WebSocket | null = null;
const statusElement = document.getElementById("connection-status");
@@ -59,7 +55,7 @@ function connectToMcpServer(baseUrl?: string, token?: string): void {
try {
let wsUrl = baseUrl || PENPOT_MCP_WEBSOCKET_URL;
if (isMultiUserMode && token) {
if (token) {
wsUrl += `?userToken=${encodeURIComponent(token)}`;
}

View File

@@ -8,12 +8,8 @@ mcp?.setMcpStatus("connecting");
*/
const taskHandlers: TaskHandler[] = [new ExecuteCodeTaskHandler()];
// Determine whether multi-user mode is enabled based on build-time configuration
declare const IS_MULTI_USER_MODE: boolean;
const isMultiUserMode = typeof IS_MULTI_USER_MODE !== "undefined" ? IS_MULTI_USER_MODE : false;
// Open the plugin UI (main.ts)
penpot.ui.open("Penpot MCP Plugin", `?theme=${penpot.theme}&multiUser=${isMultiUserMode}`, {
penpot.ui.open("Penpot MCP Plugin", `?theme=${penpot.theme}`, {
width: 158,
height: 200,
hidden: !!mcp,

View File

@@ -2,9 +2,7 @@ import { defineConfig } from "vite";
import livePreview from "vite-live-preview";
let WS_URI = process.env.WS_URI || "http://localhost:4402";
let MULTI_USER_MODE = process.env.MULTI_USER_MODE === "true";
console.log("Will define IS_MULTI_USER_MODE as:", JSON.stringify(MULTI_USER_MODE));
console.log("Will define PENPOT_MCP_WEBSOCKET_URL as:", JSON.stringify(WS_URI));
export default defineConfig({
@@ -37,7 +35,6 @@ export default defineConfig({
allowedHosts: [],
},
define: {
IS_MULTI_USER_MODE: JSON.stringify(process.env.MULTI_USER_MODE === "true"),
PENPOT_MCP_WEBSOCKET_URL: JSON.stringify(WS_URI),
},
});

View File

@@ -7,7 +7,6 @@
"scripts": {
"build:server": "esbuild src/index.ts --bundle --platform=node --target=node18 --format=esm --outfile=dist/index.js --external:@modelcontextprotocol/* --external:ws --external:express --external:class-transformer --external:class-validator --external:reflect-metadata --external:pino --external:pino-pretty --external:js-yaml --external:sharp",
"build": "pnpm run build:server && node scripts/copy-resources.js",
"build:multi-user": "pnpm run build",
"build:types": "tsc --emitDeclarationOnly --outDir dist",
"start": "node dist/index.js",
"start:multi-user": "node dist/index.js --multi-user",

View File

@@ -25,7 +25,7 @@ set -e
popd
pnpm -r --filter "!mcp-plugin" install;
pnpm -r --filter "mcp-server" run build:multi-user;
pnpm -r --filter "mcp-server" run build;
rsync -avr packages/server/dist/ ./dist/;