diff --git a/src/tools/atlas/read/inspectCluster.ts b/src/tools/atlas/read/inspectCluster.ts index 7d18a1c2..41559f38 100644 --- a/src/tools/atlas/read/inspectCluster.ts +++ b/src/tools/atlas/read/inspectCluster.ts @@ -31,13 +31,38 @@ export class InspectClusterTool extends AtlasToolBase { throw new Error("Cluster not found"); } + const regionConfigs = (cluster.replicationSpecs || []) + .map( + (replicationSpec) => + (replicationSpec.regionConfigs || []) as { + providerName: string; + electableSpecs?: { + instanceSize: string; + }; + readOnlySpecs?: { + instanceSize: string; + }; + }[] + ) + .flat() + .map((regionConfig) => { + return { + providerName: regionConfig.providerName, + instanceSize: regionConfig.electableSpecs?.instanceSize || regionConfig.readOnlySpecs?.instanceSize, + }; + }); + + const instanceSize = (regionConfigs.length <= 0 ? undefined : regionConfigs[0].instanceSize) || "UNKNOWN"; + + const clusterInstanceType = instanceSize == "M0" ? "FREE" : "DEDICATED"; + return { content: [ { type: "text", - text: `Cluster Name | State | MongoDB Version | Connection String -----------------|----------------|----------------|----------------|---------------- -${cluster.name} | ${cluster.stateName} | ${cluster.mongoDBVersion || "N/A"} | ${cluster.connectionStrings?.standard || "N/A"}`, + text: `Cluster Name | Cluster Type | Tier | State | MongoDB Version | Connection String +----------------|----------------|----------------|----------------|----------------|---------------- +${cluster.name} | ${clusterInstanceType} | ${clusterInstanceType == "DEDICATED" ? instanceSize : "N/A"} | ${cluster.stateName} | ${cluster.mongoDBVersion || "N/A"} | ${cluster.connectionStrings?.standardSrv || cluster.connectionStrings?.standard || "N/A"}`, }, ], }; diff --git a/src/tools/atlas/read/listClusters.ts b/src/tools/atlas/read/listClusters.ts index 8f6d7c4c..c5272055 100644 --- a/src/tools/atlas/read/listClusters.ts +++ b/src/tools/atlas/read/listClusters.ts @@ -79,9 +79,37 @@ ${rows}`, } const rows = clusters.results .map((cluster) => { - const connectionString = cluster.connectionStrings?.standard || "N/A"; + const connectionString = + cluster.connectionStrings?.standardSrv || cluster.connectionStrings?.standard || "N/A"; const mongoDBVersion = cluster.mongoDBVersion || "N/A"; - return `${cluster.name} | ${cluster.stateName} | ${mongoDBVersion} | ${connectionString}`; + const regionConfigs = (cluster.replicationSpecs || []) + .map( + (replicationSpec) => + (replicationSpec.regionConfigs || []) as { + providerName: string; + electableSpecs?: { + instanceSize: string; + }; + readOnlySpecs?: { + instanceSize: string; + }; + }[] + ) + .flat() + .map((regionConfig) => { + return { + providerName: regionConfig.providerName, + instanceSize: + regionConfig.electableSpecs?.instanceSize || regionConfig.readOnlySpecs?.instanceSize, + }; + }); + + const instanceSize = + (regionConfigs.length <= 0 ? undefined : regionConfigs[0].instanceSize) || "UNKNOWN"; + + const clusterInstanceType = instanceSize == "M0" ? "FREE" : "DEDICATED"; + + return `${cluster.name} | ${clusterInstanceType} | ${clusterInstanceType == "DEDICATED" ? instanceSize : "N/A"} | ${cluster.stateName} | ${mongoDBVersion} | ${connectionString}`; }) .join("\n"); return { @@ -92,8 +120,8 @@ ${rows}`, }, { type: "text", - text: `Cluster Name | State | MongoDB Version | Connection String -----------------|----------------|----------------|----------------|---------------- + text: `Cluster Name | Cluster Type | Tier | State | MongoDB Version | Connection String +----------------|----------------|----------------|----------------|----------------|---------------- ${rows}`, }, ],