🚀 IGN API Carto MCP Server
このサーバーは、Claude Desktopやその他のMCP互換クライアントから、直接IGN (Institut national de l'information géographique et forestière) の豊富な地理データにアクセスできるようにします。IGN API Cartoエコシステムの主要なAPIを公開し、自然言語でフランスの地籍、農業、環境、都市計画、行政データを照会できます。
🚀 クイックスタート
このサーバーを使用することで、Claude Desktopやその他のMCP互換クライアントから、自然言語でフランスの地理データにアクセスできます。以下の手順でセットアップしてください。
✨ 主な機能
利用可能なツール
| ツール |
説明 |
使用例 |
ign_get_communes_by_postal_code |
郵便番号に関連付けられたコミューンを取得 |
住所解決、郵便統計 |
ign_get_cadastre_parcelles |
地籍区画を検索 |
土地調査、不動産分析 |
ign_get_cadastre_communes |
地籍上のコミューンの境界を取得 |
地域区画、地図作成 |
ign_get_rpg |
土地図形登録簿 (RPG) を照会 |
農業分析、環境 |
ign_get_nature_areas |
自然保護区域 (Natura 2000、ZNIEFF、公園) |
環境調査、生物多様性 |
ign_get_gpu_urbanisme |
都市計画地理ポータルの都市計画データ |
PLU確認、建築可能性 |
ign_get_aoc_viticoles |
ワイン産地名称 (AOC、IGP、VSIG) の区域 |
ブドウ栽培、地理マーケティング |
ign_wfs_geoportail |
地理ポータルのWFSフローへの汎用アクセス |
様々な地理データ |
ign_get_administrative_limits |
行政境界 (コミューン、県、地域) |
地域区画、統計 |
📦 インストール
1. リポジトリをクローンする
git clone https://github.com/votre-utilisateur/ign-apicarto-mcp-server.git
cd ign-apicarto-mcp-server
2. 依存関係をインストールする
npm install
3. 環境変数を設定する
cp .env.example .env.local
.env.local を編集し、ワイン産地名称のエンドポイントを使用する場合は、IGNのAPIキーを追加します。
IGN_API_KEY=votre_cle_api
4. プロジェクトをコンパイルする
npm run build
コンパイルされたサーバーは dist/ ディレクトリに配置されます。
📚 ドキュメント
コンフィギュレーション
このMCPサーバーをお使いの好みのAIクライアントで設定します。使用しているクライアントをクリックして、詳細な手順を表示します。
🖥️ Claude Desktop
Claude Desktopの設定
claude_desktop_config.json ファイルに以下の設定を追加します。
ファイルの場所 :
| システム |
パス |
| macOS |
~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows |
%APPDATA%\Claude\claude_desktop_config.json |
| Linux |
~/.config/Claude/claude_desktop_config.json |
設定 :
{
"mcpServers": {
"ign-apicarto": {
"command": "node",
"args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
}
}
}
⚠️ 重要 : /chemin/absolu/vers/ をインストール先の完全なパスに置き換えてください。
⌨️ Claude Code (CLI)
Claude Codeの設定
Claude Codeは、MCPサーバーの設定に .mcp.json ファイルを使用します。
プロジェクト設定 (推奨) :
プロジェクトのルートに .mcp.json ファイルを作成します。
{
"mcpServers": {
"ign-apicarto": {
"command": "node",
"args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
}
}
}
グローバル設定 :
すべてのプロジェクトで使用する場合は、~/.claude/.mcp.json にファイルを作成します。
サーバーを有効にする :
初回起動時に、Claude Codeはサーバーの承認を求めます。また、設定に以下を追加することで自動的に有効にすることもできます。
{
"enableAllProjectMcpServers": true
}
または、具体的に以下のように設定します。
{
"enabledMcpjsonServers": ["ign-apicarto"]
}
📝 Cursor
Cursorの設定
Cursorは、MCP設定に mcp.json ファイルを使用します。
ファイルの場所 :
| 範囲 |
パス |
| プロジェクト |
.cursor/mcp.json (プロジェクトのルート) |
| グローバル |
~/.cursor/mcp.json |
設定 :
{
"mcpServers": {
"ign-apicarto": {
"command": "node",
"args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
}
}
}
環境変数を使用する場合 (オプション) :
{
"mcpServers": {
"ign-apicarto": {
"command": "node",
"args": ["${workspaceFolder}/ign-apicarto-mcp-server/dist/index.js"],
"env": {}
}
}
}
サーバーを有効にする :
- Cursorの設定を開きます (
Cmd/Ctrl + ,)
- "MCP" を検索します
- MCPサーバーを有効にします
- Cursorを再起動します
🤖 OpenAI Codex CLI
Codex CLIの設定
OpenAI Codex CLIは、設定ファイルを介してMCPプロトコルもサポートしています。
ファイルの場所 :
~/.codex/mcp.json
設定 :
{
"mcpServers": {
"ign-apicarto": {
"command": "node",
"args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
}
}
}
注意 : Codex CLIがMCPサーバーを使用するように設定されていることを確認してください。MCPプラグインの有効化に関する詳細は、Codexの公式ドキュメント を参照してください。
🚀 Google Antigravity
Google Antigravityの設定
Google Antigravity は、Googleのエージェント型開発プラットフォームで、公開プレビューとして無料で利用できます。
MCP設定にアクセスする :
- サイドパネルの Agent session をクリックします
- パネル上部の "..." メニューを選択します
- MCP Servers → Manage MCP Servers をクリックします
- View raw config を選択して
mcp_config.json を編集します
設定 :
{
"mcpServers": {
"ign-apicarto": {
"command": "node",
"args": ["/chemin/absolu/vers/ign-apicarto-mcp-server/dist/index.js"]
}
}
}
HTTPモード (代替) :
Antigravityは、HTTP/SSEを介したMCPサーバーもサポートしています。
{
"mcpServers": {
"ign-apicarto": {
"url": "http://localhost:3000/mcp"
}
}
}
注意 : Antigravityは、アクティブなツールの総数を制限しています。複数のMCPサーバーを使用する場合は、最適なパフォーマンスのために総数を50ツール未満に保ってください。
🔧 その他のMCPクライアント
一般的な設定
このMCPサーバーは、stdio モードでMCPプロトコルをサポートするすべてのクライアントと互換性があります。
接続パラメータ :
| パラメータ |
値 |
| トランスポート |
stdio |
| コマンド |
node |
| 引数 |
["/chemin/vers/dist/index.js"] |
HTTPモード (代替) :
HTTP/SSEをサポートするクライアントの場合は、サーバーをHTTPモードで起動します。
TRANSPORT=http PORT=3000 npm start
その後、クライアントを http://localhost:3000/mcp のURLで設定します。
トランスポートモード
サーバーは、2つの通信モードをサポートしています。
stdioモード (デフォルト)
Claude Desktopでのローカル使用に適した標準モードです。
npm start
HTTPモード (オプション)
ネットワークでの使用またはリモートクライアントからの使用に適しています。
TRANSPORT=http PORT=3000 npm start
環境変数
サーバーは、.env.local ファイルまたは直接コマンドラインで設定できます。
| 変数 |
説明 |
デフォルト |
TRANSPORT |
トランスポートモード (stdio または http) |
stdio |
PORT |
HTTPポート (HTTPモードのみ) |
3000 |
IGN_API_KEY |
ワイン産地名称のエンドポイント用のIGN APIキー |
- |
設定ファイル :
.env.example : 利用可能なすべての変数を含むテンプレート
.env.local : ローカル設定 (バージョン管理されません)
利用方法
Claude Desktopで設定した後は、自然言語でIGNのデータを照会できます。サーバーは自動的にあなたのクエリを適切なAPI呼び出しに変換します。
設定後の再起動
claude_desktop_config.json を変更した後は、Claude Desktopを再起動して変更を反映させてください。
💻 使用例
1. 郵便番号による検索
質問 :
郵便番号75001に関連付けられたコミューンはどれですか?
期待される回答 :
- INSEEコード付きのコミューンのリスト
- 地理座標
- 行政境界
使用するツール : ign_get_communes_by_postal_code
2. 地籍区画の検索
質問 :
INSEEコード75101のコミューンの地籍区画を見つけてください
可能なパラメータ :
使用するツール : ign_get_cadastre_parcelles
3. 都市計画区域の確認
質問 :
これらの座標 : {"type":"Point","coordinates":[2.35,48.85]} のPLU区域は何ですか?
返される情報 :
- 区域のタイプ (U、AU、A、N)
- 適用される都市計画規則
- 建築制限
- PLUの更新日
使用するツール : ign_get_gpu_urbanisme
4. 自然保護区域
質問 :
この点 : {"type":"Point","coordinates":[-1.69,48.10]} の近くにNatura 2000区域はありますか?
返される区域のタイプ :
- Natura 2000サイト (ZSC、ZPS)
- ZNIEFF (タイプIおよびII)
- 国立公園および地域公園
- 自然保護区
使用するツール : ign_get_nature_areas
5. 土地図形登録簿 (農業)
質問 :
2023年にこの農業区画で申告された作物は何ですか?
ジオメトリ : {"type":"Point","coordinates":[2.35,45.85]}
利用可能なデータ :
- 作物のタイプ
- 申告された面積
- PAC作物コード
- 申告年 (2010 - 2024)
使用するツール : ign_get_rpg
6. ワイン産地名称
注意 : このエンドポイントには、無料のIGN APIキーが必要です。
geoservices.ign.fr で取得してください。
質問 :
この区画はワイン産地名称 (AOC) の区域にありますか?
座標 : {"type":"Point","coordinates":[4.84,45.76]}
返される情報 :
- 産地名称のタイプ (AOC、IGP、VSIG)
- 産地名称
- 産地名称の識別子
- 区域のジオメトリ
使用するツール : ign_get_aoc_viticoles
必要な設定 :
IGN_API_KEY=votre_cle_api
7. 行政境界
質問 :
リヨンのコミューンはどの県と地域にありますか?
利用可能なデータ :
- コミューンの境界
- 県の輪郭
- 地域の輪郭
- 公式の地理コード
使用するツール : ign_get_administrative_limits
🔧 技術詳細
ジオメトリの形式
ジオメトリは、WGS84 (EPSG:4326) のGeoJSON形式である必要があります。
{"type":"Point","coordinates":[longitude, latitude]}
{"type":"Polygon","coordinates":[[[lon1,lat1],[lon2,lat2],[lon3,lat3],[lon1,lat1]]]}
{"type":"MultiPolygon","coordinates":[[[[lon1,lat1],[lon2,lat2],...]],[...]]}
制限事項
IGN APIの制限
| タイプ |
制限 |
| 1回のクエリあたりの最大結果数 |
1000 (地籍コミューンは500) |
| ページネーション |
_start と _limit を介して利用可能 |
| 地理投影 |
WGS84 (EPSG:4326) のみ |
| クエリのタイムアウト |
30秒 |
| 出力形式 |
GeoJSON |
機能的な制限
- ⚠️ WFS - 地理ポータルモジュールは ベータ 版です
- 一部のデータには更新遅延がある場合があります
- 複雑なジオメトリは単純化が必要な場合があります
- RPGデータは2010年から2024年まで利用可能です
データソース
| ソース |
データ |
機関 |
更新頻度 |
| PCI Express |
地籍区画 |
DGFiP |
年1回 |
| BD Parcellaire |
地籍境界 |
IGN |
四半期ごと |
| RPG |
土地図形登録簿 |
ASP |
年1回 |
| MNHN |
自然保護区域 |
国立自然史博物館 |
可変 |
| GPU |
都市計画の地域計画 |
都市計画地理ポータル |
継続的 |
| FranceAgriMer |
ワイン産地名称 |
INAO |
年1回 |
| BAN |
全国住所データベース |
IGN / La Poste |
毎週 |
開発
プロジェクト構造
ign-apicarto-mcp-server/
├── src/
│ ├── index.ts # MCPサーバーのエントリポイント
│ ├── api-client.ts # IGN APIのHTTPクライアント
│ └── types.ts # TypeScriptの型定義
├── dist/ # コンパイルされたファイル
├── .env.example # 環境変数のテンプレート
├── .env.local # ローカル設定 (バージョン管理されません)
├── .gitignore
├── package.json
├── tsconfig.json
└── README.md
利用可能なスクリプト
npm run dev
npm run build
npm start
npm test
npm run lint
貢献する
貢献は大歓迎です!貢献するには:
- プロジェクトをフォークします
- 新しい機能のブランチを作成します (
git checkout -b feature/AmazingFeature)
- 変更をコミットします (
git commit -m 'Add some AmazingFeature')
- ブランチにプッシュします (
git push origin feature/AmazingFeature)
- プルリクエストを開きます
新しいツールを追加する
新しいMCPツールを追加するには:
src/tools/ に新しいファイルを作成します
- ツールのスキーマとパラメータを定義します
- IGN APIへの呼び出しのロジックを実装します
- ツールを
src/index.ts に登録します
- このREADMEにツールをドキュメント化します
トラブルシューティング
サーバーが起動しない場合
確認事項 :
- Node.jsバージョン16以上がインストールされていることを確認します :
node --version
- 依存関係がインストールされていることを確認します :
npm install
- プロジェクトがコンパイルされていることを確認します :
npm run build
dist/index.js ファイルが存在することを確認します
Claude Desktopがサーバーを検出しない場合
解決策 :
claude_desktop_config.json 内のパスが絶対パスで正しいことを確認します
- Claude Desktopを完全に再起動します
- Claude Desktopのログを確認します :
- macOS :
~/Library/Logs/Claude/
- Windows :
%APPDATA%\Claude\logs\
- Linux :
~/.config/Claude/logs/
APIエラー
一般的な問題 :
| エラー |
原因 |
解決策 |
| Timeout |
クエリが複雑すぎる |
ジオメトリを単純化するか、領域を縮小する |
| 400 Bad Request |
無効なパラメータ |
GeoJSON形式を確認する |
| 404 Not Found |
データが利用できない |
INSEE / 郵便番号を確認する |
| 500 Server Error |
IGN側の問題 |
後で再試行する |
| Too many results |
1000を超える結果 |
フィルターを追加するか、ページネーションを使用する |
ジオメトリの問題
ジオメトリは、緯度の前に経度を持つ WGS84 (EPSG:4326) である必要があります。
✅ 正しい : {"type":"Point","coordinates":[2.35, 48.85]}
❌ 誤った : {"type":"Point","coordinates":[48.85, 2.35]}
パフォーマンスが遅い場合
最適化策 :
- 大きな領域には単純化されたジオメトリを使用します
_limit パラメータで結果の数を制限します
- 広範なクエリではなく、特定のフィルターを使用します
- インターネット接続を確認します
📄 ライセンス
このプロジェクトは MITライセンス の下で提供されています。詳細については、LICENSE ファイルを参照してください。
IGNデータ
IGNのデータは、Licence Ouverte v2.0 に準拠しています。
💡 このMCPサーバーを使用してプロジェクトを作成しましたか? GitHubのissue を開いて共有してください!
参考資料
公式ドキュメント
便利なツール
コミュニティ
🥰 フランスの地理空間コミュニティのために開発されました