技術者向け

MCP Server ドキュメント

防災DB MCP Server の技術仕様・内部アーキテクチャ・認証フロー・エラーハンドリングを解説します。
AIツールの接続手順は AIと繋げる をご覧ください。

接続情報

エンドポイント https://bousaidb.jp/mcp
プロトコル Streamable HTTP(MCP 2025-03-26 spec)
認証 OAuth 2.1(Googleアカウント)
ディスカバリ /.well-known/oauth-authorization-server

リクエスト処理の流れ

1回の assess_risk 呼び出しで以下の処理が実行されます。

1
AI が施設名 → 住所に変換
「東京ビッグサイト」→「東京都江東区有明三丁目」。AI側の知識で解決(MCP外の処理)。ツール説明文に「施設名ではなく住所で入力」と記載済み。
2
住所 → 緯度経度(ジオコーディング)
外部API: 国土地理院ジオコーディングAPI(msearch.gsi.go.jp)。lat+lng直指定時はスキップ。
3
緯度経度 → 125mメッシュコード
内部計算: JIS標準地域メッシュコード(11桁)を数式で算出。外部通信なし。
4
メッシュコード → リスクデータ取得
BigQuery: Gold層 mesh_125m_* テーブルをクラスタリングキーで検索(数MB/クエリ)。
5
スコアリング → レスポンス
内部計算: フラジリティ曲線・INFORM方式で統合スコアを算出。

外部依存

依存先 用途 障害時の影響
国土地理院 API 住所→座標変換 住所検索が不可(lat/lng直指定は動作)
BigQuery メッシュデータ検索 全機能停止

認証フロー(OAuth 2.1)

MCP クライアントがOAuthディスカバリを検出し、自動で認証フローを開始します。

1. POST /oauth/register — Dynamic Client Registration(RFC 7591)
2. GET /oauth/authorize — Google Sign-In 画面を表示
3. GET /oauth/callback — 認可コード発行 → クライアントにリダイレクト
4. POST /oauth/token — PKCE検証 → Bearer トークン発行

認証が必要なメソッド

メソッド 認証
initialize 不要
tools/list 不要
notifications/initialized 不要
tools/call Bearer トークン必須

assess_risk

住所または座標から統合災害リスクスコアを取得。6種の災害(地震・洪水・津波・土砂災害・高潮・液状化)の個別スコアと統合スコアを返します。

パラメータ

名前 必須 説明
address string *1 日本語の住所(例: 「東京都江東区豊洲3丁目」)。施設名は不可。
lat number *1 緯度(WGS84)。ジオコーディングをスキップ。
lng number *1 経度(WGS84)。latと併用必須。
source string データソースモード(下記参照)

*1: address または lat+lng のいずれかが必須

主要レスポンスフィールド

フィールド 説明
address string ジオコーディング後の正規化住所
lat / lng number 緯度・経度(WGS84)
mesh_code string 125mメッシュコード(11桁)
overall_risk_score int 統合リスクスコア(0-100)
risk_level string 極めて低い / 低い / やや高い / 高い / 極めて高い
risks.{type}.score int 個別ハザードスコア(0-100)。type: earthquake / flood / tsunami / landslide / storm_surge / liquefaction
risks.{type}.coverage string in_area(区域内)/ outside_designated_area(区域外)
elevation_m number 標高(m)
nearby_active_faults array 近傍の活断層(距離・マグニチュード・30年発生確率)
fragility_analysis object 建物種別ごとの倒壊確率(木造旧耐震/新耐震/RC造等)
context object 周辺情報(人口・高齢化率・傾斜度)
scoring_methodology object スコアリングバージョン・算出方式

完全なレスポンスは実際にお試しください。スコアの算出ロジックは スコア計算ロジック を参照。

compare_locations

2〜5地点の災害リスクを一括比較。拠点選定やBCP策定に最適。

パラメータ

名前 必須 説明
addresses array Yes 住所の配列(2〜5件)。各要素は日本語住所文字列。

内部的に各住所で assess_risk を順次呼び出し、結果を統合して返します。5地点の場合、BQクエリ5回+ジオコーディング5回が発生します。

source パラメータ

挙動 精度 速度
auto 125mメッシュ(BQ Gold層)を優先。データなし時はGold市区町村レベルにフォールバック 1-3秒
gold 市区町村レベルのインメモリキャッシュのみ。BQクエリなし。 0.1秒
api 125mメッシュ + 外部API(J-SHIS・GSI標高)。最も詳細なデータ。 最高 3-10秒

エラーハンドリング

エラー 原因と対応
address_not_found 住所が特定できませんでした。より詳細な住所(丁目まで)を指定してください。
out_of_range 日本国外の座標が指定されました。
timeout 外部データソースの応答がタイムアウト。source: "gold" で高速応答可。
rate_limited 1日の利用上限に達しました。翌日UTC 0:00にリセットされます。
auth_required Bearer トークンなし。OAuth認証が必要です。

レート制限

制限単位 認証済みメールアドレス単位
対象メソッド tools/call のみ
リセット 毎日 UTC 0:00(JST 9:00)

大量リクエストが必要な場合は bousaidb@cabocia.jp までご連絡ください。

リクエストログ

全ての tools/call リクエストは以下の情報とともにログに記録されます。

  • 認証済みメールアドレス
  • 呼び出しツール名・引数
  • レスポンスタイム(ms)
  • ステータス(ok / error / rate_limited)