Skip to main content
Glama

MongoDB MCP Server

Official
by mongodb-js
logs.test.ts4.03 kB
import { expect, it } from "vitest"; import { validateToolMetadata, validateThrowsForInvalidArguments, getResponseElements, getDataFromUntrustedContent, } from "../../../helpers.js"; import { describeWithMongoDB, validateAutoConnectBehavior } from "../mongodbHelpers.js"; describeWithMongoDB("logs tool", (integration) => { validateToolMetadata(integration, "mongodb-logs", "Returns the most recent logged mongod events", [ { type: "string", name: "type", description: "The type of logs to return. Global returns all recent log entries, while startupWarnings returns only warnings and errors from when the process started.", required: false, }, { type: "integer", name: "limit", description: "The maximum number of log entries to return.", required: false, }, ]); validateThrowsForInvalidArguments(integration, "mongodb-logs", [ { type: 123 }, { type: "something" }, { limit: 0 }, { limit: true }, { limit: 1025 }, ]); it("should return global logs", async () => { await integration.connectMcpClient(); const response = await integration.mcpClient().callTool({ name: "mongodb-logs", arguments: {}, }); const elements = getResponseElements(response); expect(elements).toHaveLength(2); expect(elements[1]?.text).toContain("<untrusted-user-data-"); const logs = getDataFromUntrustedContent(elements[1]?.text ?? "").split("\n"); // Default limit is 50 expect(logs.length).toBeLessThanOrEqual(50); // Expect at least one log entry expect(logs.length).toBeGreaterThan(1); expect(elements[0]?.text).toMatch(/Found: \d+ messages/); const totalMessages = parseInt(elements[0]?.text.match(/Found: (\d+) messages/)?.[1] ?? "0", 10); expect(totalMessages).toBeGreaterThanOrEqual(logs.length); if (totalMessages > logs.length) { expect(elements[0]?.text).toContain(`(showing only the first ${logs.length})`); } for (const message of logs) { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment const log = JSON.parse(message ?? "{}"); expect(log).toHaveProperty("t"); expect(log).toHaveProperty("msg"); } }); it("should return startupWarnings logs", async () => { await integration.connectMcpClient(); const response = await integration.mcpClient().callTool({ name: "mongodb-logs", arguments: { type: "startupWarnings", }, }); const elements = getResponseElements(response); expect(elements).toHaveLength(2); expect(elements[1]?.text).toContain("<untrusted-user-data-"); const logs = getDataFromUntrustedContent(elements[1]?.text ?? "").split("\n"); // Default limit is 50 expect(logs.length).toBeLessThanOrEqual(50); // Expect at least one log entry expect(logs.length).toBeGreaterThan(1); for (const message of logs) { const log = JSON.parse(message ?? "{}") as { tags: string[] }; expect(log).toHaveProperty("t"); expect(log).toHaveProperty("msg"); expect(log).toHaveProperty("tags"); expect(log.tags).toContain("startupWarnings"); } }); validateAutoConnectBehavior(integration, "mongodb-logs", () => { return { args: { database: integration.randomDbName(), collection: "foo", }, validate: (content): void => { const elements = getResponseElements(content); expect(elements.length).toBeLessThanOrEqual(51); expect(elements[0]?.text).toMatch(/Found: \d+ messages/); }, }; }); });

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