From 430a7964ebbcc7c36c831b619ef513e14e147a70 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Wed, 9 Apr 2025 10:30:15 +0200 Subject: [PATCH] fix: don't use mcp error for our errors --- src/errors.ts | 9 +++++++++ src/tools/mongodb/connect.ts | 6 +++--- src/tools/mongodb/mongodbTool.ts | 8 ++++---- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/errors.ts b/src/errors.ts index cc04cd06..224610fb 100644 --- a/src/errors.ts +++ b/src/errors.ts @@ -2,3 +2,12 @@ export enum ErrorCodes { NotConnectedToMongoDB = 1_000_000, InvalidParams = 1_000_001, } + +export class MongoDBError extends Error { + constructor( + public code: ErrorCodes, + message: string + ) { + super(message); + } +} diff --git a/src/tools/mongodb/connect.ts b/src/tools/mongodb/connect.ts index 769e2771..65e6b5c1 100644 --- a/src/tools/mongodb/connect.ts +++ b/src/tools/mongodb/connect.ts @@ -1,9 +1,9 @@ import { z } from "zod"; -import { CallToolResult, McpError } from "@modelcontextprotocol/sdk/types.js"; +import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import { NodeDriverServiceProvider } from "@mongosh/service-provider-node-driver"; import { DbOperationType, MongoDBToolBase } from "./mongodbTool.js"; import { ToolArgs } from "../tool"; -import { ErrorCodes } from "../../errors.js"; +import { ErrorCodes, MongoDBError } from "../../errors.js"; export class ConnectTool extends MongoDBToolBase { protected name = "connect"; @@ -54,7 +54,7 @@ export class ConnectTool extends MongoDBToolBase { }; } } else { - throw new McpError(ErrorCodes.InvalidParams, "Invalid connection options"); + throw new MongoDBError(ErrorCodes.InvalidParams, "Invalid connection options"); } await this.connect(connectionString); diff --git a/src/tools/mongodb/mongodbTool.ts b/src/tools/mongodb/mongodbTool.ts index 6d9c5fc4..75d1af27 100644 --- a/src/tools/mongodb/mongodbTool.ts +++ b/src/tools/mongodb/mongodbTool.ts @@ -2,8 +2,8 @@ import { z } from "zod"; import { ToolBase } from "../tool.js"; import { State } from "../../state.js"; import { NodeDriverServiceProvider } from "@mongosh/service-provider-node-driver"; -import { CallToolResult, McpError } from "@modelcontextprotocol/sdk/types.js"; -import { ErrorCodes } from "../../errors.js"; +import { CallToolResult } from "@modelcontextprotocol/sdk/types.js"; +import { ErrorCodes, MongoDBError } from "../../errors.js"; export type MongoDBToolState = { serviceProvider?: NodeDriverServiceProvider }; @@ -27,14 +27,14 @@ export abstract class MongoDBToolBase extends ToolBase { protected ensureConnected(): NodeDriverServiceProvider { const provider = this.mongodbState.serviceProvider; if (!provider) { - throw new McpError(ErrorCodes.NotConnectedToMongoDB, "Not connected to MongoDB"); + throw new MongoDBError(ErrorCodes.NotConnectedToMongoDB, "Not connected to MongoDB"); } return provider; } protected handleError(error: unknown): CallToolResult | undefined { - if (error instanceof McpError && error.code === ErrorCodes.NotConnectedToMongoDB) { + if (error instanceof MongoDBError && error.code === ErrorCodes.NotConnectedToMongoDB) { return { content: [ {