Local Utilities MCP Server
ローカルユーティリティMCPサーバー
様々なローカルシステムユーティリティへのアクセスを提供するモデルコンテキストプロトコル(MCP)サーバー。このサーバーは、Cursorやその他のMCP互換クライアントと併用することで、システム情報への迅速なアクセスを提供します。
特徴
サーバーは次のユーティリティを提供します。
時刻と日付: 現在の現地の時刻と日付(曜日を含む)をさまざまな形式で取得します
ホスト名: システムのホスト名を取得する
パブリックIP : マシンのパブリックIPアドレスを取得します
ディレクトリ一覧: 指定されたディレクトリの内容を一覧表示します
Node.js バージョン: 現在実行中の Node.js バージョンを取得します
ポートチェッカー: 特定のポートで実行されているプロセスを確認します
思考ツール: 開発セッション中に思考を記録、取得、分析します
Related MCP server: Simple MCP Server
インストール
グローバルインストール
pnpm add -g localutils-mcp-servernpx での使用
グローバルにインストールせずに、npx を使用してサーバーを直接実行することもできます。
npx localutils-mcp-server使用法
サーバーの起動
グローバルにインストールされている場合:
localutils-mcpnpx の場合:
npx localutils-mcp-serverカーソルの使用
Cursor の設定でサーバーを MCP サーバーとして構成することにより、Cursor でサーバーを使用できます。
カーソル設定を開く
MCPセクションに移動する
次の構成で新しい MCP サーバーを追加します。
{ "name": "localutils", "command": "npx", "args": ["localutils-mcp-server"] }
MCPインスペクターの使用
MCP Inspector を使用してサーバーをテストできます。
pnpm run inspectorこれにより、 http://localhost:5173で MCP Inspector が起動します。
利用可能なツール
get_time_and_date
現在のローカルの時刻と日付を、次のようなさまざまな形式で返します。
現地時間
現地の日付
曜日
ISO 8601形式
Unixタイムスタンプ
get_hostname
MCP サーバーを実行しているマシンのホスト名を返します。
get_public_ip
MCP サーバーを実行しているマシンのパブリック IP アドレスを返します。
list_directory
指定されたディレクトリの内容を一覧表示します。
パラメータ:
path(文字列、必須): リストへのディレクトリパス
get_node_version
MCP サーバーを実行している環境の Node.js バージョン情報を返します。
check_port
特定のポート上で実行されているプロセスを確認します。
パラメータ:
port(数値または文字列、必須):チェックするポート番号(1~65535)。文字列値は自動的に数値に変換されます。
応答例 (macOS/Linux):
{
"processes": [
{
"command": "node",
"pid": "12345",
"user": "username",
"fd": "12u",
"type": "IPv4",
"device": "0x1234567890",
"size": "0t0",
"node": "TCP",
"name": "*:3000 (LISTEN)"
}
],
"message": "Found 1 process(es) using port 3000"
}think
新しい考えをタイムスタンプとともに記録します。
パラメータ:
thought(文字列、必須): 記録する思考内容
応答例:
{
"success": true,
"data": {
"message": "Thought recorded successfully"
}
}get_thoughts
記録されたすべての考えを取得します。
応答例:
{
"success": true,
"data": {
"thoughts": [
{
"timestamp": "2025-03-24T15:00:00.000Z",
"content": "Need to update the documentation"
}
]
}
}clear_thoughts
記録された思考をすべて消去します。
応答例:
{
"success": true,
"data": {
"message": "All thoughts cleared"
}
}get_thought_stats
記録された思考に関する統計を返します。
応答例:
{
"success": true,
"data": {
"totalThoughts": 1,
"averageLength": 28,
"oldestThought": "2025-03-24T15:00:00.000Z",
"newestThought": "2025-03-24T15:00:00.000Z"
}
}発達
建物
pnpm run build開発モードで実行
pnpm run devテスト
pnpm testGitワークフロー
このリポジトリには、コミット前にサーバーを自動的にビルドするpre-commitフックが含まれています。これにより、リポジトリ内のビルドファイルが常に最新の状態になります。
ビルド フォルダーは、最初にビルドしなくても npx でパッケージを簡単に使用できるようにするために、git リポジトリに含まれています。
リポジトリのクローン作成後にコミット前フックを設定するには:
pnpm installこれにより、依存関係がインストールされ、Husky を介してコミット前のフックが設定されます。
ライセンス
マサチューセッツ工科大学
Available Tools
10 toolscheck_portD
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | Port number to check (1-65535) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_thoughtsA
Clear all recorded thoughts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a destructive action (clearing all thoughts) but does not disclose behavioral traits like permanence, undo capability, or confirmation requirements. Since no annotations are provided, the description carries the full burden, which is only partially met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no extraneous information, efficiently conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description fully specifies what the tool does. No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the input schema coverage is 100%. The description adds no parameter information, but with zero parameters, a baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Clear all recorded thoughts' uses a specific verb ('clear') and resource ('recorded thoughts'), clearly distinguishing it from sibling tools like 'get_thoughts' (retrieval) and 'think' (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While the purpose is clear, the description provides no guidance on when to use this tool versus alternatives (e.g., using 'get_thoughts' first) or warnings about irreversible action. However, for a simple deletion tool, the lack of detailed guidelines is less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hostnameA
Returns the hostname of the machine running the MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only states what is returned; no additional behavioral context (e.g., side effects, caching, permissions). Acceptable for a simple getter but does not exceed minimal expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose. No wasted words; efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no output schema, and a straightforward purpose, the description fully covers what the tool does. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters; baseline for no params is 4. The description does not need to add param details and adds no redundant information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'returns' and the resource 'hostname of the machine running the MCP server'. It distinguishes from siblings like get_public_ip which returns an IP address.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or alternatives, but the simplicity of the tool makes usage obvious. Lacks exclusions or when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_versionA
Returns the Node.js version information of the environment running the MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must convey behavioral traits. The description indicates a read-only operation via 'Returns', which is sufficient for this simple retrieval tool. It does not mention side effects, but none are expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose, with no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no input parameters, no output schema, no complex behavior), the description covers all necessary context for an agent to understand and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline score is 4. No additional parameter description is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb 'Returns' and specifies the resource 'Node.js version information of the environment running the MCP server', which is distinct from sibling tools like get_hostname or get_public_ip.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit usage guidelines or alternatives are given, but the purpose is self-explanatory: use it to get the Node.js version. For a simple tool, this implied usage is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_public_ipA
Returns the public IP address of the machine running the MCP server.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the basic behavior but does not disclose any potential side effects, network dependencies, or caching behavior. Since no annotations are present, the description carries full burden but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys all necessary information without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is complete enough: it explains the return value clearly and provides sufficient context for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty with 0 parameters; schema description coverage is 100%, so baseline is 4. No parameter information is needed, and the description adds nothing beyond.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the public IP address of the server, with a specific verb and resource. It is distinct from sibling tools like get_hostname and get_node_version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance is provided, but the tool is simple and self-contained with no alternatives, making its usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thoughtsB
Retrieve all recorded thoughts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description lacks behavioral details such as output format, ordering, or limits. Minimal disclosure beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four-word sentence is maximally concise and front-loaded with the action and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters, no output schema, and no annotations, the description is minimally adequate but leaves out return format and relationship to siblings like get_thought_stats.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so description cannot add value beyond schema. Baseline 3 is appropriate as it does not contradict or confuse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Retrieve' and resource 'all recorded thoughts', distinguishing from siblings like think (create) and get_thought_stats (statistics).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use vs alternatives like get_thought_stats or clear_thoughts. Agent must infer usage from name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thought_statsC
Get statistics about recorded thoughts
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Get statistics' implies a read operation with no side effects, but it does not disclose behavior for edge cases (e.g., empty thought list), performance implications, or whether it modifies any state. Minimal behavioral info.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks detail. It could be more informative without being verbose, e.g., specifying 'count, average, etc.'. Still, it is front-loaded and avoids redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema and no annotations, the description is incomplete. It does not clarify what statistics are returned (e.g., count of thoughts, time range, average length). For a tool with no parameters, the description should provide a clearer picture of the output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the input schema is fully covered. The description adds no parameter-specific meaning, but according to rules, baseline for 0 params is 4. No information is missing about parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get statistics about recorded thoughts', which is a verb+resource pattern. It distinguishes from siblings like 'get_thoughts' (which likely returns the full list) and 'think' (which creates a thought). However, it remains vague about what specific statistics are returned (e.g., count, frequency).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It does not mention that it provides summary data compared to 'get_thoughts' listing all thoughts, nor does it suggest prerequisites like 'think' first. The description is purely declarative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_time_and_dateA
Returns the current time, date, day of week, and timestamp in various formats
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses that the tool returns multiple pieces of data but does not specify the exact formats or whether the result is a single object or separate values. For a simple read-only tool, this is adequate but could be more precise.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that conveys all necessary information without any wasted words. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description provides a good overview of what is returned. However, it could be improved by specifying the return format (e.g., JSON object) or listing the exact formats. Despite this, it is sufficient for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema is fully covered (100%). Following the guidelines, a baseline score of 4 is appropriate since the description adds no param information, but none is needed. The description implicitly confirms no inputs required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns current time, date, day of week, and timestamp in various formats. It uses a specific verb ('Returns') and resource ('current time, date...') and distinguishes itself from sibling tools that provide other system information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like get_hostname or get_public_ip. However, the purpose is self-explanatory, so usage is implied. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryD
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory path to list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
thinkD
| Name | Required | Description | Default |
|---|---|---|---|
| thought | Yes | The thought content to record |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- First observed
check_port - First observed
clear_thoughts - First observed
get_hostname - First observed
get_node_version - First observed
get_public_ip - First observed
get_thought_stats - First observed
get_thoughts - First observed
get_time_and_date - First observed
list_directory - First observed
think
TDQS
Scored across 10 tools
Each tool has a distinct name and purpose, even though some lack descriptions. The 'get_*' tools clearly differentiate between hostname, node version, public IP, time/date, and thoughts, while 'list_directory', 'check_port', and the thought management tools are all distinct.
All tool names follow a consistent lowercase_snake_case pattern, predominantly using verb_noun structure (e.g., 'get_hostname', 'list_directory', 'clear_thoughts'). The single verb 'think' is a minor deviation but still fits the pattern.
10 tools is a reasonable number for a local utilities server, covering both system information and a thought management module without overloading the surface.
The thought management tools are complete, but the system utilities are sparse, lacking common operations like disk space, CPU usage, or process listing. This leaves notable gaps for a 'Local Utilities' server.
Maintenance
Related MCP Connectors
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
1Read-only developer, date, finance, and text utilities. Authless remote MCP server by Clean.tools.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceA comprehensive MCP server with 30+ custom tools organized into categories: date/time operations, file management, system information, text processing, and web operations. Enables async communication with robust error handling and flexible CLI integration.311MIT
- AlicenseNot gradedqualityDmaintenanceA self-contained, dependency-free MCP server that provides utility tools for time, date, mathematical calculations, and shell command execution. It supports remote connectivity through SSE and is designed for easy deployment via Docker.GPL 3.0
- FlicenseAqualityDmaintenanceA general-purpose MCP server providing time-related utilities such as fetching current time, Unix timestamps, and formatting services. It supports both local stdio and remote SSE communication modes for versatile AI client integration.3-
- AlicenseNot gradedqualityDmaintenanceLightweight MCP server providing system time tools (current time, date, datetime, time components, unix timestamp) for LLM applications.1MIT