mcp-quickbase
Version:
Work with Quickbase via Model Context Protocol
101 lines • 3.67 kB
JavaScript
;
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