localwp-mcp 0.1.7 → 0.1.9

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.
@@ -0,0 +1,69 @@
1
+ import { rm } from "fs/promises";
2
+ import { z } from "zod";
3
+ import { config } from "../config.js";
4
+ import { StructuredToolError } from "../errors.js";
5
+ import { buildSiteContext, summarizeSite } from "../local-sites.js";
6
+ import { createErrorToolResult, createJsonToolResult } from "../results.js";
7
+ import { siteSelectorSchema } from "../tool-schemas.js";
8
+ import { runWpCliArgs } from "../wp-cli.js";
9
+ import { prepareWpPhpSource } from "../wp-runtime.js";
10
+ export function registerExecuteWpPhpTool(server) {
11
+ server.registerTool("execute_wp_php", {
12
+ description: "Runs a high-trust PHP snippet or PHP file inside the selected LocalWP site's loaded WordPress runtime using a file-based eval flow. Requires the 'full-access' profile.",
13
+ inputSchema: {
14
+ ...siteSelectorSchema,
15
+ phpCode: z
16
+ .string()
17
+ .optional()
18
+ .describe("Optional inline PHP to run after WordPress loads. If you omit '<?php', the tool will prepend it for you."),
19
+ filePath: z
20
+ .string()
21
+ .optional()
22
+ .describe("Optional absolute path or working-directory-relative path to a readable .php file inside the current workspace or selected Local site."),
23
+ },
24
+ }, async ({ siteId, siteName, phpCode, filePath }) => {
25
+ try {
26
+ if (config.profile !== "full-access") {
27
+ throw new StructuredToolError({
28
+ error: "profile_required",
29
+ message: "execute_wp_php requires LOCALWP_MCP_PROFILE=full-access because it executes PHP inside the loaded WordPress runtime.",
30
+ requiredProfile: "full-access",
31
+ accessProfile: config.profile,
32
+ });
33
+ }
34
+ const context = await buildSiteContext({ siteId, siteName });
35
+ const source = await prepareWpPhpSource({
36
+ siteRoot: context.site.absolutePath,
37
+ phpCode,
38
+ filePath,
39
+ });
40
+ try {
41
+ const result = await runWpCliArgs(context, ["eval-file", source.absolutePath], {
42
+ skipPermissionCheck: true,
43
+ });
44
+ return createJsonToolResult({
45
+ site: summarizeSite(context.site),
46
+ selectionMethod: context.selectionMethod,
47
+ accessProfile: config.profile,
48
+ executionEngine: "wp eval-file",
49
+ sourceMode: source.mode,
50
+ sourcePath: source.sourcePath,
51
+ stdout: result.stdout,
52
+ stderr: result.stderr,
53
+ });
54
+ }
55
+ finally {
56
+ if (source.cleanupPath) {
57
+ await rm(source.cleanupPath, {
58
+ recursive: true,
59
+ force: true,
60
+ });
61
+ }
62
+ }
63
+ }
64
+ catch (error) {
65
+ return createErrorToolResult(error);
66
+ }
67
+ });
68
+ }
69
+ //# sourceMappingURL=execute-wp-php.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute-wp-php.js","sourceRoot":"","sources":["../../src/tools/execute-wp-php.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,yKAAyK;QAC3K,WAAW,EAAE;YACX,GAAG,kBAAkB;YACrB,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,0GAA0G,CAC3G;YACH,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wIAAwI,CACzI;SACJ;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChD,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;gBACrC,MAAM,IAAI,mBAAmB,CAAC;oBAC5B,KAAK,EAAE,kBAAkB;oBACzB,OAAO,EACL,sHAAsH;oBACxH,eAAe,EAAE,aAAa;oBAC9B,aAAa,EAAE,MAAM,CAAC,OAAO;iBAC9B,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC;gBACtC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY;gBACnC,OAAO;gBACP,QAAQ;aACT,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAC/B,OAAO,EACP,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,EAClC;oBACE,mBAAmB,EAAE,IAAI;iBAC1B,CACF,CAAC;gBAEF,OAAO,oBAAoB,CAAC;oBAC1B,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;oBACjC,eAAe,EAAE,OAAO,CAAC,eAAe;oBACxC,aAAa,EAAE,MAAM,CAAC,OAAO;oBAC7B,eAAe,EAAE,cAAc;oBAC/B,UAAU,EAAE,MAAM,CAAC,IAAI;oBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;oBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;YACL,CAAC;oBAAS,CAAC;gBACT,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBACvB,MAAM,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;wBAC3B,SAAS,EAAE,IAAI;wBACf,KAAK,EAAE,IAAI;qBACZ,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -5,6 +5,7 @@ import { registerDbImportTool } from "./db-import.js";
5
5
  import { registerDeleteBackupTool } from "./delete-backup.js";
