# MLIT DATA PLATFORM MCP Server ## 目次 - [MLIT DATA PLATFORM MCP Server](#mlit-data-platform-mcp-server) - [目次](#目次) - [1. 概要](#1-概要) - [2. 主な機能](#2-主な機能) - [3. 動作環境](#3-動作環境) - [4. インストールとセットアップ](#4-インストールとセットアップ) - [前提条件](#前提条件) - [手順](#手順) - [5. ディレクトリ構成](#5-ディレクトリ構成) - [6. ライセンス](#6-ライセンス) - [7. 注意事項](#7-注意事項) - [8. お問い合わせ](#8-お問い合わせ) ## 1. 概要 国土交通省が保有するデータと民間等のデータを連携し、一元的に検索・表示・ダウンロードを可能にする[国土交通データプラットフォーム](https://data-platform.mlit.go.jp/)が提供する利用者向けAPIと接続するMCP (Model Context Protocol) サーバー(α版)です。 本MCPサーバーを利用することで、大規模言語モデル(LLM)と直接連携し、対話形式で直感的にデータを検索・取得することが可能になります。APIに関する専門的な知識がなくても、誰でも簡単に国土交通データプラットフォームから曖昧な指示や複雑な条件設定でデータを検索・取得が可能な、新しいデータ活用のかたちを提供します。 ## 2. 主な機能 国土交通データプラットフォームの利用者向けAPIを活用し、以下の機能を提供します: * `search`(キーワードの指定によりデータを検索します。並べ替えや件数の指定も可能です。) * `search_by_location_rectangle`(指定した矩形範囲と交差するデータを検索します。) * `search_by_location_point_distance`(指定した地点と半径からなる円形範囲と交差するデータを検索します。) * `search_by_attribute`(カタログ名、データセット名、都道府県、市区町村などの属性を指定してデータを検索します。) * `get_data`(データの詳細情報を取得します。) * `get_data_summary`(データIDとタイトルなどのデータの基本情報を取得します。) * `get_data_catalog`(データカタログやデータセットの詳細情報を取得します。) * `get_data_catalog_summary`(IDやタイトルなどのデータカタログやデータセットの基本情報を取得します。) * `get_file_download_urls`(ファイルのダウンロード用URLを取得します(有効期限:60秒)。) * `get_zipfile_download_url`(複数ファイルをZIP形式でまとめたダウンロードURLを取得します(有効期限:60秒)。) * `get_thumbnail_urls`(サムネイル画像のURLを取得します(有効期限:60秒)。) * `get_all_data`(条件に一致する大量のデータを一括取得します。) * `get_count_data`(条件に一致するデータ件数を取得します。) * `get_suggest`(キーワード検索時の候補を取得します。) * `get_prefecture_data`(都道府県名・コードの一覧を取得します。) * `get_municipality_data`(市区町村名・コードの一覧を取得します。) * `get_mesh`(指定したメッシュに含まれるデータを取得します。) * `normalize_codes`(入力された都道府県名・市区町村名を正規化します。) ## 3. 動作環境 * OS:Windows 10 / 11 または macOS 13以降 * MCPホスト:Claude Desktopなど * MCPサーバー実行環境:Python 3.10+ * メモリ:8GB以上推奨 * ストレージ:空き容量 1GB以上(キャッシュやログを含む) ## 4. インストールとセットアップ ### 前提条件 Claude DesktopなどのMCP対応AIアプリケーション および Python がインストールされていることを前提としています。以下は、Claude Desktopでの利用を想定した手順です。 ### 手順 1. **国土交通データプラットフォームでアカウントを作成し、APIキーを取得** 詳しい手順は、[こちら](https://data-platform.mlit.go.jp/api_docs/usage/introduction.html)をご覧ください。 2. **リポジトリをクローン** ```bash git clone https://github.com/MLIT-DATA-PLATFORM/mlit-dpf-mcp.git cd mlit-dpf-mcp ``` 3. **仮想環境を作成 & 有効化** ```bash python -m venv .venv .venv\Scripts\activate # Windows source .venv/bin/activate # macOS/Linux ``` 4. **依存ライブラリをインストール** ```bash pip install -e . pip install aiohttp pydantic tenacity python-json-logger mcp python-dotenv ``` 5. **環境変数を設定** `.env.example`をコピーし、 `.env` ファイルを作成します: ``` MLIT_API_KEY=your_api_key_here MLIT_BASE_URL=https://data-platform.mlit.go.jp/api/v1/ ``` あるいはコマンドラインから直接設定することも可能です: ```bash export MLIT_API_KEY=your_api_key_here export MLIT_BASE_URL=https://data-platform.mlit.go.jp/api/v1/ ``` `your_api_key_here`は必ず、手順1で取得したAPIキーに置き換えてください。 6. **MCP サーバーの起動** ```bash python -m src.server ``` 7. **Claude Desktopの設定ファイルを開く** * **Windows:** `C:\Users\<ユーザー名>\AppData\Roaming\Claude\claude_desktop_config.json` * **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json` * Claude Desktopアプリの設定画面にある「開発者」メニューの「設定を編集」ボタンをクリックして`claude_desktop_config.json`を開くことも可能です。 8. **MCPサーバーの構成を追加** ```json { "mcpServers": { "mlit-dpf-mcp": { "command": "......./mlit-dpf-mcp/.venv/Scripts/python.exe", "args": [ "....../mlit-dpf-mcp/src/server.py" ], "env": { "MLIT_API_KEY": "your_api_key_here", "MLIT_BASE_URL": "https://data-platform.mlit.go.jp/api/v1/", "PYTHONUNBUFFERED": "1", "LOG_LEVEL": "WARNING" } } } } ``` `command`と`args`は必ず、実際のパスに変更してください。 `your_api_key_here`は必ず、手順1で取得したAPIキーに置き換えてください。 9. **Claude Desktop を再起動** ## 5. ディレクトリ構成 ``` mlit-dpf-mcp/ ├─ src/ │ ├─ server.py # MCP サーバー & ツール定義 │ ├─ client.py # MLIT GraphQL API クライアント │ ├─ schemas.py # Pydantic モデル(入力バリデーション) │ ├─ config.py # 環境変数ロード & 設定検証 │ └─ utils.py # ロギング、タイマー、レート制限 ├─ pyproject.toml ├─ README.md └─ LICENSE ``` ## 6. ライセンス * 本リポジトリはMITライセンスで提供されています。[ライセンス](./LICENSE)を参照してください。 ## 7. 注意事項 * 本リポジトリで提供されるデータの利用に関しては、 [国土交通データプラットフォームの利用規約](https://data-platform.mlit.go.jp/assets/policy/%E5%9B%BD%E5%9C%9F%E4%BA%A4%E9%80%9A%E3%83%87%E3%83%BC%E3%82%BF%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E5%88%A9%E7%94%A8%E8%A6%8F%E7%B4%84.pdf)に従う必要があります。ご使用前に国土交通データプラットフォームの利用規約を必ずご確認ください。 * 本リポジトリの個人情報の取り扱いは、[国土交通データプラットフォームのプライバシーポリシー](https://data-platform.mlit.go.jp/assets/policy/%E5%9B%BD%E5%9C%9F%E4%BA%A4%E9%80%9A%E3%83%87%E3%83%BC%E3%82%BF%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0_%E3%83%97%E3%83%A9%E3%82%A4%E3%83%90%E3%82%B7%E3%83%BC%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC.pdf)に準拠しております。 * 本リポジトリはα版として提供しているものです。動作保証は行っておりません。 * 本リポジトリの内容は予告なく変更・削除する可能性があります。 * 本リポジトリの利用により生じた損失及び障害等について、国土交通省及び国土交通データプラットフォームはいかなる責任も負わないものとします。 ## 8. お問い合わせ 本リポジトリはα版です。お気づきの点があれば下記お問い合わせフォームまでご連絡下さい。 * [国土交通データプラットフォームお問い合わせフォーム](https://docs.google.com/forms/d/e/1FAIpQLScHlMUInwpoyREX672SFJuwo8ZfpllQUatPuYNRiKYZkoe6nQ/viewform)