Skip to main content
Glama

MongoDB MCP Server

Official
by mongodb-js
listDatabases.test.ts3.22 kB
import { describeWithMongoDB, validateAutoConnectBehavior } from "../mongodbHelpers.js"; import { getResponseElements, getParameters, expectDefined, getDataFromUntrustedContent } from "../../../helpers.js"; import { describe, expect, it } from "vitest"; describeWithMongoDB("listDatabases tool", (integration) => { const defaultDatabases = ["admin", "config", "local"]; it("should have correct metadata", async () => { const { tools } = await integration.mcpClient().listTools(); const listDatabases = tools.find((tool) => tool.name === "list-databases"); expectDefined(listDatabases); expect(listDatabases.description).toBe("List all databases for a MongoDB connection"); const parameters = getParameters(listDatabases); expect(parameters).toHaveLength(0); }); describe("with no preexisting databases", () => { it("returns only the system databases", async () => { await integration.connectMcpClient(); const response = await integration.mcpClient().callTool({ name: "list-databases", arguments: {} }); const dbNames = getDbNames(response.content); expect(dbNames).toIncludeSameMembers(defaultDatabases); }); }); describe("with preexisting databases", () => { it("returns their names and sizes", async () => { const mongoClient = integration.mongoClient(); await mongoClient.db("foo").collection("bar").insertOne({ test: "test" }); await mongoClient.db("baz").collection("qux").insertOne({ test: "test" }); await integration.connectMcpClient(); const response = await integration.mcpClient().callTool({ name: "list-databases", arguments: {} }); const dbNames = getDbNames(response.content); expect(dbNames).toIncludeSameMembers([...defaultDatabases, "foo", "baz"]); }); }); validateAutoConnectBehavior( integration, "list-databases", () => { return { args: {}, validate: (content): void => { const dbNames = getDbNames(content); expect(defaultDatabases).toStrictEqual(dbNames); }, }; }, async () => { const mongoClient = integration.mongoClient(); const { databases } = await mongoClient.db("admin").command({ listDatabases: 1, nameOnly: true }); for (const db of databases as { name: string }[]) { if (!defaultDatabases.includes(db.name)) { await mongoClient.db(db.name).dropDatabase(); } } } ); }); function getDbNames(content: unknown): (string | null)[] { const responseItems = getResponseElements(content); expect(responseItems).toHaveLength(2); const data = getDataFromUntrustedContent(responseItems[1]?.text ?? "{}"); return data .split("\n") .map((item) => { const match = item.match(/Name: ([^,]+), Size: \d+ bytes/); return match ? match[1] : null; }) .filter((item): item is string | null => item !== undefined); }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mongodb-js/mongodb-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server