#!/usr/bin/env node
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CohesityClient } from "./cohesity-client.js";
import { registerClusterTools } from "./tools/cluster.js";
import { registerProtectionTools } from "./tools/protection.js";
import { registerRunsTools } from "./tools/runs.js";
import { registerSourcesTools } from "./tools/sources.js";
import { registerRecoveryTools } from "./tools/recovery.js";
import { registerAlertsTools } from "./tools/alerts.js";
function getConfig() {
const cluster = process.env.COHESITY_CLUSTER;
const username = process.env.COHESITY_USERNAME;
const password = process.env.COHESITY_PASSWORD;
if (!cluster || !username || !password) {
console.error(
"Missing required environment variables: COHESITY_CLUSTER, COHESITY_USERNAME, COHESITY_PASSWORD",
);
process.exit(1);
}
return {
cluster,
username,
password,
domain: process.env.COHESITY_DOMAIN || "LOCAL",
allowSelfSigned: process.env.COHESITY_ALLOW_SELF_SIGNED !== "false",
};
}
async function main() {
const config = getConfig();
const client = new CohesityClient(config);
const server = new McpServer({
name: "cohesity",
version: "1.0.0",
});
registerClusterTools(server, client);
registerProtectionTools(server, client);
registerRunsTools(server, client);
registerSourcesTools(server, client);
registerRecoveryTools(server, client);
registerAlertsTools(server, client);
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("Cohesity MCP server running");
}
main().catch((error) => {
console.error("Fatal error:", error);
process.exit(1);
});