• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mongodb-js / mongodb-mcp-server / 14667012576

25 Apr 2025 02:31PM UTC coverage: 81.696%. Remained the same
14667012576

Pull #125

github

fmenezes
fix: duplicated v on version bump
Pull Request #125: fix: duplicated v on version bump

128 of 208 branches covered (61.54%)

Branch coverage included in aggregate %.

720 of 830 relevant lines covered (86.75%)

44.18 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

74.07
/src/tools/atlas/listDBUsers.ts
1
import { z } from "zod";
31✔
2
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
3
import { AtlasToolBase } from "./atlasTool.js";
31✔
4
import { ToolArgs, OperationType } from "../tool.js";
5
import { DatabaseUserRole, UserScope } from "../../common/atlas/openapi.js";
6

7
export class ListDBUsersTool extends AtlasToolBase {
31✔
8
    protected name = "atlas-list-db-users";
27✔
9
    protected description = "List MongoDB Atlas database users";
27✔
10
    protected operationType: OperationType = "read";
27✔
11
    protected argsShape = {
27✔
12
        projectId: z.string().describe("Atlas project ID to filter DB users"),
13
    };
14

15
    protected async execute({ projectId }: ToolArgs<typeof this.argsShape>): Promise<CallToolResult> {
16
        const data = await this.session.apiClient.listDatabaseUsers({
1✔
17
            params: {
18
                path: {
19
                    groupId: projectId,
20
                },
21
            },
22
        });
23

24
        if (!data?.results?.length) {
1!
25
            throw new Error("No database users found.");
×
26
        }
27

28
        const output =
29
            `Username | Roles | Scopes
1✔
30
----------------|----------------|----------------
31
` +
32
            data.results
33
                .map((user) => {
34
                    return `${user.username} | ${formatRoles(user.roles)} | ${formatScopes(user.scopes)}`;
1✔
35
                })
36
                .join("\n");
37
        return {
1✔
38
            content: [{ type: "text", text: output }],
39
        };
40
    }
41
}
42

43
function formatRoles(roles?: DatabaseUserRole[]) {
44
    if (!roles?.length) {
1!
45
        return "N/A";
×
46
    }
47
    return roles
1✔
48
        .map(
49
            (role) =>
50
                `${role.roleName}${role.databaseName ? `@${role.databaseName}${role.collectionName ? `:${role.collectionName}` : ""}` : ""}`
1!
51
        )
52
        .join(", ");
53
}
54

55
function formatScopes(scopes?: UserScope[]) {
56
    if (!scopes?.length) {
1✔
57
        return "All";
1✔
58
    }
59
    return scopes.map((scope) => `${scope.type}:${scope.name}`).join(", ");
×
60
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc