system-unified.tsโข2.33 kB
/**
* Unified Coolify System Management Tools
* Consolidated MCP tools for system-level operations
*/
import { Tool } from '@modelcontextprotocol/sdk/types.js';
import { CoolifyApiClient } from '../utils/coolify-client';
/**
* Unified System Management Tool
* Combines servers, teams, services, and health checks into a single tool
*/
export const systemManagementTool: Tool = {
name: 'coolify_system_management',
description: 'System management: list servers, teams, services, or test connectivity',
inputSchema: {
type: 'object',
properties: {
action: {
type: 'string',
enum: ['get_servers', 'get_teams', 'get_services', 'test_connection'],
description: 'Action to perform: get servers, teams, services, or test connection',
},
},
required: ['action'],
},
};
export async function handleSystemManagement(
coolifyClient: CoolifyApiClient,
args: any
): Promise<any> {
try {
const { action } = args;
let result;
let message;
switch (action) {
case 'get_servers':
result = await coolifyClient.getServers();
message = `Found ${result.length} servers`;
break;
case 'get_teams':
result = await coolifyClient.getTeams();
message = `Found ${result.length} teams`;
break;
case 'get_services':
result = await coolifyClient.getServices();
message = `Found ${result.length} services`;
break;
case 'test_connection':
result = await coolifyClient.testConnection();
message = result ? 'Connection successful' : 'Connection failed';
break;
default:
throw new Error(`Unknown system action: ${action}`);
}
return {
content: [
{
type: 'text',
text: JSON.stringify({
success: true,
data: result,
message: message
}, null, 2)
}
]
};
} catch (error) {
return {
content: [
{
type: 'text',
text: JSON.stringify({
success: false,
error: error instanceof Error ? error.message : 'Unknown error occurred'
}, null, 2)
}
],
isError: true
};
}
}
// Export unified tools
export const systemTools = [systemManagementTool];