Skip to main content
Glama

getProjects

Fetch and filter Teamwork projects by date, type, status, or custom criteria. Generate detailed reports in multiple formats and organize projects by various fields for streamlined project management.

Instructions

Get all projects from Teamwork

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
includeArchivedProjectsNoInclude archived projects
includeCompletedProjectsNoInclude completed projects
includeProjectBillingMethodNoInclude project billing method
includeProjectBudgetNoInclude project budget
includeProjectCategoryNoInclude project category
includeProjectCompanyNoInclude project company
includeProjectCreatorNoInclude project creator
includeProjectCustomFieldsNoInclude project custom fields
includeProjectHealthNoInclude project health
includeProjectOwnerNoInclude project owner
includeProjectProfitabilityNoInclude project profitability
includeProjectRateCardCurrenciesNoInclude project rate card currencies
includeProjectRateCardRatesNoInclude project rate card rates
includeProjectRateCardTaskCurrenciesNoInclude project rate card task currencies
includeProjectRateCardTaskRatesNoInclude project rate card task rates
includeProjectRateCardTasksNoInclude project rate card tasks
includeProjectRateCardUserCurrenciesNoInclude project rate card user currencies
includeProjectRateCardUserRatesNoInclude project rate card user rates
includeProjectRateCardUsersNoInclude project rate card users
includeProjectRateCardsNoInclude project rate cards
includeProjectStatusNoInclude project status
includeProjectTagsNoInclude project tags
maxBudgetCapacityUsedPercentNoFilter by maximum budget capacity used
maxLastActivityDateNoFilter by max last activity date (format: YYYY-MM-DD)
minBudgetCapacityUsedPercentNoFilter by minimum budget capacity used
minLastActivityDateNoFilter by min last activity date (format: YYYY-MM-DD)
notCompletedBeforeNoFilter by projects that have not been completed before the given date (format: YYYY-MM-DD)
orderByNoOrder by field
orderByCustomFieldIdNoOrder by custom field id when orderBy is equal to customfield
orderModeNoOrder mode
pageNoPage number (not used when generating reports)
pageSizeNoNumber of items in a page (not used when generating reports)
projectTypeNoFilter by project type
reportFormatNoDefine the format of the report
reportTimezoneNoConfigure the report dates displayed in a timezone
reportTypeNoDefine the type of the report
searchTermNoFilter by project name
timeModeNoProfitability time mode
updatedAfterNoFilter projects updated after this date-time (format: ISO 8601)
userIdNoFilter by user id

Implementation Reference

  • Registration of the getProjects MCP tool: pairs the imported getProjectsDefinition and handleGetProjects in the toolPairs array, which populates toolDefinitions and toolHandlersMap for the MCP server.
    const toolPairs: ToolPair[] = [ { definition: getProjects, handler: handleGetProjects }, { definition: getCurrentProject, handler: handleGetCurrentProject }, { definition: createProject, handler: handleCreateProject }, { definition: getTasks, handler: handleGetTasks }, { definition: getTasksByProjectId, handler: handleGetTasksByProjectId }, { definition: getTaskListsByProjectId, handler: handleGetTaskListsByProjectId }, { definition: getTasksByTaskListId, handler: handleGetTasksByTaskListId }, { definition: getTaskById, handler: handleGetTaskById }, { definition: createTask, handler: handleCreateTask }, { definition: createSubTask, handler: handleCreateSubTask }, { definition: updateTask, handler: handleUpdateTask }, { definition: deleteTask, handler: handleDeleteTask }, { definition: getTasksMetricsComplete, handler: handleGetTasksMetricsComplete }, { definition: getTasksMetricsLate, handler: handleGetTasksMetricsLate }, { definition: getTaskSubtasks, handler: handleGetTaskSubtasks }, { definition: getTaskComments, handler: handleGetTaskComments }, { definition: createComment, handler: handleCreateComment }, { definition: getPeople, handler: handleGetPeople }, { definition: getPersonById, handler: handleGetPersonById }, { definition: getProjectPeople, handler: handleGetProjectPeople }, { definition: addPeopleToProject, handler: handleAddPeopleToProject }, { definition: deletePerson, handler: handleDeletePerson }, { definition: updatePerson, handler: handleUpdatePerson }, { definition: createCompany, handler: handleCreateCompany }, { definition: updateCompany, handler: handleUpdateCompany }, { definition: deleteCompany, handler: handleDeleteCompany }, { definition: getCompanies, handler: handleGetCompanies }, { definition: getCompanyById, handler: handleGetCompanyById }, { definition: getProjectsPeopleMetricsPerformance, handler: handleGetProjectsPeopleMetricsPerformance }, { definition: getProjectsPeopleUtilization, handler: handleGetProjectsPeopleUtilization }, { definition: getAllocationTime, handler: handleGetProjectsAllocationsTime }, { definition: getTime, handler: handleGetTime }, { definition: getProjectPerson, handler: handleGetProjectPerson }, { definition: getProjectsReportingUserTaskCompletion, handler: handleGetProjectsReportingUserTaskCompletion }, { definition: getProjectsReportingUtilization, handler: handleGetProjectsReportingUtilization }, { definition: getTimezones, handler: handleGetTimezones } ];
  • Core implementation of getProjects: fetches list of projects from Teamwork API using v3 with fallback to v1, handles errors. This service function is imported and used by the MCP tool handler.
    export const getProjects = async (params?: ProjectQueryParams) => { 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: any) { 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: any) { logger.error(`V1 API request also failed: ${v1Error.message}`); throw error; // Throw the original error } } } catch (error: any) { logger.error(`Teamwork API error: ${error.message}`); throw new Error('Failed to fetch projects from Teamwork API'); } }; export default getProjects;
  • src/tools/index.ts:7-7 (registration)
    Import of the getProjects tool definition (schema) and handler from the dedicated tool file.
    import { getProjectsDefinition as getProjects, handleGetProjects } from './projects/getProjects.js';
  • Central export of the getProjects service for use across the app, including tools.
    import getProjects from './projects/getProjects.js';

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Vizioz/Teamwork-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server