Skip to content

Commit 92c0e88

Browse files
committed
address PR feedback
1 parent 8e18b97 commit 92c0e88

File tree

4 files changed

+24
-28
lines changed

4 files changed

+24
-28
lines changed

src/common/mongodb/connect.ts

Lines changed: 0 additions & 20 deletions
This file was deleted.

src/config.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const { localDataPath, configPath } = getLocalDataPath();
99

1010
// If we decide to support non-string config options, we'll need to extend the mechanism for parsing
1111
// env variables.
12-
interface UserConfig extends Record<string, unknown> {
12+
interface UserConfig {
1313
apiBaseUrl: string;
1414
clientId: string;
1515
stateFile: string;
@@ -106,15 +106,16 @@ function getEnvConfig(): Partial<UserConfig> {
106106
}
107107

108108
const result: Record<string, unknown> = {};
109-
for (const [key, value] of Object.entries(process.env).filter(
109+
const mcpVariables = Object.entries(process.env).filter(
110110
([key, value]) => value !== undefined && key.startsWith("MDB_MCP_")
111-
)) {
111+
) as [string, string][];
112+
for (const [key, value] of mcpVariables) {
112113
const fieldPath = key
113114
.replace("MDB_MCP_", "")
114115
.split(".")
115116
.map((part) => SNAKE_CASE_toCamelCase(part));
116117

117-
setValue(result, fieldPath, value!);
118+
setValue(result, fieldPath, value);
118119
}
119120

120121
return result;

src/tools/mongodb/connect.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { DbOperationType, MongoDBToolBase } from "./mongodbTool.js";
44
import { ToolArgs } from "../tool.js";
55
import { ErrorCodes, MongoDBError } from "../../errors.js";
66
import config from "../../config.js";
7-
import { connectToMongoDB } from "../../common/mongodb/connect.js";
87

98
export class ConnectTool extends MongoDBToolBase {
109
protected name = "connect";
@@ -58,7 +57,7 @@ export class ConnectTool extends MongoDBToolBase {
5857
throw new MongoDBError(ErrorCodes.InvalidParams, "Invalid connection options");
5958
}
6059

61-
await connectToMongoDB(connectionString, this.state);
60+
await this.connectToMongoDB(connectionString, this.state);
6261

6362
return {
6463
content: [{ type: "text", text: `Successfully connected to ${connectionString}.` }],

src/tools/mongodb/mongodbTool.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import { NodeDriverServiceProvider } from "@mongosh/service-provider-node-driver
55
import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
66
import { ErrorCodes, MongoDBError } from "../../errors.js";
77
import config from "../../config.js";
8-
import { connectToMongoDB } from "../../common/mongodb/connect.js";
98

109
export const DbOperationArgs = {
1110
database: z.string().describe("Database name"),
@@ -24,7 +23,7 @@ export abstract class MongoDBToolBase extends ToolBase {
2423
protected async ensureConnected(): Promise<NodeDriverServiceProvider> {
2524
const provider = this.state.serviceProvider;
2625
if (!provider && config.connectionString) {
27-
await connectToMongoDB(config.connectionString, this.state);
26+
await this.connectToMongoDB(config.connectionString, this.state);
2827
}
2928

3029
if (!provider) {
@@ -52,4 +51,21 @@ export abstract class MongoDBToolBase extends ToolBase {
5251

5352
return undefined;
5453
}
54+
55+
protected async connectToMongoDB(connectionString: string, state: State): Promise<void> {
56+
const provider = await NodeDriverServiceProvider.connect(connectionString, {
57+
productDocsLink: "https://docs.mongodb.com/todo-mcp",
58+
productName: "MongoDB MCP",
59+
readConcern: config.connectOptions.readConcern,
60+
readPreference: config.connectOptions.readPreference,
61+
writeConcern: {
62+
w: config.connectOptions.writeConcern,
63+
},
64+
timeoutMS: config.connectOptions.timeoutMS,
65+
});
66+
67+
state.serviceProvider = provider;
68+
state.credentials.connectionString = connectionString;
69+
await state.persistCredentials();
70+
}
5571
}

0 commit comments

Comments
 (0)