@fruition/fcp-mcp-server 1.8.0 → 1.10.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.
Files changed (2) hide show
  1. package/dist/index.js +60 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -329,6 +329,10 @@ class FCPClient {
329
329
  body: JSON.stringify(options || {}),
330
330
  });
331
331
  }
332
+ // Local Setup Guide
333
+ async getLocalSetupGuide(siteId) {
334
+ return this.fetch(`/api/sites/${siteId}/local-setup`);
335
+ }
332
336
  // Shield Domain Management
333
337
  async shieldListDomains(filters) {
334
338
  const params = new URLSearchParams();
@@ -415,6 +419,9 @@ class FCPClient {
415
419
  body: JSON.stringify(input),
416
420
  });
417
421
  }
422
+ async backupSanitizeStatus(jobId) {
423
+ return this.fetch(`/api/backup/download/status?jobId=${encodeURIComponent(jobId)}`);
424
+ }
418
425
  async backupListPairings(siteId) {
419
426
  const params = new URLSearchParams();
420
427
  if (siteId)
@@ -1889,6 +1896,20 @@ const TOOLS = [
1889
1896
  required: ['website_id'],
1890
1897
  },
1891
1898
  },
1899
+ {
1900
+ name: 'fcp_get_local_setup_guide',
1901
+ description: 'Generate a local development setup guide for a website. Returns CMS-specific instructions for cloning, DDEV configuration, .env template, database import, and verification steps. Works for Bedrock WordPress, standard WordPress, and Drupal sites.',
1902
+ inputSchema: {
1903
+ type: 'object',
1904
+ properties: {
1905
+ website_id: {
1906
+ type: 'number',
1907
+ description: 'The website ID to generate setup guide for',
1908
+ },
1909
+ },
1910
+ required: ['website_id'],
1911
+ },
1912
+ },
1892
1913
  {
1893
1914
  name: 'fcp_create_site',
1894
1915
  description: 'Create a new website with optional staging environments. Production site is created first, then staging sites are linked to it.',
@@ -2294,7 +2315,7 @@ const TOOLS = [
2294
2315
  },
2295
2316
  {
2296
2317
  name: 'fcp_backup_download_prepared',
2297
- description: 'Prepare a backup download with optional sanitization. Returns a presigned download URL with metadata.',
2318
+ description: 'Prepare a backup download with optional sanitization. For production backups, sanitization is the default — this returns a jobId to poll via fcp_backup_sanitize_status. For non-production backups, returns a presigned download URL directly.',
2298
2319
  inputSchema: {
2299
2320
  type: 'object',
2300
2321
  properties: {
@@ -2316,12 +2337,26 @@ const TOOLS = [
2316
2337
  },
2317
2338
  sanitize: {
2318
2339
  type: 'boolean',
2319
- description: 'Whether to sanitize production data (optional)',
2340
+ description: 'Whether to sanitize production data. Defaults to true for production environments. Set to false to skip sanitization (non-production only).',
2320
2341
  },
2321
2342
  },
2322
2343
  required: ['siteId', 'backupId', 'downloadType'],
2323
2344
  },
2324
2345
  },
2346
+ {
2347
+ name: 'fcp_backup_sanitize_status',
2348
+ description: 'Check the status of a database sanitization job. Poll this after fcp_backup_download_prepared returns a jobId. When status is "completed", the response includes a presigned downloadUrl for the sanitized backup.',
2349
+ inputSchema: {
2350
+ type: 'object',
2351
+ properties: {
2352
+ jobId: {
2353
+ type: 'string',
2354
+ description: 'The sanitization job ID returned by fcp_backup_download_prepared',
2355
+ },
2356
+ },
2357
+ required: ['jobId'],
2358
+ },
2359
+ },
2325
2360
  {
2326
2361
  name: 'fcp_backup_list_pairings',
2327
2362
  description: 'List site pairings for backup management. Optionally filter by site ID. Shows production/staging/dev relationships grouped by account.',
@@ -2610,6 +2645,22 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
2610
2645
  ],
2611
2646
  };
2612
2647
  }
2648
+ case 'fcp_get_local_setup_guide': {
2649
+ const { website_id } = args;
2650
+ const result = await client.getLocalSetupGuide(website_id);
2651
+ // Return the guide as readable text, with structured data as JSON
2652
+ const guide = result.guide || '';
2653
+ const siteInfo = result.site || {};
2654
+ const ddevInfo = result.ddev || {};
2655
+ return {
2656
+ content: [
2657
+ {
2658
+ type: 'text',
2659
+ text: guide + '\n\n---\n\n**Structured Data:**\n```json\n' + JSON.stringify({ site: siteInfo, ddev: ddevInfo }, null, 2) + '\n```',
2660
+ },
2661
+ ],
2662
+ };
2663
+ }
2613
2664
  case 'fcp_create_site': {
2614
2665
  const { account_id, domain, cms, url_full, git_provider, git_link, hosting_provider, fru_hosted, k8s_cluster, k8s_namespace, staging, } = args;
2615
2666
  const result = await client.createSite({ account_id, domain, cms, url_full, git_provider, git_link, hosting_provider, fru_hosted, k8s_cluster, k8s_namespace }, staging);
@@ -3330,6 +3381,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
3330
3381
  content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
3331
3382
  };
3332
3383
  }
3384
+ case 'fcp_backup_sanitize_status': {
3385
+ const { jobId } = args;
3386
+ const result = await client.backupSanitizeStatus(jobId);
3387
+ return {
3388
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
3389
+ };
3390
+ }
3333
3391
  case 'fcp_backup_list_pairings': {
3334
3392
  const { siteId } = args;
3335
3393
  const result = await client.backupListPairings(siteId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fruition/fcp-mcp-server",
3
- "version": "1.8.0",
3
+ "version": "1.10.0",
4
4
  "description": "MCP Server for FCP Launch Coordination System - enables Claude Code to interact with FCP launches and track development time",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",