Skip to main content
Glama
dennypradipta

Date Operations MCP

tools.ts3.31 kB
import { add, differenceInDays, differenceInHours, differenceInMinutes, differenceInMonths, differenceInSeconds, differenceInWeeks, differenceInYears, format, isAfter, isBefore, isEqual, sub, type Duration, } from "date-fns"; import type { TextContent } from "fastmcp"; import type { TAddParams, TCompareParams, TDifferenceParams, TFormatParams, TSubtractParams, } from "./params.js"; export const nowTool = async (): Promise<TextContent> => { return { type: "text", text: new Date().toISOString() }; }; export const formatTool = async (args: TFormatParams): Promise<TextContent> => { const result = format(new Date(args.datetime), args.format); return { type: "text", text: result, }; }; export const addTool = async (args: TAddParams): Promise<TextContent> => { const result = add(new Date(args.datetime), args.duration as Duration); return { type: "text", text: result.toISOString(), }; }; export const subtractTool = async ( args: TSubtractParams ): Promise<TextContent> => { const result = sub(new Date(args.datetime), args.duration as Duration); return { type: "text", text: result.toISOString(), }; }; export const differenceTool = async ( args: TDifferenceParams ): Promise<TextContent> => { let result: number; switch (args.unit) { case "seconds": result = differenceInSeconds( new Date(args.datetimeFrom), new Date(args.datetimeTo) ); break; case "minutes": result = differenceInMinutes( new Date(args.datetimeFrom), new Date(args.datetimeTo) ); break; case "hours": result = differenceInHours( new Date(args.datetimeFrom), new Date(args.datetimeTo) ); break; case "days": result = differenceInDays( new Date(args.datetimeFrom), new Date(args.datetimeTo) ); break; case "weeks": result = differenceInWeeks( new Date(args.datetimeFrom), new Date(args.datetimeTo) ); break; case "months": result = differenceInMonths( new Date(args.datetimeFrom), new Date(args.datetimeTo) ); break; case "years": result = differenceInYears( new Date(args.datetimeFrom), new Date(args.datetimeTo) ); break; default: throw new Error(`Invalid unit: ${args.unit}`); } return { type: "text", text: `Difference between ${args.datetimeFrom} and ${ args.datetimeTo } is ${Math.abs(result).toString()} ${args.unit}`, }; }; export const compareTool = async ( args: TCompareParams ): Promise<TextContent> => { let result: boolean; switch (args.operator) { case "after": result = isAfter( new Date(args.firstDatetime), new Date(args.secondDatetime) ); break; case "before": result = isBefore( new Date(args.firstDatetime), new Date(args.secondDatetime) ); break; case "equal": result = isEqual( new Date(args.firstDatetime), new Date(args.secondDatetime) ); break; default: throw new Error(`Invalid operator: ${args.operator}`); } return { type: "text", text: result.toString(), }; };

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/dennypradipta/date-operations-mcp'

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