@loopops/mcp-server 2.7.0 → 2.8.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.
@@ -343,4 +343,59 @@ export function registerConfigTools(server, allowed) {
343
343
  branch: z.string().optional().describe("Branch to read YAML from. Default: main."),
344
344
  }, safeTool(async ({ mode, dryRun, useAgent, branch }) => trpcMutation("mcp.assignTerritories", { mode, dryRun, useAgent, branch })));
345
345
  }
346
+ if (allowed.has("show_govern_config")) {
347
+ server.tool("show_govern_config", [
348
+ "Read a YAML file under `config/govern/`. Most-common use: viewing",
349
+ "`schedules` to see what crons exist + their enabled/disabled state.",
350
+ "Other files: `actions`, `agent`, `audit_config`, `compliance_rules`,",
351
+ "`health_monitoring`.",
352
+ ].join(" "), {
353
+ file: z
354
+ .enum([
355
+ "schedules",
356
+ "actions",
357
+ "agent",
358
+ "audit_config",
359
+ "compliance_rules",
360
+ "health_monitoring",
361
+ ])
362
+ .describe("Which file under config/govern/ to read. `schedules` is the cron table."),
363
+ }, safeTool(async (input) => trpcQuery("mcp.showGovernConfig", input)));
364
+ }
365
+ if (allowed.has("update_govern_config")) {
366
+ server.tool("update_govern_config", [
367
+ "Edit a Company Operations governance YAML config (config/govern/*.yaml)",
368
+ "by committing the new content to the repo via the GitHub API.",
369
+ "Most-common use: flipping a cron entry's `enabled: true/false` in",
370
+ "`schedules.yaml`. Workflow: read with show_govern_config, edit, send",
371
+ "back. Commit goes to target branch (default `main`); Vercel auto-deploys.",
372
+ "Schedule changes take effect at the next scheduler tick. Adding or",
373
+ "removing a schedule (not just toggling) also requires a matching",
374
+ "vercel.json edit.",
375
+ ].join(" "), {
376
+ file: z
377
+ .enum([
378
+ "schedules",
379
+ "actions",
380
+ "agent",
381
+ "audit_config",
382
+ "compliance_rules",
383
+ "health_monitoring",
384
+ ])
385
+ .describe("Which file under config/govern/ to update. `schedules` is the cron table."),
386
+ content: z
387
+ .string()
388
+ .min(1)
389
+ .describe("Full new YAML content. The tool replaces the file wholesale — read with show_govern_config first, edit, send back. Don't drop unrelated entries."),
390
+ message: z
391
+ .string()
392
+ .min(3)
393
+ .max(72)
394
+ .describe("Git commit message. Convention: `govern: <what changed and why>` (e.g. 'govern: disable cg_sync_clickhouse cron temporarily')."),
395
+ branch: z
396
+ .string()
397
+ .optional()
398
+ .describe("Target branch. Default: main. Pass a feature branch for review-before-merge."),
399
+ }, safeTool(async (input) => trpcMutation("mcp.updateGovernConfig", input)));
400
+ }
346
401
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@loopops/mcp-server",
3
- "version": "2.7.0",
3
+ "version": "2.8.0",
4
4
  "description": "Loop Operations MCP Server — AI skills for RevOps",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",