MCPサーバー「Thousand API」に12個のツールを追加した

はじめに

以前こちらの記事でリリース報告をしました。

http:/localhost:8080/articles/thousand-api/thousand-api-mcp-personal-dev

あれからコツコツとツールを追加し続け、気づいたら18種類のツールが揃いました。
今回は追加したツールの紹介と、実装していく中で気づいたことをまとめます。


追加したツール一覧

リリース時点では6種類でしたが、現在は以下の18種類になりました。

カレンダー・日付

ツール名説明
get_holidays指定した国・年の祝日一覧を取得
is_holiday指定日が祝日かどうかを判定
add_business_daysN 営業日後の日付を計算
calc_scheduleタイムゾーン変換・DST 考慮のスケジュール計算
get_cron_nextCron 式を解析して次回実行日時を計算

データ・外部情報

ツール名説明
get_exchange_rate2 通貨間の為替レートと換算結果を取得
get_ip_infoIP アドレスの地理情報を取得
get_page_metaURL の OGP・メタ情報を取得

ユーティリティ

ツール名説明
get_distance2 地点間の地上距離(メートル)を計算
get_qrcodeQR コード画像を生成
validate_jsonJSON パース・JSON Schema 検証・構文エラー修復
get_text_stats文字数・単語数・段落数・推定読了時間を計算
resolve_urlURL の最終リダイレクト先を追跡
inspect_urlURL のヘルスチェック(ステータス・SSL・ヘッダー等)
convert_markdownMarkdown を HTML に変換
generate_color_palette基準色からカラーパレットを生成
decode_jwtJWT をデコード(署名検証なし)
convert_unit長さ・重さ・温度などの単位変換

特に気に入っているツール3選

1. JSON Schema Validator & Repair

AIが生成したJSONをそのままAPIに投げて検証し、構文エラーがあればauto_repair: trueで自動修復できます。

// 末尾カンマがあっても自動修復
{
  "json_str": "{\"name\": \"test\",}",
  "auto_repair": true
}

// レスポンス
{
  "valid": true,
  "repaired": true,
  "json": { "name": "test" },
  "errors": []
}

AIエージェントの自律的な自己修正ループに組み込めます。
「JSONを生成 → 検証 → エラーがあれば修復 → 再検証」という流れがツール1つで完結します。

2. Cron式パーサー

「このCronジョブは次いつ動く?」をAIが確実に答えられるようになります。

GET /v1/cron/next?expression=0+9+*+*+1-5&count=3&timezone=Asia/Tokyo
{
  "expression": "0 9 * * 1-5",
  "description": "At 09:00 AM, Monday through Friday",
  "timezone": "Asia/Tokyo",
  "next": [
    "2026-05-25T00:00:00.000Z",
    "2026-05-26T00:00:00.000Z",
    "2026-05-27T00:00:00.000Z"
  ]
}

タイムゾーン指定でDSTも自動考慮されます。

3. URLヘルスチェック

URLのステータスコード・SSL証明書の有効期限・レスポンスタイムを返します。

{
  "url": "https://example.com",
  "status_code": 200,
  "response_time_ms": 234,
  "reachable": true,
  "ssl": {
    "valid": true,
    "expires_at": "2027-01-01T00:00:00.000Z",
    "days_remaining": 220,
    "issuer": "Amazon"
  }
}

resolve_urlと組み合わせることで、
「短縮URLの最終リダイレクト先のSSL証明書を確認する」
といった複合的な使い方もできます。


実装していて気づいたこと

MCPとして価値があるAPIの条件

18種類のツールを作ってきて、「MCPとして使われるAPI」の条件が見えてきました。

① AIが自前で処理すると誤差・誤りが生じる処理

営業日計算・タイムゾーン変換・単位変換などは、AIが推論で処理すると稀に間違えます。
ハッシュ化なんかも意外と間違った結果を出したりしてきます。
「確実な値が必要」なときに外部ツールを呼ぶ動機が生まれます。
また、生成したものを検証するような使い方もできれば、さらに確実性が上がると思います。

② リアルタイムデータが必要な処理

為替レート・IPジオロケーションなど、学習データに含まれない「今の情報」はAIが自前で持てません。

③ 副作用が必要な処理

QRコード生成・画像変換など、何かを「生成・出力」する処理はテキスト生成だけのAIにはできません。できたとしても、それっぽいものしかできません。

逆に「AIが自前でできる処理(Base64エンコード・UUID生成など)」はMCPとして提供しても呼ばれません。最初にこの設計を間違えると誰にも使われないMCPサーバーになります。

Hono + Lambda の相性の良さ

全APIをHono on Lambdaで実装しています。
1関数 = 1カテゴリで分割しているので、特定のAPIだけデプロイし直す場合もCDKで簡単に管理できます。

// packages/api/src/functions/calendar/index.ts
const app = new Hono();
app.use('*', trackUsage());
app.get('/v1/calendar/holidays',      holidaysHandler);
app.get('/v1/calendar/is-holiday',    isHolidayHandler);
app.get('/v1/calendar/business-days', businessDaysHandler);
export const handler = handle(app);

シンプルで気に入っています。


MCPへの接続方法

Claude DesktopやCursorの設定ファイルに以下を追加するだけです。

{
  "mcpServers": {
    "thousand-api": {
      "url": "https://mcp.thousand-api.com/mcp",
      "headers": {
        "x-api-key": "YOUR_API_KEY"
      }
    }
  }
}

APIキーは無料で発行できます。

https://www.thousand-api.com

今後の予定

  • ハッシュ生成(MD5・SHA-256など)
  • 通貨フォーマット(カンマ区切りや通貨の記号など)
  • 各種フォーマットバリデーション(IP, Email, CIDR, URL, クレカなど)

引き続き「AIが自前では処理できないこと」を増やしていきます。
フィードバックや要望は https://www.thousand-api.com/contact からどうぞ。