UNPKG

time-mcp

Version:

Time MCP Server, giving LLMs time awareness capabilities.

1 lines 17.9 kB
{"version":3,"sources":["../src/index.ts","../src/tools.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { CURRENT_TIME, DAYS_IN_MONTH, GET_TIMESTAMP, RELATIVE_TIME, CONVERT_TIME, GET_WEEK_YEAR } from './tools.js';\nimport relativeTime from 'dayjs/plugin/relativeTime.js';\nimport utc from 'dayjs/plugin/utc.js';\nimport timezone from 'dayjs/plugin/timezone.js';\nimport weekOfYear from 'dayjs/plugin/weekOfYear.js';\nimport isoWeek from 'dayjs/plugin/isoWeek.js';\nimport dayjs from 'dayjs';\n\ndayjs.extend(relativeTime);\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(weekOfYear);\ndayjs.extend(isoWeek);\n\nexport const server = new Server({\n name: 'time-mcp',\n version: '0.0.1',\n}, {\n capabilities: {\n tools: {},\n logging: {},\n },\n});\n\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: [CURRENT_TIME, RELATIVE_TIME, DAYS_IN_MONTH, GET_TIMESTAMP, CONVERT_TIME, GET_WEEK_YEAR],\n };\n});\n\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n const { name, arguments: args } = request.params;\n try {\n switch (name) {\n case 'current_time': {\n if (!checkCurrentTimeArgs(args)) {\n throw new Error(`Invalid arguments for tool: [${name}]`);\n }\n\n const { format, timezone } = args;\n const result = getCurrentTime(format, timezone);\n return {\n success: true,\n content: [\n {\n type: 'text',\n text: `Current UTC time is ${result.utc}, and the time in ${result.timezone} is ${result.local}.`,\n },\n ],\n };\n }\n case 'relative_time': {\n if (!checkRelativeTimeArgs(args)) {\n throw new Error(`Invalid arguments for tool: [${name}]`);\n }\n\n const time = args.time;\n const result = getRelativeTime(time);\n return {\n success: true,\n content: [\n {\n type: 'text',\n text: result,\n },\n ],\n };\n }\n case 'days_in_month': {\n if (!checkDaysInMonthArgs(args)) {\n throw new Error(`Invalid arguments for tool: [${name}]`);\n }\n\n const date = args.date;\n const result = getDaysInMonth(date);\n return {\n success: true,\n content: [\n {\n type: 'text',\n text: `The number of days in month is ${result}.`,\n },\n ],\n };\n }\n case 'get_timestamp': {\n if (!checkTimestampArgs(args)) {\n throw new Error(`Invalid arguments for tool: [${name}]`);\n }\n const time = args.time;\n const result = getTimestamp(time);\n return {\n success: true,\n content: [\n {\n type: 'text',\n text: time \n ? `The timestamp of ${time} (parsed as UTC) is ${result} ms.`\n : `The current timestamp is ${result} ms.`,\n },\n ],\n };\n }\n case 'convert_time': {\n if (!checkConvertTimeArgs(args)) {\n throw new Error(`Invalid arguments for tool: [${name}]`);\n }\n const { sourceTimezone, targetTimezone, time } = args;\n const { sourceTime, targetTime, timeDiff } = convertTime(sourceTimezone, targetTimezone, time);\n return {\n success: true,\n content: [\n {\n type: 'text',\n text: `Current time in ${sourceTimezone} is ${sourceTime}, and the time in ${targetTimezone} is ${targetTime}. The time difference is ${timeDiff} hours.`,\n },\n ],\n };\n }\n case 'get_week_year': {\n if (!checkWeekOfYearArgs(args)) {\n throw new Error(`Invalid arguments for tool: [${name}]`);\n }\n const { date } = args;\n const { week, isoWeek } = getWeekOfYear(date);\n return {\n success: true,\n content: [\n {\n type: 'text',\n text: `The week of the year is ${week}, and the isoWeek of the year is ${isoWeek}.`,\n },\n ],\n };\n }\n default: {\n throw new Error(`Unknown tool: ${name}`);\n }\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n\n return {\n success: false,\n content: [\n {\n type: 'text',\n text: message,\n },\n ],\n };\n }\n});\n\nfunction getCurrentTime(format: string, timezone?: string) {\n const utcTime = dayjs.utc();\n const localTimezone = timezone ?? dayjs.tz.guess();\n const localTime = dayjs().tz(localTimezone);\n return {\n utc: utcTime.format(format),\n local: localTime.format(format),\n timezone: localTimezone,\n };\n}\n\nfunction getRelativeTime(time: string) {\n return dayjs(time).fromNow();\n}\n\nfunction getTimestamp(time?: string) {\n return time ? dayjs.utc(time).valueOf() : dayjs().valueOf();\n}\n\nfunction getDaysInMonth(date?: string) {\n return date ? dayjs(date).daysInMonth() : dayjs().daysInMonth();\n}\n\nfunction getWeekOfYear(date?: string) {\n const week = date ? dayjs(date).week() : dayjs().week();\n const isoWeek = date ? dayjs(date).isoWeek() : dayjs().isoWeek();\n return {\n week,\n isoWeek,\n };\n}\n\nfunction convertTime(sourceTimezone: string, targetTimezone: string, time?: string) {\n const sourceTime = time ? dayjs(time).tz(sourceTimezone) : dayjs().tz(sourceTimezone);\n const targetTime = sourceTime.tz(targetTimezone);\n const formatString = 'YYYY-MM-DD HH:mm:ss';\n return {\n sourceTime: sourceTime.format(formatString),\n targetTime: targetTime.format(formatString),\n timeDiff: dayjs(targetTime).diff(dayjs(sourceTime), 'hours'),\n };\n}\n\nfunction checkCurrentTimeArgs(args: unknown): args is { format: string, timezone?: string } {\n return (\n typeof args === 'object' &&\n args !== null &&\n 'format' in args &&\n typeof args.format === 'string' &&\n ('timezone' in args ? typeof args.timezone === 'string' : true)\n );\n}\n\nfunction checkRelativeTimeArgs(args: unknown): args is { time: string } {\n return (\n typeof args === 'object' &&\n args !== null &&\n 'time' in args &&\n typeof args.time === 'string'\n );\n}\n\nfunction checkDaysInMonthArgs(args: unknown): args is { date: string } {\n return (\n typeof args === 'object' &&\n args !== null &&\n 'date' in args &&\n typeof args.date === 'string'\n );\n}\n\nfunction checkTimestampArgs(args: unknown): args is { time?: string } {\n return (\n typeof args === 'object' &&\n args !== null &&\n 'time' in args &&\n (typeof args.time === 'string' || args.time === undefined)\n );\n}\n\nfunction checkConvertTimeArgs(args: unknown): args is { sourceTimezone: string, targetTimezone: string, time: string } {\n return (\n typeof args === 'object' &&\n args !== null &&\n 'sourceTimezone' in args &&\n typeof args.sourceTimezone === 'string' &&\n 'targetTimezone' in args &&\n typeof args.targetTimezone === 'string' &&\n 'time' in args &&\n typeof args.time === 'string'\n );\n}\n\nfunction checkWeekOfYearArgs(args: unknown): args is { date: string } {\n return (\n typeof args === 'object' &&\n args !== null &&\n ('date' in args ? typeof args.date === 'string' : true)\n );\n}\n\nasync function runServer() {\n try {\n\n process.stdout.write('Starting Time MCP server...\\n');\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n process.stderr.write(`Error starting Time MCP server: ${message}\\n`);\n process.exit(1);\n }\n}\n\nrunServer().catch(error => {\n const errorMessage = error instanceof Error ? error.message : String(error);\n process.stderr.write(`Error running Time MCP server: ${errorMessage}\\n`);\n process.exit(1);\n});","import { Tool } from '@modelcontextprotocol/sdk/types.js';\n\nexport const CURRENT_TIME: Tool = {\n name: 'current_time',\n description: 'Get the current date and time.',\n inputSchema: {\n type: 'object',\n properties: {\n format: {\n type: 'string',\n description: 'The format of the time, default is empty string',\n enum: [\n 'h:mm A',\n 'h:mm:ss A',\n 'YYYY-MM-DD HH:mm:ss',\n 'YYYY-MM-DD',\n 'YYYY-MM',\n 'MM/DD/YYYY',\n 'MM/DD/YY',\n 'YYYY/MM/DD',\n 'YYYY/MM',\n ],\n default: 'YYYY-MM-DD HH:mm:ss',\n },\n timezone: {\n type: 'string',\n description: 'The timezone of the time, IANA timezone name, e.g. Asia/Shanghai',\n default: undefined,\n },\n },\n required: ['format'],\n },\n};\n\nexport const RELATIVE_TIME: Tool = {\n name: 'relative_time',\n description: 'Get the relative time from now.',\n inputSchema: {\n type: 'object',\n properties: {\n time: {\n type: 'string',\n description: 'The time to get the relative time from now. Format: YYYY-MM-DD HH:mm:ss',\n },\n },\n required: ['time'],\n },\n};\n\nexport const DAYS_IN_MONTH: Tool = {\n name: 'days_in_month',\n description: 'Get the number of days in a month. If no date is provided, get the number of days in the current month.',\n inputSchema: {\n type: 'object',\n properties: {\n date: {\n type: 'string',\n description: 'The date to get the days in month. Format: YYYY-MM-DD',\n },\n },\n },\n};\n\nexport const GET_TIMESTAMP: Tool = {\n name: 'get_timestamp',\n description: 'Get the timestamp for the time.',\n inputSchema: {\n type: 'object',\n properties: {\n time: {\n type: 'string',\n description: 'The time to get the timestamp. Format: YYYY-MM-DD HH:mm:ss',\n },\n },\n },\n};\n\nexport const CONVERT_TIME: Tool = {\n name: 'convert_time',\n description: 'Convert time between timezones.',\n inputSchema: {\n type: 'object',\n properties: {\n sourceTimezone: {\n type: 'string',\n description: 'The source timezone. IANA timezone name, e.g. Asia/Shanghai',\n },\n targetTimezone: {\n type: 'string',\n description: 'The target timezone. IANA timezone name, e.g. Europe/London',\n },\n time: {\n type: 'string',\n description: 'Date and time in 24-hour format. e.g. 2025-03-23 12:30:00',\n },\n },\n required: ['sourceTimezone', 'targetTimezone', 'time'],\n },\n};\n\nexport const GET_WEEK_YEAR: Tool = {\n name: 'get_week_year',\n description: 'Get the week and isoWeek of the year.',\n inputSchema: {\n type: 'object',\n properties: {\n date: {\n type: 'string',\n description: 'The date to get the week and isoWeek of the year. e.g. 2025-03-23',\n },\n },\n },\n};\n"],"mappings":"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","names":["dayjs","relativeTime","utc","timezone","weekOfYear","isoWeek"]}