UNPKG

@aot-tech/clockify-mcp-server

Version:

MCP Server for Clockify time tracking integration with AI tools

70 lines (69 loc) 2.38 kB
import { z } from 'zod'; import { CreateEntrySchema } from '../validation/entries/create-entry-schema'; import { FindEntrySchema } from '../validation/entries/find-entry-schema'; import { ReadResourceTemplateCallback, ResourceMetadata, ResourceTemplate } from '@modelcontextprotocol/sdk/server/mcp'; import { FindProjectSchema } from '../validation/projects/find-project-schema'; import { FindTaskSchema } from '../validation/entries/find-task-schema'; import { DetailedReportSchema } from '../validation/reports/detailed-report-schema'; import { SummaryReportSchema } from '../validation/reports/summary-report-schema'; export type TCreateEntrySchema = z.infer<typeof CreateEntrySchema>; export type TFindEntrySchema = z.infer<typeof FindEntrySchema>; export type TFindProjectSchema = z.infer<typeof FindProjectSchema>; export type TFindTaskSchema = z.infer<typeof FindTaskSchema>; export type TDetailedReportSchema = z.infer<typeof DetailedReportSchema>; export type TSummaryReportSchema = z.infer<typeof SummaryReportSchema>; export interface ClockifyWorkspace { id: string; name: string; } export interface ClockifyUser { id: string; name: string; email: string; } export interface McpToolConfig { name: string; description: string; parameters: Record<string, any>; handler: (params: any) => Promise<McpResponse>; } export type McpToolConfigWithoutParameters = Omit<McpToolConfig, 'parameters'>; export interface McpTextContent { type: 'text'; text: string; [key: string]: unknown; } export interface McpImageContent { type: 'image'; data: string; mimeType: string; [key: string]: unknown; } export interface McpResourceConfig { name: string; template: ResourceTemplate; metadata: ResourceMetadata; handler: ReadResourceTemplateCallback; } export interface McpResourceContent { type: 'resource'; resource: { text: string; uri: string; mimeType?: string; [key: string]: unknown; } | { uri: string; blob: string; mimeType?: string; [key: string]: unknown; }; [key: string]: unknown; } export type McpContent = McpTextContent | McpImageContent | McpResourceContent; export interface McpResponse { content: McpContent[]; _meta?: Record<string, unknown>; isError?: boolean; [key: string]: unknown; }