地理数据查询服务器

一个通过IGN API Carto查询法国地理数据的MCP服务器,适用于土地分析、农业咨询和城市规划等多种场景。

  • by julienkalamon
  • TypeScript
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 julienkalamon/ign-apicarto-mcp-server

使用说明

IGN API Carto MCP服务器

MCP(模型上下文协议)服务器,用于通过IGN的CARTO API查询法国地理数据

📋 目录

关于

该MCP服务器允许访问丰富的地理数据IGN(国家地理和林业信息研究所) 直接从Claude桌面或任何其他MCP兼容客户端。

它展示了IGN API Carto生态系统的主要API,允许以自然语言查询法国地籍、农业、环境、城市规划和行政数据。

Cas d'usage

  • 🏘️ 分析地籍和地块数据
  • 🌾 查看农业声明(RPG)
  • 🌳 确定自然保护区
  • 🏗️ 检查城市规划法规(PLU、GPU)
  • 🍷 当地人将葡萄球菌命名为
  • 🗺️ 获取地理定位的行政数据

功能

可用工具

Outil 描述 用法
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 对Geoportal WFS流的通用访问 各种地理数据
ign_get_administrative_limits 行政边界(市、省、地区) 领土划分、统计

先决条件

  • Node.js 16+et npm
  • 克劳德桌面版 与客户端MCP兼容
  • 访问IGN API的Internet连接

安装

1.克隆存储库

git clone https://github.com/votre-utilisateur/ign-apicarto-mcp-server.git
cd ign-apicarto-mcp-server

2.安装依赖项

npm install

3.配置环境变量

# Copier le fichier d'exemple
cp .env.example .env.local

编辑 .env.local 如果您想使用AOC Viticoles端点,请添加IGN API密钥:

# Obtenir une clé gratuite : https://geoservices.ign.fr/
IGN_API_KEY=votre_cle_api

4.编制项目

npm run build

编译的服务器将在文件夹中可用 dist/.

配置

使用首选IA客户端配置此MCP服务器。单击您正在使用的客户端以查看详细说明。

🖥️ Claude Desktop

配置克劳德桌面

将以下配置添加到文件中 claude_desktop_config.json :

建筑师的安置:

系统 路径
macOS ~/Library/Application Support/Claude/claude_desktop_config.json
窗户 %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使用一个文件 .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

配置光标

光标使用非虚构 mcp.json 倒la配置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": {}
    }
  }
}

激活服务器:

  1. 打开光标设置(Cmd/Ctrl + ,)
  2. 搜索“MCP”
  3. 激活MCP服务器
  4. 重新启动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服务器。查看 官方Codex文件 有关激活MCP插件的更多详细信息。

🚀 Google Antigravity

配置谷歌反重力

谷歌反重力 是谷歌的代理开发平台,可免费公开预览。

访问MCP配置:

  1. 点击 代理会话 在侧面板中
  2. 选择菜单 "..." 在面板顶部
  3. 点击 MCP服务器 → 管理MCP服务器
  4. 选择 查看原始配置 用于编辑 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个工具以下,以获得最佳性能。

🔧 Autres clients MCP

通用配置

此MCP服务器与支持模式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桌面本地使用的标准模式:

npm start

HTTP模式(可选)

对于网络或远程客户端使用:

TRANSPORT=http PORT=3000 npm start

环境变量

通过文件配置服务器 .env.local 或直接从命令行:

变量 描述 缺陷
TRANSPORT 运输方式(stdio 或 http) stdio
PORT 端口HTTP(模式HTTP唯一性) 3000
IGN_API_KEY 葡萄酒AOC端点的IGN API密钥 -

配置文件:

  • .env.example :具有所有可用变量的模板
  • .env.local :您的本地配置(未版本化)

使用

在Claude Desktop中配置后,您可以使用自然语言查询IGN数据。服务器将自动将您的请求转换为适当的API调用。

配置后重新启动

修改后 claude_desktop_config.json,重新启动Claude Desktop以考虑更改。

已完成的项目

🍷 Margaux Cantenac的领土分析

Margaux Cantenac(Gironde)葡萄酒公社的交互式区域分析应用程序,由Claude和该MCP服务器开发。

🔗 查看交互式演示

功能

该应用程序提供了4个部分的完整区域分析:

模块 内容 使用的API
📍 将军 INSEE代码、WGS84坐标、葡萄酒种植背景 ign_get_communes_by_postal_code, ign_get_administrative_limits
🏗️ 城市化 52个区域(A、U、N、AU)的地方城市规划 ign_get_gpu_urbanisme
🌳 环境 梅多克地区自然公园,兹涅夫地区 ign_get_nature_areas
📐 地籍 地籍部分、地块标识符 ign_get_cadastre_parcelles, ign_get_cadastre_communes

技术

  • 带选项卡导航的React界面
  • IGN和INPN数据集成(国家自然历史博物馆)
  • 地理可视化(边界框、精确坐标)
  • 用于区分领土区域类型的颜色代码

如何复制?

