🚀 IGN API Carto MCP 服務器
本服務器允許您直接從 Claude Desktop 或任何其他兼容 MCP 的客戶端訪問法國國家地理與森林信息研究所(IGN)的豐富地理數據。它公開了 IGN API Carto 生態系統的主要 API,支持以自然語言查詢法國的地籍、農業、環境、城市規劃和行政數據。
🚀 快速開始
本 MCP 服務器允許直接從 Claude Desktop 或任何其他兼容 MCP 的客戶端訪問法國國家地理與森林信息研究所(IGN)的豐富地理數據。要使用該服務器,您需要完成以下步驟:
- 安裝必要的依賴項(Node.js 16+ 和 npm)。
- 克隆項目倉庫並安裝依賴。
- 配置環境變量,添加 IGN API 密鑰(如果需要)。
- 編譯項目。
- 根據您使用的客戶端(Claude Desktop、Claude Code、Cursor 等)進行相應的配置。
配置完成後,您就可以在 Claude Desktop 中以自然語言查詢 IGN 數據,服務器會自動將您的請求轉換為適當的 API 調用。
✨ 主要特性
可用工具
| 工具 |
描述 |
使用場景 |
ign_get_communes_by_postal_code |
獲取與郵政編碼關聯的城市 |
地址解析、郵政統計 |
ign_get_cadastre_parcelles |
搜索地籍地塊 |
土地研究、房地產分析 |
ign_get_cadastre_communes |
獲取地籍城市邊界 |
領土劃界、製圖 |
ign_get_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 服務器:
🖥️ 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.json 文件來配置 MCP 服務器。
項目配置(推薦):
在項目根目錄下創建一個 .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.json 文件進行 MCP 配置。
文件位置:
| 範圍 |
路徑 |
| 項目 |
.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
然後使用 URL http://localhost:3000/mcp 配置您的客戶端。
傳輸模式
服務器支持兩種通信模式:
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 數據,以下是一些示例:
Quelles communes sont associées au code postal 75001 ?
服務器會自動將此請求轉換為對 ign_get_communes_by_postal_code 工具的 API 調用,並返回相關城市的信息。
高級用法
如果您需要進行更復雜的查詢,例如結合多個工具或使用特定的參數,可以參考以下示例:
Trouve les parcelles cadastrales de la commune avec le code INSEE 75101 dans la section cadastrale 'A'
這將調用 ign_get_cadastre_parcelles 工具,並指定 INSEE 代碼和地籍分區,以獲取特定的地籍地塊信息。
📚 詳細文檔
使用案例
- 🏘️ 分析地籍和地塊數據
- 🌾 查閱農業聲明(RPG)
- 🌳 識別自然保護區
- 🏗️ 驗證城市規劃法規(PLU、GPU)
- 🍷 定位葡萄酒產區
- 🗺️ 獲取地理定位的行政數據
已完成項目
🍷 瑪歌 - 坎特南克地區分析
這是一個交互式的領土分析應用程序,用於瑪歌 - 坎特南克(吉倫特省)的葡萄酒產區。該應用程序使用 Claude 和本 MCP 服務器開發,提供了對該地區的全面分析,包括以下模塊:
| 模塊 |
內容 |
使用的 API |
| 📍 概述 |
INSEE 代碼、WGS84 座標、葡萄酒背景 |
ign_get_communes_by_postal_code, ign_get_administrative_limits |
| 🏗️ 城市規劃 |
包含 52 個區域(A、U、N、AU)的地方城市規劃 |
ign_get_gpu_urbanisme |
| 🌳 環境 |
梅多克地區自然公園、ZNIEFF 區域 |
ign_get_nature_areas |
| 📐 地籍 |
地籍分區、地塊標識符 |
ign_get_cadastre_parcelles, ign_get_cadastre_communes |
技術棧
- 使用標籤頁導航的 React 界面
- 集成 IGN 和 INPN(法國國家自然歷史博物館)的數據
- 地理可視化(邊界框、精確座標)
- 使用顏色代碼區分不同類型的領土區域
如何重現?
創建一個交互式的 React 應用程序,用於分析瑪歌 - 坎特南克地區的領土。使用 IGN 數據顯示:
- 行政信息
- 完整的 PLU 分區
- 自然保護區
- 地籍分區
界面應通過標籤頁進行組織,實現流暢的導航。
詳細示例
1. 按郵政編碼搜索
問題:
Quelles communes sont associées au code postal 75001 ?
預期響應:
- 包含 INSEE 代碼的城市列表
- 地理座標
- 行政邊界
使用工具: ign_get_communes_by_postal_code
2. 搜索地籍地塊
問題:
Trouve les parcelles cadastrales de la commune avec le code INSEE 75101
可能的參數:
使用工具: ign_get_cadastre_parcelles
3. 驗證城市規劃分區
問題:
Quel est le zonage PLU à ces coordonnées : {"type":"Point","coordinates":[2.35,48.85]} ?
返回信息:
- 區域類型(U、AU、A、N)
- 適用的城市規劃法規
- 可建設性限制
- PLU 更新日期
使用工具: ign_get_gpu_urbanisme
4. 自然保護區
問題:
Y a-t-il des zones Natura 2000 à proximité de ce point : {"type":"Point","coordinates":[-1.69,48.10]} ?
返回的區域類型:
- Natura 2000 站點(ZSC、ZPS)
- ZNIEFF(I 型和 II 型)
- 國家和地區公園
- 自然保護區
使用工具: ign_get_nature_areas
5. 地塊圖形登記冊(農業)
問題:
Quelles cultures sont déclarées sur cette parcelle agricole en 2023 ?
Géométrie : {"type":"Point","coordinates":[2.35,45.85]}
可用數據:
- 作物類型
- 申報面積
- PAC 作物代碼
- 申報年份(2010 - 2024)
使用工具: ign_get_rpg
6. 葡萄酒產區
⚠️ 重要提示
此端點需要免費的 IGN API 密鑰。您可以在 geoservices.ign.fr 獲取。
問題:
Cette parcelle est-elle située dans une AOC viticole ?
Coordonnées : {"type":"Point","coordinates":[4.84,45.76]}
返回信息:
- 產區類型(AOC、IGP、VSIG)
- 產區名稱
- 產區標識符
- 區域幾何形狀
使用工具: ign_get_aoc_viticoles
所需配置:
IGN_API_KEY=votre_cle_api
7. 行政邊界
問題:
Dans quel département et quelle région se trouve la commune de Lyon ?
可用數據:
使用工具: ign_get_administrative_limits
幾何格式
幾何圖形必須採用 GeoJSON 格式,並使用 WGS84(EPSG:4326)投影:
{"type":"Point","coordinates":[經度, 緯度]}
{"type":"Polygon","coordinates":[[[lon1,lat1],[lon2,lat2],[lon3,lat3],[lon1,lat1]]]}
{"type":"MultiPolygon","coordinates":[[[[lon1,lat1],[lon2,lat2],...]],[...]]}
🔧 技術細節
項目結構
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
貢獻
歡迎貢獻代碼!要進行貢獻,請按照以下步驟操作:
- Fork 項目。
- 創建一個新的功能分支 (
git checkout -b feature/AmazingFeature)。
- 提交您的更改 (
git commit -m 'Add some AmazingFeature')。
- 將更改推送到分支 (
git push origin feature/AmazingFeature)。
- 打開一個 Pull Request。
添加新工具
要添加新的 MCP 工具,請按照以下步驟操作:
- 在
src/tools/ 中創建一個新文件。
- 定義工具的參數和模式。
- 實現對 IGN API 的調用邏輯。
- 在
src/index.ts 中註冊該工具。
- 在本 README 中記錄該工具。
📄 許可證
本項目採用 MIT 許可證。有關詳細信息,請參閱 LICENSE 文件。
IGN 數據
IGN 數據受 開放許可證 v2.0 約束。
為法國地理空間社區用心開發 ❤️