mcpField
D
Date Math

Date Math

リモート
github.comその他11 日前に更新
リポジトリ公式サイト

Date Math について

Date Mathは、正確な日付・時刻計算を必要とするエージェント向けのHTTP/MCPサービスです。営業日、タイムゾーン、繰り返し日程などを扱い、MCPツールを毎日25回まで無料で呼び出せます。

主な機能

  1. 01祝日を考慮した営業日計算
  2. 02日付の加算と期間計算
  3. 03夏時間対応のタイムゾーン変換
  4. 04CronとRRULEの日程処理
  5. 05都市時刻と給与支払日の確認

活用シーン

  1. 01営業日と祝日をまたぐ期限の算出
  2. 02会議可能な勤務時間帯の特定
  3. 03繰り返し日程を具体的な日付に展開

MCP 対応

ステートレスなStreamable HTTP MCPエンドポイントで、日付・時刻計算ツールを提供します。ツール呼び出しは毎日25回まで無料で、それ以降はx402による支払いが必要です。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://date-math.datemath.workers.dev/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npmdate-math-mcp1.5.0

ツール

詳細

Date Math

AI エージェント向けの正確な日付・時刻計算。呼び出しごとの従量課金です。 LLM は営業日、夏時間、定期スケジュール、祝日カレンダーの計算が苦手です。Date Math は HTTP または MCP 経由で、確定的な回答を提供します。

  • 料金: x402 経由で Base 上の USDC による、呼び出し 1 回あたり $0.001
  • 無料でお試し: 1 日 25 回まで MCP ツールの呼び出しが無料。あらゆる MCP アプリ(Claude Desktop、Cursor、...)で利用できます
  • アクセス: サインアップ不要、API キー不要
  • ベース URL: https://date-math.datemath.workers.dev
  • MCP エンドポイント: https://date-math.datemath.workers.dev/mcp(Streamable HTTP)
  • エージェント向けドキュメント: /llms.txt · /openapi.json

ツール

HTTP(POST、JSON ボディ)MCP ツール機能
/v1/diffdate_diff2 つの日付間の日数、週数、月数、営業日数を計算します。祝日を除外するには country を、月曜から金曜以外の週を指定するには workdays を渡します。
/v1/adddate_add日付の前後に N 日、週、月、または営業日を加えた日付を返します
/v1/converttimezone_convertIANA タイムゾーン間で時刻を変換します(夏時間に対応)
/v1/infodate_info曜日、ISO 週、四半期、年通算日、うるう年を返します
/v1/holidayspublic_holidays207 か国の祝日を 2000 年から 2050 年まで返します
/v1/overlapworking_hours_overlapタイムゾーンをまたいで勤務時間が重なる時間帯を返します(会議の時間枠)
/v1/croncron_schedulecron 式を説明し、任意のタイムゾーンで次回の実行日時を一覧表示します
/v1/parseparse_date_text「next Friday at 3pm」を正確な ISO 日時に変換します
/v1/citycity_time都市名からタイムゾーンと現地時刻を返します(7,000 以上の都市)
/v1/recurrencerecurring_datesiCal RRULE(「毎月第 2 火曜日」など)を日付の一覧に展開します
/v1/business_hoursbusiness_hours_deadline今から N 営業時間後の SLA 期限、または経過した勤務時間を返します
/v1/business_daybusiness_day日付が営業日かどうか、営業日でない場合はその理由(週末または該当する祝日)を返します。また、次または前の営業日や、その月の営業日一覧も返します
/v1/pay_datespay_dates給与および請求の日付(月次、15 日と月末、隔週、週次)を、週末や祝日を避けて返します

アプリでの利用方法

以下のすべてで、1 日あたり最初の 25 回のツール呼び出しは無料です。サインアップも API キーも不要です。

Claude Code

claude mcp add --transport http date-math https://date-math.datemath.workers.dev/mcp

Claude Desktop / claude.ai: Settings → Connectors → Add custom connector を選択し、https://date-math.datemath.workers.dev/mcp を貼り付けます。または、claude_desktop_config.json でローカルパッケージを使用します。

{ "mcpServers": { "date-math": { "command": "npx", "args": ["-y", "date-math-mcp"] } } }

Cursor(~/.cursor/mcp.json)