6
6
  import { registerDeleteSiteFileTool } from "./delete-site-file.js";
7
7
  import { registerExecuteWpCliTool } from "./execute-wp-cli.js";
8
+ import { registerExecuteWpPhpTool } from "./execute-wp-php.js";
8
9
  import { registerListBackupsTool } from "./list-backups.js";
9
10
  import { registerListSiteFilesTool } from "./list-site-files.js";
10
11
  import { registerLocalDoctorTool } from "./local-doctor.js";
@@ -22,6 +23,7 @@ import { registerRestoreBackupTool } from "./restore-backup.js";
22
23
  import { registerSearchSiteFilesTool } from "./search-site-files.js";
23
24
  import { registerStartLocalSiteTool } from "./start-local-site.js";
24
25
  import { registerStopLocalSiteTool } from "./stop-local-site.js";
26
+ import { registerWpRuntimeCallTools } from "./wp-runtime-call.js";
25
27
  import { registerWriteSiteFileTool } from "./write-site-file.js";
26
28
  export function registerTools(server) {
27
29
  registerListLocalSitesTool(server);
@@ -49,5 +51,7 @@ export function registerTools(server) {
49
51
  registerMysqlExecuteTool(server);
50
52
  registerMysqlSchemaTool(server);
51
53
  registerExecuteWpCliTool(server);
54
+ registerExecuteWpPhpTool(server);
55
+ registerWpRuntimeCallTools(server);
52
56
  }
53
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,iCAAiC,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,UAAU,aAAa,CAAC,MAAiB;IAC7C,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,4BAA4B,CAAC,MAAM,CAAC,CAAC;IACrC,iCAAiC,CAAC,MAAM,CAAC,CAAC;IAC1C,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,2BAA2B,CAAC,MAAM,CAAC,CAAC;IACpC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACzC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAClC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,wBAAwB,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { config } from "../config.js";
2
- import { resolveLocalTooling } from "../local-tooling.js";
3
2
  import { buildSiteContext, summarizeSite } from "../local-sites.js";
3
+ import { describeMysqlExecution } from "../mysql.js";
4
4
  import { createErrorToolResult, createJsonToolResult } from "../results.js";
5
5
  import { siteSelectorSchema } from "../tool-schemas.js";
6
+ import { resolveWpCliExecution } from "../wp-cli.js";
6
7
  export function registerLocalSiteInfoTool(server) {
7
8
  server.registerTool("local_site_info", {
8
9
  description: "Resolves one LocalWP site and returns its WordPress, PHP, and MySQL runtime details.",
@@ -15,7 +16,8 @@ export function registerLocalSiteInfoTool(server) {
15
16
  }, async ({ siteId, siteName }) => {
16
17
  try {
17
18
  const context = await buildSiteContext({ siteId, siteName });
18
- const tooling = await resolveLocalTooling();
19
+ const wpCliExecution = await resolveWpCliExecution(context);
20
+ const mysqlExecution = describeMysqlExecution(context);
19
21
  return createJsonToolResult({
20
22
  site: summarizeSite(context.site),
21
23
  platform: config.platform,
@@ -32,8 +34,49 @@ export function registerLocalSiteInfoTool(server) {
32
34
  mysqlSocket: context.mysqlSocket,
33
35
  mysqlBinary: context.mysql.binaryPath,
34
36
  phpBinary: context.php.binaryPath,
35
- wpCliPhar: tooling.wpCliPhar,
36
- wpCliConfig: tooling.wpCliConfig,
37
+ wpCliPhar: wpCliExecution.tooling.wpCliPhar,
38
+ wpCliConfig: wpCliExecution.tooling.wpCliConfig,
39
+ wpCliRuntime: {
40
+ command: wpCliExecution.command,
41
+ argsPrefix: wpCliExecution.argsPrefix,
42
+ cwd: wpCliExecution.cwd,
43
+ envOverrides: {
44
+ PHPRC: context.phpConfigDir,
45
+ WP_CLI_DISABLE_AUTO_CHECK_UPDATE: "1",
46
+ WP_CLI_CONFIG_PATH: wpCliExecution.tooling.wpCliConfig,
47
+ PATHPrefixEntries: wpCliExecution.pathEntries,
48
+ MAGICK_CODER_MODULE_PATH: context.magickCoderModulePath || null,
49
+ },
50
+ note: "MCP invokes WP-CLI through the Local-managed PHP runtime. Plain shell 'wp' may fail if it does not use the same PHP binary, PHPRC, config, and socket-aware Local context.",
51
+ },
52
+ mysqlRuntime: {
53
+ command: mysqlExecution.command,
54
+ argsPrefix: mysqlExecution.argsPrefix,
55
+ database: mysqlExecution.database,
56
+ cwd: mysqlExecution.cwd,
57
+ },
58
+ shellReproduction: {
59
+ wpCli: {
60
+ env: {
61
+ PHPRC: context.phpConfigDir,
62
+ WP_CLI_DISABLE_AUTO_CHECK_UPDATE: "1",
63
+ WP_CLI_CONFIG_PATH: wpCliExecution.tooling.wpCliConfig,
64
+ },
65
+ command: [
66
+ wpCliExecution.command,
67
+ ...wpCliExecution.argsPrefix,
68
+ ],
69
+ cwd: wpCliExecution.cwd,
70
+ },
71
+ mysql: {
72
+ command: [
73
+ mysqlExecution.command,
74
+ ...mysqlExecution.argsPrefix,
75
+ mysqlExecution.database,
76
+ ],
77
+ cwd: mysqlExecution.cwd,
78
+ },
79
+ },
37
80
  selectionMethod: context.selectionMethod,
38
81
  accessProfile: config.profile,
39
82
  });
@@ -1 +1 @@
1
- {"version":3,"file":"local-site-info.js","sourceRoot":"","sources":["../../src/tools/local-site-info.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,sFAAsF;QACxF,WAAW,EAAE;YACX,GAAG,kBAAkB;SACtB;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;SACnB;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAE5C,OAAO,oBAAoB,CAAC;gBAC1B,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,aAAa,EAAE,OAAO,CAAC,MAAM;gBAC7B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;gBACvD,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;gBAC7D,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;gBACrC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;gBACjC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,aAAa,EAAE,MAAM,CAAC,OAAO;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"local-site-info.js","sourceRoot":"","sources":["../../src/tools/local-site-info.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,sFAAsF;QACxF,WAAW,EAAE;YACX,GAAG,kBAAkB;SACtB;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;SACnB;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC7D,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,cAAc,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;YAEvD,OAAO,oBAAoB,CAAC;gBAC1B,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,aAAa,EAAE,OAAO,CAAC,MAAM;gBAC7B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;gBACvD,0BAA0B,EAAE,MAAM,CAAC,0BAA0B;gBAC7D,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;gBAC5C,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,UAAU;gBACrC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU;gBACjC,SAAS,EAAE,cAAc,CAAC,OAAO,CAAC,SAAS;gBAC3C,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW;gBAC/C,YAAY,EAAE;oBACZ,OAAO,EAAE,cAAc,CAAC,OAAO;oBAC/B,UAAU,EAAE,cAAc,CAAC,UAAU;oBACrC,GAAG,EAAE,cAAc,CAAC,GAAG;oBACvB,YAAY,EAAE;wBACZ,KAAK,EAAE,OAAO,CAAC,YAAY;wBAC3B,gCAAgC,EAAE,GAAG;wBACrC,kBAAkB,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW;wBACtD,iBAAiB,EAAE,cAAc,CAAC,WAAW;wBAC7C,wBAAwB,EAAE,OAAO,CAAC,qBAAqB,IAAI,IAAI;qBAChE;oBACD,IAAI,EACF,4KAA4K;iBAC/K;gBACD,YAAY,EAAE;oBACZ,OAAO,EAAE,cAAc,CAAC,OAAO;oBAC/B,UAAU,EAAE,cAAc,CAAC,UAAU;oBACrC,QAAQ,EAAE,cAAc,CAAC,QAAQ;oBACjC,GAAG,EAAE,cAAc,CAAC,GAAG;iBACxB;gBACD,iBAAiB,EAAE;oBACjB,KAAK,EAAE;wBACL,GAAG,EAAE;4BACH,KAAK,EAAE,OAAO,CAAC,YAAY;4BAC3B,gCAAgC,EAAE,GAAG;4BACrC,kBAAkB,EAAE,cAAc,CAAC,OAAO,CAAC,WAAW;yBACvD;wBACD,OAAO,EAAE;4BACP,cAAc,CAAC,OAAO;4BACtB,GAAG,cAAc,CAAC,UAAU;yBAC7B;wBACD,GAAG,EAAE,cAAc,CAAC,GAAG;qBACxB;oBACD,KAAK,EAAE;wBACL,OAAO,EAAE;4BACP,cAAc,CAAC,OAAO;4BACtB,GAAG,cAAc,CAAC,UAAU;4BAC5B,cAAc,CAAC,QAAQ;yBACxB;wBACD,GAAG,EAAE,cAAc,CAAC,GAAG;qBACxB;iBACF;gBACD,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,aAAa,EAAE,MAAM,CAAC,OAAO;aAC9B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerWpRuntimeCallTools(server: McpServer): void;
@@ -0,0 +1,114 @@
1
+ import { rm } from "fs/promises";
2
+ import { z } from "zod";
3
+ import { config } from "../config.js";
4
+ import { buildSiteContext, summarizeSite } from "../local-sites.js";
5
+ import { createErrorToolResult, createJsonToolResult } from "../results.js";
6
+ import { siteSelectorSchema } from "../tool-schemas.js";
7
+ import { runWpCliArgs } from "../wp-cli.js";
8
+ import { extractWpRuntimeCallPayload, parseWpRuntimeArgsJson, prepareWpRuntimeCallFiles, } from "../wp-runtime.js";
9
+ export function registerWpRuntimeCallTools(server) {
10
+ registerWpCallFunctionTool(server);
11
+ registerWpCallStaticMethodTool(server);
12
+ }
13
+ function registerWpCallFunctionTool(server) {
14
+ server.registerTool("wp_call_function", {
15
+ description: "Runs a read-oriented function call inside the selected LocalWP site's loaded WordPress runtime using explicit JSON arguments and best-effort read-only guardrails.",
16
+ inputSchema: {
17
+ ...siteSelectorSchema,
18
+ functionName: z
19
+ .string()
20
+ .min(1)
21
+ .describe("Function name to call inside the loaded WordPress runtime, for example 'wp_get_theme' or 'MyNamespace\\\\debug_helper'."),
22
+ argsJson: z
23
+ .string()
24
+ .optional()
25
+ .describe("Optional JSON array of positional arguments to pass to the function."),
26
+ },
27
+ annotations: {
28
+ readOnlyHint: true,
29
+ },
30
+ }, async ({ siteId, siteName, functionName, argsJson }) => {
31
+ try {
32
+ return await executeReadOnlyRuntimeCall({ siteId, siteName }, {
33
+ callType: "function",
34
+ functionName,
35
+ args: parseWpRuntimeArgsJson(argsJson),
36
+ });
37
+ }
38
+ catch (error) {
39
+ return createErrorToolResult(error);
40
+ }
41
+ });
42
+ }
43
+ function registerWpCallStaticMethodTool(server) {
44
+ server.registerTool("wp_call_static_method", {
45
+ description: "Runs a read-oriented static method call inside the selected LocalWP site's loaded WordPress runtime using explicit JSON arguments and best-effort read-only guardrails.",
46
+ inputSchema: {
47
+ ...siteSelectorSchema,
48
+ className: z
49
+ .string()
50
+ .min(1)
51
+ .describe("Class name to call, for example 'WebhookService' or 'Vendor\\\\Plugin\\\\WebhookService'."),
52
+ methodName: z
53
+ .string()
54
+ .min(1)
55
+ .describe("Static method name to call."),
56
+ argsJson: z
57
+ .string()
58
+ .optional()
59
+ .describe("Optional JSON array of positional arguments to pass to the static method."),
60
+ },
61
+ annotations: {
62
+ readOnlyHint: true,
63
+ },
64
+ }, async ({ siteId, siteName, className, methodName, argsJson }) => {
65
+ try {
66
+ return await executeReadOnlyRuntimeCall({ siteId, siteName }, {
67
+ callType: "static_method",
68
+ className,
69
+ methodName,
70
+ args: parseWpRuntimeArgsJson(argsJson),
71
+ });
72
+ }
73
+ catch (error) {
74
+ return createErrorToolResult(error);
75
+ }
76
+ });
77
+ }
78
+ async function executeReadOnlyRuntimeCall(selection, options) {
79
+ const context = await buildSiteContext(selection);
80
+ const files = await prepareWpRuntimeCallFiles(options);
81
+ try {
82
+ const result = await runWpCliArgs(context, [`--require=${files.guardPath}`, "eval-file", files.scriptPath], {
83
+ skipFlagValidation: true,
84
+ skipPermissionCheck: true,
85
+ });
86
+ const parsed = extractWpRuntimeCallPayload(result.stdout);
87
+ return createJsonToolResult({
88
+ site: summarizeSite(context.site),
89
+ selectionMethod: context.selectionMethod,
90
+ accessProfile: config.profile,
91
+ inspectionMode: "best-effort-read-only",
92
+ executionEngine: "wp eval-file with read-only guard",
93
+ callType: parsed.payload.callType,
94
+ callable: parsed.payload.callable,
95
+ args: parsed.payload.args,
96
+ resultType: parsed.payload.resultType,
97
+ result: parsed.payload.result,
98
+ stdout: parsed.remainingStdout || null,
99
+ stderr: result.stderr || null,
100
+ caveats: [
101
+ "This tool is designed for inspection and adds best-effort read-only guardrails.",
102
+ "It blocks common SQL writes on the main WordPress database connection plus outgoing HTTP and email.",
103
+ "It is not a full PHP sandbox, so custom side effects outside those paths are still theoretically possible.",
104
+ ],
105
+ });
106
+ }
107
+ finally {
108
+ await rm(files.cleanupPath, {
109
+ recursive: true,
110
+ force: true,
111
+ });
112
+ }
113
+ }
114
+ //# sourceMappingURL=wp-runtime-call.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wp-runtime-call.js","sourceRoot":"","sources":["../../src/tools/wp-runtime-call.ts"],"names":[],"mappings":"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"}
package/dist/wp-cli.d.ts CHANGED
@@ -1,14 +1,24 @@
1
1
  import type { SiteContext } from "./types.js";
2
2
  export declare function runWpCli(context: SiteContext, command: string, options?: {
3
3
  skipPermissionCheck?: boolean;
4
+ skipFlagValidation?: boolean;
4
5
  }): Promise<{
5
6
  stdout: string;
6
7
  stderr: string;
7
8
  }>;
8
9
  export declare function runWpCliArgs(context: SiteContext, rawArgs: string[], options?: {
9
10
  skipPermissionCheck?: boolean;
11
+ skipFlagValidation?: boolean;
10
12
  }): Promise<{
11
13
  stdout: string;
12
14
  stderr: string;
13
15
  }>;
16
+ export declare function resolveWpCliExecution(context: SiteContext): Promise<{
17
+ tooling: import("./types.js").ResolvedLocalTooling;
18
+ command: string;
19
+ argsPrefix: string[];
20
+ cwd: string;
21
+ env: NodeJS.ProcessEnv;
22
+ pathEntries: string[];
23
+ }>;
14
24
  export declare function tokenizeCommand(command: string): string[];
package/dist/wp-cli.js CHANGED
@@ -14,16 +14,16 @@ export async function runWpCliArgs(context, rawArgs, options = {}) {
14
14
  if (args.length === 0) {
15
15
  throw new Error("Please pass WP-CLI arguments only, for example 'plugin list'.");
16
16
  }
17
- assertAllowedWpFlags(args);
17
+ if (!options.skipFlagValidation) {
18
+ assertAllowedWpFlags(args);
19
+ }
18
20
  if (!options.skipPermissionCheck) {
19
21
  assertWpCliPermissions(args);
20
22
  }
21
- const tooling = await resolveLocalTooling();
22
- const env = buildWpCliEnv(context, tooling);
23
- const processArgs = [tooling.wpCliPhar, `--path=${context.wpRoot}`, ...args];
24
- const result = await spawnCommand(context.php.binaryPath, processArgs, {
25
- cwd: context.wpRoot,
26
- env,
23
+ const execution = await resolveWpCliExecution(context);
24
+ const result = await spawnCommand(execution.command, [...execution.argsPrefix, ...args], {
25
+ cwd: execution.cwd,
26
+ env: execution.env,
27
27
  });
28
28
  if (result.timedOut) {
29
29
  throw new Error(`WP-CLI timed out after ${config.defaultTimeoutMs / 1000}s for site '${context.site.name}'.`);
@@ -42,38 +42,37 @@ export async function runWpCliArgs(context, rawArgs, options = {}) {
42
42
  stderr: result.stderr,
43
43
  };
44
44
  }
45
- function buildWpCliEnv(context, tooling) {
45
+ export async function resolveWpCliExecution(context) {
46
+ const tooling = await resolveLocalTooling();
47
+ const pathEntries = buildWpCliPathEntries(context, tooling);
48
+ return {
49
+ tooling,
50
+ command: context.php.binaryPath,
51
+ argsPrefix: [tooling.wpCliPhar, `--path=${context.wpRoot}`],
52
+ cwd: context.wpRoot,
53
+ env: buildWpCliEnv(context, tooling, pathEntries),
54
+ pathEntries,
55
+ };
56
+ }
57
+ function buildWpCliEnv(context, tooling, pathEntries) {
58
+ const env = {
59
+ ...process.env,
60
+ PHPRC: context.phpConfigDir,
61
+ WP_CLI_DISABLE_AUTO_CHECK_UPDATE: "1",
62
+ PATH: [...pathEntries, process.env.PATH].filter(Boolean).join(path.delimiter),
63
+ };
64
+ if (tooling.wpCliConfig) {
65
+ env.WP_CLI_CONFIG_PATH = tooling.wpCliConfig;
66
+ }
46
67
  const phpRuntimeDir = context.php.platformDirName
47
68
  ? path.join(context.php.packageDir, "bin", context.php.platformDirName)
48
69
  : path.dirname(context.php.binaryPath);
49
70
  const imageMagickDir = config.platform === "win32" && context.php.platformDirName
50
71
  ? path.join(phpRuntimeDir, "ImageMagick")
51
72
  : null;
52
- const ghostscriptBinDir = config.platform === "win32" && context.php.platformDirName
53
- ? path.join(phpRuntimeDir, "ghostscript", "bin")
54
- : null;
55
73
  const ghostscriptLibDir = config.platform === "win32" && context.php.platformDirName
56
74
  ? path.join(phpRuntimeDir, "ghostscript", "Resource", "Init")
57
75
  : null;
58
- const env = {
59
- ...process.env,
60
- PHPRC: context.phpConfigDir,
61
- WP_CLI_DISABLE_AUTO_CHECK_UPDATE: "1",
62
- PATH: [
63
- imageMagickDir,
64
- ghostscriptBinDir,
65
- path.dirname(context.mysql.binaryPath),
66
- path.dirname(context.php.binaryPath),
67
- path.dirname(tooling.wpCliPhar),
68
- ...tooling.helperBinDirs,
69
- process.env.PATH,
70
- ]
71
- .filter(Boolean)
72
- .join(path.delimiter),
73
- };
74
- if (tooling.wpCliConfig) {
75
- env.WP_CLI_CONFIG_PATH = tooling.wpCliConfig;
76
- }
77
76
  if (context.magickCoderModulePath) {
78
77
  env.MAGICK_CODER_MODULE_PATH = context.magickCoderModulePath;
79
78
  }
@@ -85,6 +84,25 @@ function buildWpCliEnv(context, tooling) {
85
84
  }
86
85
  return env;
87
86
  }
87
+ function buildWpCliPathEntries(context, tooling) {
88
+ const phpRuntimeDir = context.php.platformDirName
89
+ ? path.join(context.php.packageDir, "bin", context.php.platformDirName)
90
+ : path.dirname(context.php.binaryPath);
91
+ const imageMagickDir = config.platform === "win32" && context.php.platformDirName
92
+ ? path.join(phpRuntimeDir, "ImageMagick")
93
+ : null;
94
+ const ghostscriptBinDir = config.platform === "win32" && context.php.platformDirName
95
+ ? path.join(phpRuntimeDir, "ghostscript", "bin")
96
+ : null;
97
+ return [
98
+ imageMagickDir,
99
+ ghostscriptBinDir,
100
+ path.dirname(context.mysql.binaryPath),
101
+ path.dirname(context.php.binaryPath),
102
+ path.dirname(tooling.wpCliPhar),
103
+ ...tooling.helperBinDirs,
104
+ ].filter(Boolean);
105
+ }
88
106
  export function tokenizeCommand(command) {
89
107
  const input = command.trim();
90
108
  if (!input) {
@@ -1 +1 @@
1
- {"version":3,"file":"wp-cli.js","sourceRoot":"","sources":["../src/wp-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wp-cli.js","sourceRoot":"","sources":["../src/wp-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ export interface PreparedWpPhpSource {
2
+ mode: "inline" | "file";
3
+ absolutePath: string;
4
+ sourcePath: string | null;
5
+ cleanupPath: string | null;
6
+ }
7
+ export interface PreparedWpRuntimeCallFiles {
8
+ cleanupPath: string;
9
+ guardPath: string;
10
+ scriptPath: string;
11
+ }
12
+ export interface WpRuntimeCallResultPayload {
13
+ ok: boolean;
14
+ callType: "function" | "static_method";
15
+ callable: string;
16
+ args: unknown[];
17
+ resultType: string;
18
+ result: unknown;
19
+ }
20
+ export declare function prepareWpPhpSource(options: {
21
+ siteRoot: string;
22
+ phpCode?: string;
23
+ filePath?: string;
24
+ cwd?: string;
25
+ }): Promise<PreparedWpPhpSource>;
26
+ export declare function normalizeInlinePhpCode(phpCode: string): string;
27
+ export declare function parseWpRuntimeArgsJson(argsJson: string | undefined): any[];
28
+ export declare function assertPhpFunctionIdentifier(functionName: string): void;
29
+ export declare function assertPhpMethodIdentifier(methodName: string): void;
30
+ export declare function assertPhpClassIdentifier(className: string): void;
31
+ export declare function prepareWpRuntimeCallFiles(options: {
32
+ callType: "function" | "static_method";
33
+ functionName?: string;
34
+ className?: string;
35
+ methodName?: string;
36
+ args: unknown[];
37
+ }): Promise<{
38
+ cleanupPath: string;
39
+ guardPath: string;
40
+ scriptPath: string;
41
+ }>;
42
+ export declare function extractWpRuntimeCallPayload(stdout: string): {
43
+ payload: WpRuntimeCallResultPayload;
44
+ remainingStdout: string;
45
+ };
46
+ export declare function resolveTrustedWpPhpFilePath(siteRoot: string, requestedPath: string, options?: {
47
+ cwd?: string;
48
+ }): Promise<string>;