@hongkongkiwi/clockify-master-mcp
Version:
Clockify Master MCP - The most comprehensive Model Context Protocol server for Clockify time tracking with full API integration, advanced filtering, and enterprise features
241 lines • 5.68 kB
TypeScript
import { z } from 'zod';
export interface ClockifyUser {
id: string;
email: string;
name: string;
activeWorkspace: string;
defaultWorkspace: string;
status: string;
profilePicture?: string;
settings?: {
weekStart: string;
timeZone: string;
timeFormat: string;
dateFormat: string;
};
}
export interface ClockifyWorkspace {
id: string;
name: string;
hourlyRate?: {
amount: number;
currency: string;
};
memberships?: Array<{
userId: string;
hourlyRate?: {
amount: number;
currency: string;
};
targetId?: string;
membershipType: string;
membershipStatus: string;
}>;
workspaceSettings?: {
timeRoundingInReports: boolean;
onlyAdminsSeeBillableRates: boolean;
onlyAdminsCreateProject: boolean;
onlyAdminsSeeDashboard: boolean;
defaultBillableProjects: boolean;
lockTimeEntries?: string;
round?: {
round: string;
minutes: string;
};
};
imageUrl?: string;
featureSubscriptionType?: string;
}
export interface ClockifyProject {
id: string;
name: string;
clientId?: string;
clientName?: string;
workspaceId: string;
billable: boolean;
hourlyRate?: {
amount: number;
currency: string;
};
memberships?: Array<{
userId: string;
hourlyRate?: {
amount: number;
currency: string;
};
targetId: string;
membershipType: string;
membershipStatus: string;
}>;
color: string;
estimate?: {
estimate: string;
type: string;
};
archived: boolean;
duration?: string;
note?: string;
template: boolean;
public: boolean;
costRate?: {
amount: number;
currency: string;
};
budgetEstimate?: {
estimate: number;
type: string;
resetOption?: string;
};
timeEstimate?: {
estimate: string;
type: string;
resetOption?: string;
active: boolean;
};
}
export interface ClockifyClient {
id: string;
name: string;
workspaceId: string;
archived: boolean;
address?: string;
note?: string;
email?: string;
}
export interface ClockifyTag {
id: string;
name: string;
workspaceId: string;
archived: boolean;
}
export interface ClockifyTask {
id: string;
name: string;
projectId: string;
assigneeIds?: string[];
assigneeId?: string;
estimate?: string;
status: string;
duration?: string;
billable?: boolean;
hourlyRate?: {
amount: number;
currency: string;
};
costRate?: {
amount: number;
currency: string;
};
}
export interface ClockifyTimeEntry {
id: string;
description: string;
tagIds?: string[];
userId: string;
billable: boolean;
taskId?: string;
projectId?: string;
timeInterval: {
start: string;
end?: string;
duration?: string;
};
workspaceId: string;
isLocked: boolean;
customFieldValues?: Array<{
customFieldId: string;
timeEntryId?: string;
value: string | number;
}>;
type?: string;
kioskId?: string;
}
export interface ClockifyTimeEntryRequest {
start: string;
billable?: boolean;
description?: string;
projectId?: string;
taskId?: string;
end?: string;
tagIds?: string[];
customFields?: Array<{
customFieldId: string;
value: string | number;
}>;
}
export interface ClockifyReportRequest {
dateRangeStart: string;
dateRangeEnd: string;
summaryFilter?: {
groups?: string[];
sortColumn?: string;
};
sortOrder?: 'ASCENDING' | 'DESCENDING';
exportType?: string;
rounding?: boolean;
amountShown?: 'HIDE_AMOUNT' | 'EARNED' | 'COST' | 'PROFIT';
users?: {
ids?: string[];
contains?: 'CONTAINS' | 'DOES_NOT_CONTAIN';
status?: 'ALL' | 'ACTIVE' | 'INACTIVE';
};
clients?: {
ids?: string[];
contains?: 'CONTAINS' | 'DOES_NOT_CONTAIN';
status?: 'ALL' | 'ACTIVE' | 'ARCHIVED';
};
projects?: {
ids?: string[];
contains?: 'CONTAINS' | 'DOES_NOT_CONTAIN';
status?: 'ALL' | 'ACTIVE' | 'ARCHIVED';
};
tasks?: {
ids?: string[];
contains?: 'CONTAINS' | 'DOES_NOT_CONTAIN';
status?: 'ALL' | 'ACTIVE' | 'DONE';
};
tags?: {
ids?: string[];
contains?: 'CONTAINS' | 'DOES_NOT_CONTAIN';
status?: 'ALL' | 'ACTIVE' | 'ARCHIVED';
};
billable?: 'BILLABLE' | 'NON_BILLABLE' | 'BOTH';
description?: string;
withoutDescription?: boolean;
userGroups?: string[];
}
export interface ClockifyReportResponse {
totals?: Array<{
totalTime: string;
totalBillableTime: string;
entriesCount: number;
totalAmount: number;
}>;
groupOne?: Array<{
duration: string;
amount?: number;
name: string;
_id: string;
}>;
groupTwo?: Array<{
duration: string;
amount?: number;
name: string;
_id: string;
groupOne: string;
}>;
}
export interface McpToolConfig<T = any> {
name: string;
description: string;
parameters?: z.ZodSchema<T>;
handler: (params: T) => Promise<McpResponse>;
}
export interface McpResponse {
content: Array<{
type: 'text' | 'resource';
text?: string;
resource?: any;
}>;
}
//# sourceMappingURL=index.d.ts.map