Skip to main content
Glama

Geo Home MCP

地価、駅徒歩、公共交通の移動時間から居住候補地域を比較し、PMTiles対応のインタラクティブ地図を表示するStreamable HTTP MCPサーバーです。

含まれるもの

  • Cloud Run向けMCPサーバー (/mcp)

  • list_layers, get_land_price, compute_commute, find_candidate_areas, compare_areas, build_area_map

  • MCP Appとして表示できるMapLibre地図

  • GCS上のPMTilesと地価JSONの読み込み

  • オープンデータから事前計算した公共交通時間(未収録の目的地は明示付きデモ推定)

  • GemiHub Business Agent PluginとCodex Pluginのmanifest

Related MCP server: Dilix MCP

ローカル起動

npm install
npm run dev

初期状態は data/land-prices.demo.json を使用します。この値はUI・ツール動作確認専用です。

実データ

LAND_PRICE_DATA_PATH にローカルJSONまたは gs://bucket/object.json を指定します。Cloud Runのサービスアカウントには対象オブジェクトの storage.objects.get を付与してください。JSONの配列要素は次の形です。

{
  "id": "unique-id",
  "area": "地域名",
  "station": "最寄駅",
  "municipality": "自治体",
  "lat": 35.6812,
  "lng": 139.7671,
  "pricePerSqm": 1000000,
  "previousPricePerSqm": 950000,
  "stationWalkMinutes": 8,
  "source": "国土交通省 不動産情報ライブラリ",
  "sourceUrl": "https://www.reinfolib.mlit.go.jp/",
  "observedAt": "2026-01-01",
  "commuteProfiles": [
    {
      "destination": "東京駅",
      "lat": 35.6812,
      "lng": 139.7671,
      "durationMinutes": 35,
      "transfers": 1,
      "source": "GTFS等からの事前計算",
      "observedAt": "2026-01-01"
    }
  ]
}

国土交通省APIの利用申請・利用条件を確認し、ETLでこの正規化形式へ変換してください。公示地価、基準地価、実取引価格は意味が異なるため、同一系列として混ぜないでください。本番では series などの列を追加して別レイヤー化することを推奨します。公共交通時間はGTFSなど再配布条件を確認できるオープンデータから事前計算し、出典と観測日を commuteProfiles に保持します。PMTilesは地価・候補地点の地図配信に使い、経路計算結果はこのJSONプロファイルから参照します。

PMTiles

.pmtiles をCloud Storageへアップロードし、CORSで Range リクエストを許可した配信URLを PMTILES_URL に設定します。ベクトルタイル内のsource layer名を PMTILES_SOURCE_LAYER に指定してください。

同梱デモデータからPMTilesを生成してTerraform管理のGCSバケットへ配置する場合:

gcloud builds submit \
  --region=asia-northeast1 \
  --config=cloudbuild-data.yaml \
  --service-account="projects/PROJECT_ID/serviceAccounts/geo-home-build@PROJECT_ID.iam.gserviceaccount.com" \
  .

このビルドはGeoJSONを生成し、tippecanoe 2.29.0で land-price source layerのPMTilesへ変換します。

例となるCORS設定:

[
  {
    "origin": ["https://YOUR_APP.example.com"],
    "method": ["GET", "HEAD"],
    "responseHeader": ["Content-Type", "Range", "Content-Range", "Accept-Ranges"],
    "maxAgeSeconds": 3600
  }
]

機密性が不要な地図タイルは公開読み取り+CDN、テナント固有データは認証付きRange proxyを推奨します。

Google Cloudインフラ

Geo Home専用GCPプロジェクトで自己完結する構成です。

  • Project: terraform.tfvars で指定する専用プロジェクト

  • Region: asia-northeast1(変更可能)

  • Artifact Registry: geo-home

  • Cloud Run runtime SA: geo-home-run

  • Cloud Build SA: geo-home-build

  • Terraform root module: terraform/

  • Cloud Run service: geo-home-mcp

  • GCS bucket: ${project_id}-geo-home(上書き可能)

