From 4fa5d6a44e378f7283ab0ac520560e456d98900d Mon Sep 17 00:00:00 2001 From: Filipe C Menezes Date: Fri, 25 Apr 2025 09:50:46 +0100 Subject: [PATCH 1/2] feat: add org in atlas-list-projects --- src/tools/atlas/listProjects.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/tools/atlas/listProjects.ts b/src/tools/atlas/listProjects.ts index be127b29..04bab81c 100644 --- a/src/tools/atlas/listProjects.ts +++ b/src/tools/atlas/listProjects.ts @@ -13,6 +13,14 @@ export class ListProjectsTool extends AtlasToolBase { }; protected async execute({ orgId }: ToolArgs): Promise { + const orgData = await this.session.apiClient.listOrganizations(); + + if (!orgData?.results?.length) { + throw new Error("No organizations found in your MongoDB Atlas account."); + } + + const orgs: Record = orgData.results.map((org) => [org.id || "", org.name]).reduce((acc, [id, name]) => ({ ...acc, [id]: name }), {}); + const data = orgId ? await this.session.apiClient.listOrganizationProjects({ params: { @@ -31,11 +39,11 @@ export class ListProjectsTool extends AtlasToolBase { const rows = data.results .map((project) => { const createdAt = project.created ? new Date(project.created).toLocaleString() : "N/A"; - return `${project.name} | ${project.id} | ${createdAt}`; + return `${project.name} | ${project.id} | ${orgs[project.orgId]} | ${project.orgId} | ${createdAt}`; }) .join("\n"); - const formattedProjects = `Project Name | Project ID | Created At -----------------| ----------------| ---------------- + const formattedProjects = `Project Name | Project ID | Organization Name | Organization ID | Created At +----------------| ----------------| ----------------| ----------------| ---------------- ${rows}`; return { content: [{ type: "text", text: formattedProjects }], From 0bb438ec2d5ddf1dc45425d0c7890af4fdab8e7d Mon Sep 17 00:00:00 2001 From: Filipe C Menezes Date: Fri, 25 Apr 2025 09:52:01 +0100 Subject: [PATCH 2/2] fix: styles --- src/tools/atlas/listProjects.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tools/atlas/listProjects.ts b/src/tools/atlas/listProjects.ts index 04bab81c..01cd9b42 100644 --- a/src/tools/atlas/listProjects.ts +++ b/src/tools/atlas/listProjects.ts @@ -19,7 +19,9 @@ export class ListProjectsTool extends AtlasToolBase { throw new Error("No organizations found in your MongoDB Atlas account."); } - const orgs: Record = orgData.results.map((org) => [org.id || "", org.name]).reduce((acc, [id, name]) => ({ ...acc, [id]: name }), {}); + const orgs: Record = orgData.results + .map((org) => [org.id || "", org.name]) + .reduce((acc, [id, name]) => ({ ...acc, [id]: name }), {}); const data = orgId ? await this.session.apiClient.listOrganizationProjects({