{ "mcpServers": { "date-math": { "url": "https://date-math.datemath.workers.dev/mcp" } } }

VS Code(.vscode/mcp.json)

{ "servers": { "date-math": { "type": "http", "url": "https://date-math.datemath.workers.dev/mcp" } } }

Windsurf(~/.codeium/windsurf/mcp_config.json)

{ "mcpServers": { "date-math": { "serverUrl": "https://date-math.datemath.workers.dev/mcp" } } }

Cline(MCP Servers → Configure)

{ "mcpServers": { "date-math": { "type": "streamableHttp", "url": "https://date-math.datemath.workers.dev/mcp" } } }

ローカルコマンドのみを実行するアプリ: npx -y date-math-mcp(npm パッケージ)を使用します。DATE_MATH_PRIVATE_KEY に Base 上の USDC を保有するウォレットを設定すると、無料枠を超えた呼び出しの料金が自動で支払われます。

Vercel AI SDK

import { createMCPClient } from "@ai-sdk/mcp";

const mcp = await createMCPClient({ transport: { type: "http", url: "https://date-math.datemath.workers.dev/mcp" } });
const tools = await mcp.tools(); // pass to generateText / streamText

LangChain / LangGraph(Python)

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({"date-math": {"transport": "streamable_http", "url": "https://date-math.datemath.workers.dev/mcp"}})
tools = await client.get_tools()

営業日関連のツールでは、異なる週の勤務日を指定するために workdays(曜日番号。0 = 日曜日)を指定できます。例:日曜から木曜の場合は [0,1,2,3,4]、月曜から土曜の場合は [1,2,3,4,5,6] です。

すべてのレスポンスは JSON オブジェクトです。エラーは {"error":{"code","message","example"}} の形式で、example はそのツールで有効なリクエストボディです。スキーマと例の全体は /openapi.json をご覧ください。

例

# Unpaid call → HTTP 402 with payment terms in the PAYMENT-REQUIRED header
curl -i -X POST https://date-math.datemath.workers.dev/v1/business_hours \
  -H "Content-Type: application/json" \
  -d '{"start":"2026-11-06T16:00","hours":2,"timezone":"Asia/Manila","country":"PH"}'
リクエスト本文結果
/v1/business_hours {"start":"2026-11-06T16:00","hours":2,"timezone":"Asia/Manila"}"deadline":"2026-11-09T10:00:00+08:00"(月曜日)
/v1/add {"date":"2026-12-22","business_days":5,"country":"PH"}"result":"2026-12-31"(クリスマスとリサール記念日を除外)
/v1/overlap {"timezones":["Asia/Manila","Europe/London"],"date":"2026-11-10","work_end":"18:00"}1つの時間帯:09:00–10:00Z
/v1/recurrence {"rrule":"FREQ=MONTHLY;BYDAY=2TU","start":"2026-01-01T10:00","timezone":"Asia/Manila","count":3}1月13日、2月10日、3月10日の10:00 +08:00
/v1/business_day {"date":"2026-12-25","country":"PH"}営業日ではありません:"holiday":"Christmas Day"、次の営業日は2026-12-28
/v1/pay_dates {"schedule":"semi_monthly","from":"2027-01-01","count":2}1月15日、その次は1月31日(日曜日)の振替日である1月29日(金曜日)

コードからの支払い

x402 クライアントならどれでも自動的に支払いを行います。公式の TypeScript クライアントを使用する場合:

import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";

const pay = wrapFetchWithPaymentFromConfig(fetch, {
  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(privateKeyToAccount(process.env.KEY as `0x${string}`)) }],
});

const res = await pay("https://date-math.datemath.workers.dev/v1/city", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ cities: ["Cebu", "London"] }),
});
console.log(await res.json());

ウォレットには Base 上の USDC が必要です。ガス代はファシリテーターが支払うため、ETH は不要です。

MCP 経由での利用

  • エンドポイント: https://date-math.datemath.workers.dev/mcp(Streamable HTTP、ステートレス)
  • ツールの一覧表示(tools/list)は無料です。
  • 1日あたり最初の25回のツール呼び出しは無料です(IPごとに適用され、00:00 UTCにリセットされます)。無料の各結果には_meta["date-math/free_calls_remaining"]が含まれます。
  • それ以降の各ツール呼び出しには、x402 MCP 経由で$0.001かかります。支払い情報はツール呼び出しの_metaに含まれ、x402対応クライアントが自動的に処理します:
import { createx402MCPClient } from "@x402/mcp";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = createx402MCPClient({
  name: "my-agent", version: "1.0.0",
  schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],
  autoPayment: true,
});
await client.connect(new StreamableHTTPClientTransport(new URL("https://date-math.datemath.workers.dev/mcp")));
const r = await client.callTool("public_holidays", { country: "US", year: 2026 });

x402に対応していない MCP クライアントも、1日あたりの無料呼び出しを利用できます。無料枠を使い切ると、呼び出しは「Payment required」を返します。支払い情報を添付したクライアントは、無料呼び出しを消費しません。

無料枠は MCP のみです。x402のディスカバリーサービスが確認するため、通常の HTTP 呼び出しには常に支払いが必要です(未払いの呼び出しは402を返します)。

独自のコピーを実行する

このサービスは単一の Cloudflare Worker で構成され、無料プランで利用できます。各ツールの呼び出しにかかる CPU 時間は0~6ミリ秒です。

cd worker
npm install
npm test                 # 189 tests, including end-to-end payments with the real x402 clients
npx wrangler login
npx wrangler deploy

worker/wrangler.tomlで独自のウォレットと価格を設定します:

設定意味
PAY_TOウォレットアドレスです。空欄にすると、すべてのエンドポイントが無料になります。
PRICE呼び出しごとの価格。例:$0.001
X402_NETWORKeip155:8453(Base)またはeip155:84532(Base Sepolia、テスト用)
FACILITATOR_URLデフォルトはPayAIです。キーは不要で、ガス代も支払われます
FREE_CALLS_PER_DAYIPごとの1日あたり無料 MCP ツール呼び出し回数(デフォルトは25、0にすると無効になります)。カウンターはFREE_QUOTA Durable Objectに保存されます。

任意のシークレット(npx wrangler secret putで設定):

  • CDP_API_KEY_ID、CDP_API_KEY_SECRET: まずCoinbaseのファシリテーター経由で決済します。
  • POCKET_PREFIX: 信頼できるリレー向けの、非公開かつ未払いのパスです。

デプロイをx402scanのディスカバリールールに照らして確認するには、node tools/x402scan-audit.mjs https://your-worker.workers.devを実行します。 実際に支払い(エージェントの支払い方法と同じ HTTP および MCP 経由の支払い)を受け付けられることを確認するには、API_URL=https://your-worker.workers.dev EXPECTED_PAY_TO=0xYourWallet node worker/scripts/payment-monitor.mjsを実行します。

構築方法

  • スタック: Cloudflare Workers 上の Hono と、@x402/hono、@x402/mcp を使用しています。
  • 検出: x-payment-info を含む OpenAPI、/.well-known/x402、すべての 402 レスポンスに含まれる x402 Bazaar メタデータ、llms.txt、および /.well-known/ai-catalog.json に登録された /mcp/server-card の MCP サーバーカード を提供しています。
  • 事前計算データ: 祝日と都市のテーブルはビルド時に構築されるため(worker/scripts/build-*.mjs)、各リクエストでの検索は O(1) です。
  • タイムゾーン: UTC オフセットは、キャッシュされた Intl フォーマッターと週単位のセグメントキャッシュから取得します。複雑なタイムゾーン(モロッコ、ロードハウ島、チャタム諸島)について、直接検索した結果と照合してテストしています。
  • Cron: 組み込みエンジン(worker/src/cron.ts)を、400 個のランダムな式で cron-parser と照合しています。
  • Workers 固有のシム: x402 の Bazaar ルートバリデーターは Ajv のコード生成(new Function)を使用しますが、Workers ではブロックされます。wrangler.toml でこれを何もしないシム(worker/src/shims/bazaar.ts)にエイリアスしています。

データとライセンス

  • コード: MIT。詳細は LICENSE をご覧ください。サードパーティデータに関する通知は NOTICE に記載されています。
  • 祝日データ: date-holidays(CC BY 3.0)に基づいています。太陰暦に基づく日付や政府が宣言する日付は、ルールに基づく推定値です。
  • 都市データ: Natural Earth(パブリックドメイン)に基づく city-timezones(MIT)に由来します。

お問い合わせ先:/openapi.json の info.contact をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。