Chronos MCP Server について
Chronos MCP Serverは、タイムゾーンを指定して日時を取得する.NET Core製サーバーです。現在時刻を必要とするアプリケーション向けで、デフォルトタイムゾーンを任意設定でき、.NETツールまたはDockerコンテナとして配置できます。
主な機能
- 01タイムゾーン別の日時取得
- 02任意のデフォルトタイムゾーン設定
- 03無効なタイムゾーン要求の処理
- 04.NETツールまたはDockerコンテナでの配置
活用シーン
- 01指定したタイムゾーンの現在時刻取得
- 02指定がない場合の設定済みタイムゾーン利用
- 03MCP対応アプリケーションへの時刻データ提供
MCP 対応
指定または設定済みタイムゾーンの現在日時取得と、設定されたデフォルトタイムゾーンの参照に使うMCPツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Chronos MCP サーバー
Model Context Protocol(MCP)を実装した、時刻関連のサーバーです。このサーバーは、シンプルな MCP インターフェースを通じて、タイムゾーンに対応した日付と時刻の情報を提供します。
概要
Chronos MCP サーバーは、.NET Core と Model Context Protocol C# SDK(github.com/modelcontextprotocol/csharp-sdk)を使用して構築されています。さまざまなタイムゾーンの日付と時刻の情報にアクセスするためのツールを提供します。軽量な設計で、実用的な機能と適切なエラー処理を備えたカスタム MCP サーバーの作成方法を示します。マシンに直接デプロイすることも、Docker コンテナーとしてデプロイすることもできます。
機能
- 対応する任意のタイムゾーンで現在の日付と時刻を取得
- appsettings.json と環境変数によるデフォルトのタイムゾーンの任意設定
- 無効なタイムゾーンのリクエストやデフォルトのタイムゾーンがない場合の適切なエラー処理
- Result パターンによる関数型エラー処理
はじめに
前提条件
- .NET 10 SDK(ローカルでの開発または .NET ツールのインストール用)
- Docker(コンテナーとしてデプロイする場合)
ビルド手順(開発用)
ソースからプロジェクトをビルドする場合は、次の手順に従います。
-
このリポジトリをクローンします。
git clone https://github.com/aadversteeg/chronos-mcp-server.git -
プロジェクトのルートディレクトリに移動します。
cd chronos-mcp-server -
次のコマンドでプロジェクトをビルドします。
dotnet build src/chronos.sln -
テストを実行します。
dotnet test src/chronos.sln
Docker のサポート
DockerHub イメージ
Chronos MCP Server は、DockerHub の aadversteeg/chronos-mcp-server で利用できます。
# Pull the latest version
docker pull aadversteeg/chronos-mcp-server:latest
# Or pull a specific version
docker pull aadversteeg/chronos-mcp-server:0.0.1
Docker イメージの手動ビルド
Docker イメージを自分でビルドする必要がある場合は、次のコマンドを実行します。
# Navigate to the repository root
cd chronos-mcp-server
# Build the Docker image
docker build -f src/Core.Infrastructure.McpServer/Dockerfile -t chronos-mcp-server:latest src/
# Run the locally built image (with optional DefaultTimeZoneId)
docker run -d --name chronos-mcp -e "DefaultTimeZoneId=Europe/Amsterdam" chronos-mcp-server:latest
GitHub Actions による自動ビルド
このリポジトリには、バージョンタグが作成されると Docker イメージを自動的にビルドし、DockerHub にプッシュする GitHub Actions ワークフローが含まれています。
新しいビルドを開始するには、次の手順に従います。
-
セマンティックバージョンのタグを作成してプッシュします。
git tag 1.0.0 git push origin 1.0.0 -
ワークフローによって、次のタグを付けた Docker イメージが自動的にビルドされ、プッシュされます。
aadversteeg/chronos-mcp-server:latestaadversteeg/chronos-mcp-server:1.0.0
.NET ツール
Chronos MCP Server は、NuGet の .NET グローバルツールとして利用できます。
インストール
dotnet tool install --global Ave.McpServer.Chronos
実行
ave-mcpserver-chronos
一度だけ実行する(永続的なインストールなし)
.NET 10 SDK では、dotnet tool exec を使用して、グローバルにインストールせずにツールを実行できます。
dotnet tool exec -y ave.mcpserver.chronos
-y フラグを指定すると、プロンプトに自動的に同意します。ツールはローカルにキャッシュされますが、PATH には追加されません。
MCP プロトコルの使用方法
クライアントとの統合
アプリケーションから Chronos MCP Server に接続するには、次の手順に従います。
- Model Context Protocol C# SDK、または MCP 互換のクライアントを使用します
- サーバーのエンドポイントに接続するようクライアントを設定します
- 以下に記載されている利用可能なツールを呼び出します
利用可能なツール
get_current_date_and_time
指定したタイムゾーン、またはデフォルトのタイムゾーン(設定されている場合)で、現在の日付と時刻を取得します。
パラメーター:
timezoneId(DefaultTimeZoneId が設定されている場合は省略可能):タイムゾーン識別子(例:'America/New_York'、'Eastern Standard Time')。DefaultTimeZoneId が設定されていない場合、このパラメーターは必須です。
リクエスト例:
{
"name": "get_current_date_and_time",
"parameters": {
"timezoneId": "Europe/London"
}
}
レスポンス例:
{
"date": "2023-12-25",
"time": "12:00:00",
"timezone": "Europe/London"
}
get_default_timezone_id
サーバーに設定されているデフォルトのタイムゾーン識別子を取得します。デフォルトのタイムゾーンが設定されていない場合は、エラーを返します。
リクエスト例:
{
"name": "get_default_timezone_id",
"parameters": {}
}
レスポンス例(設定されている場合):
Europe/Amsterdam
エラーレスポンス例(設定されていない場合):
{
"error": {
"message": "DefaultTimeZoneId is not set.",
"code": "NoDefaultTimeZoneId"
}
}
設定
DefaultTimeZoneId
DefaultTimeZoneId 設定では、特定のタイムゾーンが指定されていない場合に使用するタイムゾーンを決定します。この値は、オペレーティングシステムが認識する有効なタイムゾーン識別子である必要があります。この設定は省略可能です。指定しなくてもサーバーは動作しますが、リクエストごとにタイムゾーン ID パラメーターを指定する必要があります。
DefaultTimeZoneId は、次の 2 つの方法で設定できます。
- appsettings.json ファイル(ローカルデプロイの場合):
{
"DefaultTimeZoneId": "America/New_York"
}
- 環境変数(コンテナー化されたデプロイの場合):
# When running the Docker container
docker run -e "DefaultTimeZoneId=Europe/Amsterdam" aadversteeg/chronos-mcp-server:latest
有効なタイムゾーン識別子には、次のものがあります。
- 標準的な IANA タイムゾーン名(例:「America/New_York」、「Europe/London」、「Asia/Tokyo」)
- Windows のタイムゾーン ID(例:「Eastern Standard Time」、「W. Europe Standard Time」)
DefaultTimeZoneId 設定を指定しない場合、デフォルトのタイムゾーンは使用されず、リクエストごとにタイムゾーン ID パラメーターを明示的に指定する必要があります。
Claude Desktop / Claude Code の設定
設定ファイルの mcpServers セクションにサーバー設定を追加します。
.NET Tool を使用する場合
.NET 10 SDK が必要です。この方法では、初回使用時にツールが自動的にダウンロードされ、その後の実行時には最新バージョンに更新されます。
"chronos": {
"command": "dotnet",
"args": [
"tool",
"exec",
"-y",
"ave.mcpserver.chronos"
],
"env": {
"DefaultTimeZoneId": "Europe/Amsterdam"
}
}
グローバルインストールを使用する場合
.NET 10 SDK が必要です。ツールを一度インストールすれば、その後は直接使用できます。
dotnet tool install --global Ave.McpServer.Chronos
"chronos": {
"command": "ave-mcpserver-chronos",
"env": {
"DefaultTimeZoneId": "Europe/Amsterdam"
}
}
更新するには、dotnet tool update --global Ave.McpServer.Chronos を実行します。
Docker を使用する場合
.NET 10 SDK は必要ありません。
"chronos": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "DefaultTimeZoneId=Europe/Amsterdam",
"aadversteeg/chronos-mcp-server:latest"
]
}
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。