@fruition/fcp-mcp-server 1.12.0 → 1.13.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.
- package/dist/index.js +79 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -440,6 +440,19 @@ class FCPClient {
|
|
|
440
440
|
method: 'DELETE',
|
|
441
441
|
});
|
|
442
442
|
}
|
|
443
|
+
// Kinsta backup methods (separate S3 bucket: kinsta-backups-fru)
|
|
444
|
+
async kinstaBackupListSites() {
|
|
445
|
+
return this.fetch('/api/backup/kinsta?action=sites');
|
|
446
|
+
}
|
|
447
|
+
async kinstaBackupListBackups(siteId) {
|
|
448
|
+
return this.fetch(`/api/backup/kinsta?siteId=${siteId}`);
|
|
449
|
+
}
|
|
450
|
+
async kinstaBackupDownload(s3Key) {
|
|
451
|
+
return this.fetch('/api/backup/kinsta', {
|
|
452
|
+
method: 'POST',
|
|
453
|
+
body: JSON.stringify({ s3Key }),
|
|
454
|
+
});
|
|
455
|
+
}
|
|
443
456
|
}
|
|
444
457
|
// Unroo API Client
|
|
445
458
|
// Supports two modes:
|
|
@@ -2050,6 +2063,14 @@ const TOOLS = [
|
|
|
2050
2063
|
type: 'string',
|
|
2051
2064
|
description: 'Updated backup cron schedule',
|
|
2052
2065
|
},
|
|
2066
|
+
backup_excluded: {
|
|
2067
|
+
type: 'boolean',
|
|
2068
|
+
description: 'Exclude site from backup eligibility (e.g. ephemeral sites, non-K8s hosting)',
|
|
2069
|
+
},
|
|
2070
|
+
backup_exclusion_reason: {
|
|
2071
|
+
type: 'string',
|
|
2072
|
+
description: 'Reason for backup exclusion (e.g. "Ephemeral captive portal site", "External hosting - not on K8s")',
|
|
2073
|
+
},
|
|
2053
2074
|
multisite_root_id: {
|
|
2054
2075
|
type: 'number',
|
|
2055
2076
|
description: 'Root site ID for WordPress multisite networks. Set to link as a subsite, null to unlink.',
|
|
@@ -2423,6 +2444,43 @@ const TOOLS = [
|
|
|
2423
2444
|
required: ['siteId'],
|
|
2424
2445
|
},
|
|
2425
2446
|
},
|
|
2447
|
+
// Kinsta backup tools (separate S3 bucket with weekly full-site zip backups)
|
|
2448
|
+
{
|
|
2449
|
+
name: 'fcp_kinsta_backup_list_sites',
|
|
2450
|
+
description: 'List all Kinsta-hosted sites that have S3 backup mappings configured. Returns site IDs, domains, and S3 prefixes.',
|
|
2451
|
+
inputSchema: {
|
|
2452
|
+
type: 'object',
|
|
2453
|
+
properties: {},
|
|
2454
|
+
},
|
|
2455
|
+
},
|
|
2456
|
+
{
|
|
2457
|
+
name: 'fcp_kinsta_backup_list',
|
|
2458
|
+
description: 'List available Kinsta backups for a specific site. Returns backup files with sizes, dates, and S3 keys for downloading.',
|
|
2459
|
+
inputSchema: {
|
|
2460
|
+
type: 'object',
|
|
2461
|
+
properties: {
|
|
2462
|
+
siteId: {
|
|
2463
|
+
type: 'string',
|
|
2464
|
+
description: 'The site ID (e.g., site-215 for bnpassociates.com)',
|
|
2465
|
+
},
|
|
2466
|
+
},
|
|
2467
|
+
required: ['siteId'],
|
|
2468
|
+
},
|
|
2469
|
+
},
|
|
2470
|
+
{
|
|
2471
|
+
name: 'fcp_kinsta_backup_download',
|
|
2472
|
+
description: 'Generate a presigned S3 download URL for a Kinsta backup zip file. URL expires in 1 hour.',
|
|
2473
|
+
inputSchema: {
|
|
2474
|
+
type: 'object',
|
|
2475
|
+
properties: {
|
|
2476
|
+
s3Key: {
|
|
2477
|
+
type: 'string',
|
|
2478
|
+
description: 'The S3 key from fcp_kinsta_backup_list (e.g., bnpassociates/filename.zip)',
|
|
2479
|
+
},
|
|
2480
|
+
},
|
|
2481
|
+
required: ['s3Key'],
|
|
2482
|
+
},
|
|
2483
|
+
},
|
|
2426
2484
|
];
|
|
2427
2485
|
// Register tool handlers
|
|
2428
2486
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
@@ -3422,6 +3480,27 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
3422
3480
|
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
3423
3481
|
};
|
|
3424
3482
|
}
|
|
3483
|
+
// Kinsta backup tools
|
|
3484
|
+
case 'fcp_kinsta_backup_list_sites': {
|
|
3485
|
+
const result = await client.kinstaBackupListSites();
|
|
3486
|
+
return {
|
|
3487
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
3488
|
+
};
|
|
3489
|
+
}
|
|
3490
|
+
case 'fcp_kinsta_backup_list': {
|
|
3491
|
+
const { siteId } = args;
|
|
3492
|
+
const result = await client.kinstaBackupListBackups(siteId);
|
|
3493
|
+
return {
|
|
3494
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
3495
|
+
};
|
|
3496
|
+
}
|
|
3497
|
+
case 'fcp_kinsta_backup_download': {
|
|
3498
|
+
const { s3Key } = args;
|
|
3499
|
+
const result = await client.kinstaBackupDownload(s3Key);
|
|
3500
|
+
return {
|
|
3501
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
3502
|
+
};
|
|
3503
|
+
}
|
|
3425
3504
|
default:
|
|
3426
3505
|
throw new Error(`Unknown tool: ${name}`);
|
|
3427
3506
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fruition/fcp-mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.13.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",
|