UNPKG

mcp-quickbase

Version:

Work with Quickbase via Model Context Protocol

101 lines 3.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TestConnectionTool = void 0; const base_1 = require("./base"); const logger_1 = require("../utils/logger"); const logger = (0, logger_1.createLogger)("TestConnectionTool"); /** * Tool for testing the connection to Quickbase */ class TestConnectionTool extends base_1.BaseTool { /** * Constructor * @param client Quickbase client */ constructor(client) { super(client); this.name = "test_connection"; this.description = "Tests the connection to Quickbase"; /** * Parameter schema for test_connection */ this.paramSchema = { type: "object", properties: {}, required: [], }; } /** * Run the test_connection tool * @param params Tool parameters (none required) * @returns Test result */ async run(_params) { logger.info("Testing connection to Quickbase"); try { // Try to get apps list as a simple test // This endpoint requires authentication and will validate our credentials const config = this.client.getConfig(); // If we have an app ID, try to get that specific app // Otherwise, just try to list apps (which should return at least one) let response; if (config.appId) { response = await this.client.request({ method: "GET", path: `/apps/${config.appId}`, }); } else { response = await this.client.request({ method: "GET", path: "/apps", }); } if (!response.success) { logger.error("Connection test failed", { error: response.error }); throw new Error(response.error?.message || "Failed to connect to Quickbase"); } logger.info("Connection test successful"); // Extract some basic info from the response const data = response.data; return { connected: true, userInfo: { id: "authenticated", email: "authenticated-user", name: "Quickbase User", }, realmInfo: { hostname: config.realmHost, id: config.appId || "no-app-specified", appName: data?.name || "Unknown App", }, }; } catch (error) { logger.error("Connection test failed with error", { error }); // Provide more specific error messages let errorMessage = "Failed to connect to Quickbase"; if (error instanceof Error) { if (error.message.includes("401")) { errorMessage = "Authentication failed. Please check your user token."; } else if (error.message.includes("404")) { errorMessage = "App not found. Please check your app ID."; } else if (error.message.includes("403")) { errorMessage = "Access denied. Please check your permissions."; } else { errorMessage = error.message; } } return { connected: false, errorMessage, }; } } } exports.TestConnectionTool = TestConnectionTool; //# sourceMappingURL=test_connection.js.map