概要: 国土交通省が公開している地理空間 MCP Server を業務用 AI チャットボットの裏側で使うために、サイドカーコンテナとして組み込むパターンを設計・実装した記録。Claude Desktop 想定で配布されている公式 MCP を Web サービスで動かす際に必要だった adaptation を 5 つの観点で整理する。
はじめに
業務用 AI チャットボットに「不動産情報や地理空間データを自然な会話の中で参照させたい」という要件を実現するため、国土交通省が α 版で公開している地理空間 MCP Server (chirikuuka/mlit-geospatial-mcp) を組み込む案件を検討した。
初期は「公式の MCP を採用すれば AI が裏でいい感じに使ってくれるはず」と楽観視していたが、実際に手を動かしてみると MCP Server は Claude Desktop 想定で作られた stdio 専用の subprocess であり、サーバーサイドの Web サービスから利用するには複数の adaptation が必要だった。本記事はその実装パターンと判断ポイントを整理したものである。
この記事でわかること
- MCP Server を ECS Fargate 上の Web サービスから安定して利用するアーキテクチャ
- Claude Desktop 専用 (stdio) の MCP Server を mcp-proxy 経由で HTTP 化する方法
- Function Calling ループと MCP セッション管理の実装パターン
- Feature Flag を 3 変数連動させて段階的にロールアウトする設計
- 公式 MCP を業務用途に組み込む際に踏みやすい落とし穴と回避策
対象読者
- バックエンドエンジニアで MCP Server を業務サービスに組み込みたい人
- 既存の FastAPI / OpenAI SDK ベースの AI チャットボットに MCP を追加したい人
- ECS Fargate 上でサイドカーパターンを採用するか迷っている人
- 「公式 MCP を採用すれば終わり」だと思っていた人(自分)
前提条件
- バックエンド: Python 3.13 + FastAPI、Azure OpenAI SDK で Function Calling を既に利用中
- インフラ: AWS ECS Fargate + ecspresso、Terraform で SSM/IAM/ECR を管理
- LLM: Azure OpenAI gpt-4o(128k context)