mongodb-memory-bank-mcp
Version:
FIXED: MongoDB Memory Bank MCP with bulletproof error handling, smart operations, and session state management. Eliminates [object Object] errors and user confusion.
46 lines (45 loc) • 1.54 kB
JavaScript
import { serializeError } from "../helpers/serialize-error.js";
/**
* Intelligently serializes response body for MCP protocol
* - Strings: returned as-is
* - String arrays: joined with newlines for readability
* - Complex objects/arrays: JSON stringified
* - null/undefined: empty string
*/
const serializeResponseBody = (body) => {
if (body === null || body === undefined) {
return "";
}
// Handle strings directly (most common case for memory bank)
if (typeof body === "string") {
return body;
}
// Handle string arrays (like original list_projects, list_project_files)
if (Array.isArray(body) && body.every(item => typeof item === "string")) {
return body.join("\n");
}
// Handle complex objects and arrays (MongoDB enhanced features)
return JSON.stringify(body, null, 2);
};
export const adaptMcpRequestHandler = async (controller) => {
return async (request) => {
const { params } = request;
const body = params?.arguments;
const response = await controller.handle({
body,
});
const isError = response.statusCode < 200 || response.statusCode >= 300;
return {
tools: [],
isError,
content: [
{
type: "text",
text: isError
? JSON.stringify(serializeError(response.body))
: serializeResponseBody(response.body),
},
],
};
};
};