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

mongodb-js / mongodb-mcp-server / 16905560379

12 Aug 2025 10:02AM UTC coverage: 81.998% (+0.2%) from 81.763%
16905560379

Pull #429

github

web-flow
Merge bec33709a into 974fa3623
Pull Request #429: chore: add arg-parser and put the config under test MCP-86

779 of 980 branches covered (79.49%)

Branch coverage included in aggregate %.

192 of 249 new or added lines in 6 files covered. (77.11%)

1 existing line in 1 file now uncovered.

4145 of 5025 relevant lines covered (82.49%)

129.58 hits per line

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

0.85
/src/index.ts
1
#!/usr/bin/env node
4✔
2

NEW
3
function enableFipsIfRequested(): void {
×
NEW
4
    let fipsError: Error | undefined;
×
NEW
5
    const tlsFIPSMode = process.argv.includes("--tlsFIPSMode");
×
6

NEW
7
    if (tlsFIPSMode) {
×
NEW
8
        try {
×
9
            // eslint-disable-next-line
NEW
10
            require("crypto").setFips(1);
×
NEW
11
        } catch (err: unknown) {
×
NEW
12
            fipsError ??= err as Error;
×
NEW
13
        }
×
NEW
14
    }
×
15

NEW
16
    if (tlsFIPSMode) {
×
NEW
17
        if (!fipsError && !crypto.getFips()) {
×
NEW
18
            fipsError = new Error("FIPS mode not enabled despite requested due to unknown error.");
×
NEW
19
        }
×
NEW
20
    }
×
21

NEW
22
    if (fipsError) {
×
NEW
23
        if (process.config.variables.node_shared_openssl) {
×
NEW
24
            console.error(
×
NEW
25
                "Could not enable FIPS mode. Please ensure that your system OpenSSL installation supports FIPS."
×
NEW
26
            );
×
NEW
27
        } else {
×
NEW
28
            console.error("Could not enable FIPS mode. This installation does not appear to support FIPS.");
×
NEW
29
        }
×
NEW
30
        console.error("Error details:");
×
NEW
31
        console.error(fipsError);
×
NEW
32
        process.exit(1);
×
NEW
33
    }
×
NEW
34
}
×
35

NEW
36
enableFipsIfRequested();
×
37

38
import { ConsoleLogger, LogId } from "./common/logger.js";
×
39
import { config } from "./common/config.js";
×
NEW
40
import crypto from "crypto";
×
NEW
41
import { packageInfo } from "./common/packageInfo.js";
×
42
import { StdioRunner } from "./transports/stdio.js";
×
43
import { StreamableHttpRunner } from "./transports/streamableHttp.js";
×
NEW
44
import { systemCA } from "@mongodb-js/devtools-proxy-support";
×
45

46
async function main(): Promise<void> {
×
NEW
47
    systemCA().catch(() => undefined); // load system CA asynchronously as in mongosh
×
48

NEW
49
    assertHelpMode();
×
NEW
50
    assertVersionMode();
×
51

UNCOV
52
    const transportRunner = config.transport === "stdio" ? new StdioRunner(config) : new StreamableHttpRunner(config);
×
53

54
    const shutdown = (): void => {
×
55
        transportRunner.logger.info({
×
56
            id: LogId.serverCloseRequested,
×
57
            context: "server",
×
58
            message: `Server close requested`,
×
59
        });
×
60

61
        transportRunner
×
62
            .close()
×
63
            .then(() => {
×
64
                transportRunner.logger.info({
×
65
                    id: LogId.serverClosed,
×
66
                    context: "server",
×
67
                    message: `Server closed`,
×
68
                });
×
69
                process.exit(0);
×
70
            })
×
71
            .catch((error: unknown) => {
×
72
                transportRunner.logger.error({
×
73
                    id: LogId.serverCloseFailure,
×
74
                    context: "server",
×
75
                    message: `Error closing server: ${error as string}`,
×
76
                });
×
77
                process.exit(1);
×
78
            });
×
79
    };
×
80

81
    process.on("SIGINT", shutdown);
×
82
    process.on("SIGABRT", shutdown);
×
83
    process.on("SIGTERM", shutdown);
×
84
    process.on("SIGQUIT", shutdown);
×
85

86
    try {
×
87
        await transportRunner.start();
×
88
    } catch (error: unknown) {
×
89
        transportRunner.logger.info({
×
90
            id: LogId.serverCloseRequested,
×
91
            context: "server",
×
92
            message: "Closing server",
×
93
        });
×
94
        try {
×
95
            await transportRunner.close();
×
96
            transportRunner.logger.info({
×
97
                id: LogId.serverClosed,
×
98
                context: "server",
×
99
                message: "Server closed",
×
100
            });
×
101
        } catch (error: unknown) {
×
102
            transportRunner.logger.error({
×
103
                id: LogId.serverCloseFailure,
×
104
                context: "server",
×
105
                message: `Error closing server: ${error as string}`,
×
106
            });
×
107
        }
×
108
        throw error;
×
109
    }
×
110
}
×
111

112
main().catch((error: unknown) => {
×
113
    // At this point, we may be in a very broken state, so we can't rely on the logger
114
    // being functional. Instead, create a brand new ConsoleLogger and log the error
115
    // to the console.
116
    const logger = new ConsoleLogger();
×
117
    logger.emergency({
×
118
        id: LogId.serverStartFailure,
×
119
        context: "server",
×
120
        message: `Fatal error running server: ${error as string}`,
×
121
    });
×
122
    process.exit(1);
×
123
});
×
124

NEW
125
function assertHelpMode(): void | never {
×
NEW
126
    if (config.help) {
×
NEW
127
        console.log("For usage information refer to the README.md:");
×
NEW
128
        console.log("https://github.com/mongodb-js/mongodb-mcp-server?tab=readme-ov-file#quick-start");
×
NEW
129
        process.exit(0);
×
NEW
130
    }
×
NEW
131
}
×
132

NEW
133
function assertVersionMode(): void | never {
×
NEW
134
    if (config.version) {
×
NEW
135
        console.log(packageInfo.version);
×
NEW
136
        process.exit(0);
×
NEW
137
    }
×
NEW
138
}
×
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