Terraformが次を管理します。

  • Cloud Runサービス、スケーリング、health check、公開Invoker

  • GCSバケット、PMTiles用CORS、Cloud Run読み取り権限

  • 地価JSONとPMTilesのCloud Run環境変数

Cloud RunのコンテナイメージだけはTerraformの ignore_changes 対象です。既存メインサービスと同様、Terraformがインフラ、Cloud Buildがアプリケーションイメージを管理します。

1. インフラを作成

GCPプロジェクトを作成して課金アカウントへ接続した後、Terraform変数を設定します。プロジェクト作成自体をTerraformへ含めないことで、組織・Folder・Billing Accountのbootstrap権限とサービス用stateを分離しています。

project_id = "your-geo-home-project-id"
region     = "asia-northeast1"

bucket_name         = "your-geo-home-project-id-geo-home"
public_tiles        = true
cors_origins        = ["https://YOUR_GEMIBIZ_DOMAIN"]
land_price_object   = "land-prices.json"
pmtiles_object      = "land-price.pmtiles"
pmtiles_source_layer = "land-price"

オブジェクト名とSecret IDは、実データをまだ用意しない場合は空のままで構いません。その場合、組み込みデモデータと推定移動時間で起動します。

cp terraform/terraform.tfvars.example terraform/terraform.tfvars
# terraform/terraform.tfvars を編集
terraform -chdir=terraform init
terraform -chdir=terraform plan
terraform -chdir=terraform apply

初回Terraform applyではCloud Run公式helloイメージを使い、まだ存在しないGeo Homeイメージへの循環依存を避けます。

2. アプリケーションをデプロイ

Geo Home MCPリポジトリのルートから実行します。

./scripts/deploy.sh

スクリプトはこのリポジトリのTerraform outputからプロジェクト、リージョン、Artifact Registry、Cloud Build専用SAを取得してCloud Buildを実行します。Cloud Buildは作成済みCloud Runサービスのイメージだけを更新します。デプロイ後にCloud Run URLを取得し、mcp.json.mcp.json の接続先も自動更新します。更新された2ファイルはGitへcommitしてからAgent Pluginをインストールしてください。

別環境へ出す場合だけ GEO_PROJECT_IDGEO_REGIONGEO_SERVICE を上書きできます。ただしCloud Build側の _PROJECT_ID なども --substitutions で一致させてください。

Plugin接続先の更新

デプロイ後、発行されたCloud Run URLを次の2ファイルへ設定します。

  • mcp.json: GemiHub Business Agent Plugin用(streamable-http

  • .mcp.json: Codex Plugin用(http

現在の geo-home-mcp.example.com は安全なplaceholderです。scripts/deploy.sh がデプロイ後に実URLへ更新します。GemiHub Businessでは、更新をGitHubへpushした後にrepositoryをAgent Plugin設定画面からpreview・installします。インストール時に tools/list が自動実行されるため、通常はそのままチャットで利用できます。警告が表示された場合だけ、Settings > MCP Servers の接続テストで再試行してください。

チャット内で地図カードを表示するには、find_candidate_areas の後に build_area_map を呼び出します。build_area_map_meta.ui.resourceUri と候補を含む structuredContent を返し、GemiHub BusinessがPMTiles/MapLibre製のインタラクティブなMCP Appとして新しいアシスタントメッセージに表示します。修正前に保存済みの回答へカードを後付けすることはできないため、その場合は検索を再実行してください。

手動でURLだけ設定する場合:

node scripts/configure-plugin-url.mjs https://YOUR_SERVICE_URL/mcp

セキュリティ

MCPクライアントから到達できるよう、TerraformはCloud Run Invokerを allUsers に付与します。本番で認証を必須にする場合は google_cloud_run_v2_service_iam_member.geo_home_public をOAuth/API Gateway構成へ置き換え、Agent Plugin側にも認証設定を追加してください。

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

0Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

View all related MCP servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/takeshy/geo-home-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server