UNPKG

@vizioz/teamwork-mcp

Version:

MCP server to connect to the Teamwork.com API

40 lines (39 loc) 1.56 kB
import logger from '../../utils/logger.js'; import { ensureApiClient, getApiClientForVersion } from '../core/apiClient.js'; /** * Fetches projects from the Teamwork API * @param params Optional query parameters for filtering projects * @returns The API response with project data */ export const getProjects = async (params) => { try { logger.info('Fetching projects from Teamwork API'); try { // Try with v3 API first const api = ensureApiClient(); const response = await api.get('/projects.json', { params }); logger.info('Successfully fetched projects using v3 API'); return response.data; } catch (error) { logger.warn(`V3 API request failed: ${error.message}`); // Try the v1 API format as fallback logger.info('Trying v1 API format as fallback'); try { const v1Api = getApiClientForVersion('v1'); const v1Response = await v1Api.get('/projects.json', { params }); logger.info('Successfully fetched projects using v1 API'); return v1Response.data; } catch (v1Error) { logger.error(`V1 API request also failed: ${v1Error.message}`); throw error; // Throw the original error } } } catch (error) { logger.error(`Teamwork API error: ${error.message}`); throw new Error('Failed to fetch projects from Teamwork API'); } }; export default getProjects;