Créé une application React interactive pour analyser le territoire de la commune
de Margaux-Cantenac. Utilise les données IGN pour afficher :
- Les informations administratives
- Le zonage PLU complet
- Les zones naturelles protégées
- Les sections cadastrales

L'interface doit être organisée en onglets avec une navigation fluide.

💡 使用此MCP服务器创建项目? 通过打开一个来分享 发布GitHub !

详细示例

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

可能的参数:

  • 城市的INSEE代码
  • 剖面地籍
  • 地块编号

使用的工具: 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]} ?

返回区域的类型:

  • 自然遗址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密钥。 得到它 地球服务公司。ign.fr

问题:

Cette parcelle est-elle située dans une AOC viticole ?
Coordonnées : {"type":"Point","coordinates":[4.84,45.76]}

返回的信息:

  • d类名称(AOC、IGP、VSIG)
  • 名称
  • 名称标识符
  • 区域几何

使用的工具: ign_get_aoc_viticoles

配置要求:

# Dans .env.local
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

几何体的格式

几何图形必须采用WGS84中的GeoJSON格式(EPSG:4326):

// Point
{"type":"Point","coordinates":[longitude, latitude]}

// Polygon
{"type":"Polygon","coordinates":[[[lon1,lat1],[lon2,lat2],[lon3,lat3],[lon1,lat1]]]}

// MultiPolygon
{"type":"MultiPolygon","coordinates":[[[[lon1,lat1],[lon2,lat2],...]],[...]]}

局限性

API IGN限制

类型 限制
每个请求的最大结果 1000(地籍公社为500)
分页 可通过 _start 和 _limit
地理投影 仅WGS84(EPSG:4326)
超时请求 30秒
排序格式 GeoJSON

功能限制

  • ⚠️ wfs geoportail模块已发布 测试版
  • 某些数据可能有更新时间
  • 复杂的几何形状可能需要简化
  • RPG数据可从2010年至2024年获得

数据来源

来源 数据 组织 更新
PCI Express 地块地籍 DGFIP 年度
BD地块 地籍边界 IGN 季度
角色扮演游戏 图形地块登记册 ASP 年度
MNHN 自然保护区 国家自然历史博物馆
图形处理器 地方城市规划 城市规划地理门户 继续
法国阿格里默 葡萄酒名称 INAO 年度
禁止 基本国家地址 IGN/La Poste 每周

发展

项目结构

ign-apicarto-mcp-server/
├── src/
│   ├── index.ts          # Point d'entrée du serveur MCP
│   ├── api-client.ts     # Client HTTP pour l'API IGN
│   └── types.ts          # Types TypeScript
├── dist/                 # Fichiers compilés
├── .env.example          # Template des variables d'environnement
├── .env.local            # Configuration locale (non versionné)
├── .gitignore
├── package.json
├── tsconfig.json
└── README.md

可用脚本

# Démarrer le serveur en mode développement
npm run dev

# Compiler le projet
npm run build

# Démarrer le serveur en production
npm start

# Lancer les tests (si disponibles)
npm test

# Vérifier le code
npm run lint

贡献者

欢迎捐款!为了贡献:

  1. 分叉项目
  2. 为您的功能创建分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 按下分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

添加新工具

要添加新的MCP工具:

  1. 在中创建新文件 src/tools/
  2. 定义工具架构及其参数
  3. 实现IGN API调用逻辑
  4. 将工具保存在 src/index.ts
  5. 在本自述中记录该工具

故障排除

服务器无法启动

检查:

  • Node.js 16+测试安装: node --version
  • 已安装依赖项: npm install
  • 该项目编制如下: npm run build
  • 文件 dist/index.js 存在

Claude Desktop未检测到服务器

解决:

  1. 检查路径是否 claude_desktop_config.json 是绝对和正确的
  2. 完全重新启动Claude桌面
  3. 检查Claude桌面日志:
    • macOS: ~/Library/Logs/Claude/
    • 窗户: %APPDATA%\Claude\logs\
    • Linux: ~/.config/Claude/logs/

API错误

常见问题:

错误 原因 解决方案
超时 查询太复杂124简化几何体或缩小面积
400错误请求 无效设置124检查GeoJSON格式
404未找到 数据不可用124检查INSEE/邮政编码
500服务器错误 IGN端出现问题 稍后再试
太多结果 超过1000个结果124添加过滤器或分页

几何问题

几何形状必须在 WGS84(EPSG:4326) 纬度前经度:

✅ Correct : {"type":"Point","coordinates":[2.35, 48.85]}
❌ Incorrect : {"type":"Point","coordinates":[48.85, 2.35]}

表演长度

优化:

  • 对大面积使用简化几何图形
  • 使用参数限制结果的数量 _limit
  • 使用特定过滤器而不是广泛的查询
  • 检查您的internet连接

资源

官方文件

有用的工具

社区

许可证

该项目已获得许可 麻省理工学院.查看文件 许可证 更多详情。

IGN数据

IGN数据应提交给 开放许可证v2.0.


开发与❤️ 对于法国地理空间社区