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