Back to MCP directory
publicPublicdnsLocal runtime

ign-apicarto-mcp-server

这是一个MCP服务器项目,用于通过法国国家地理与林业信息研究所(IGN)的Carto API查询法国地理数据,包括地籍、农业、环境、城市规划和行政信息。

article

README

🚀 IGN API Carto MCP 服务器

本服务器允许您直接从 Claude Desktop 或任何其他兼容 MCP 的客户端访问法国国家地理与森林信息研究所(IGN)的丰富地理数据。它公开了 IGN API Carto 生态系统的主要 API,支持以自然语言查询法国的地籍、农业、环境、城市规划和行政数据。

🚀 快速开始

本 MCP 服务器允许直接从 Claude Desktop 或任何其他兼容 MCP 的客户端访问法国国家地理与森林信息研究所(IGN)的丰富地理数据。要使用该服务器,您需要完成以下步骤:

  1. 安装必要的依赖项(Node.js 16+ 和 npm)。
  2. 克隆项目仓库并安装依赖。
  3. 配置环境变量,添加 IGN API 密钥(如果需要)。
  4. 编译项目。
  5. 根据您使用的客户端(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) | 葡萄栽培、地理营销 | 需要 API 密钥 | | 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 密钥(如果您想使用葡萄酒产区端点):

# 获取免费密钥:https://geoservices.ign.fr/
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": {}
    }
  }
}

启用服务器:

  1. 打开 Cursor 设置(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 服务器。有关启用 MCP 插件的更多详细信息,请参阅 Codex 官方文档

🚀 Google Antigravity

Google Antigravity 配置

Google Antigravity 是 Google 的代理开发平台,可免费进行公开预览。

访问 MCP 配置:

  1. 点击侧边栏中的 Agent session
  2. 选择面板顶部的 "..." 菜单。
  3. 点击 MCP ServersManage MCP Servers
  4. 选择 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 | 传输模式 (stdiohttp) | 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

可能的参数:

  • 城市的 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]} ?

返回的区域类型:

  • 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

所需配置:

# 在 .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

几何格式

几何图形必须采用 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

贡献

欢迎贡献代码!要进行贡献,请按照以下步骤操作:

  1. Fork 项目。
  2. 创建一个新的功能分支 (git checkout -b feature/AmazingFeature)。
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')。
  4. 将更改推送到分支 (git push origin feature/AmazingFeature)。
  5. 打开一个 Pull Request。

添加新工具

要添加新的 MCP 工具,请按照以下步骤操作:

  1. src/tools/ 中创建一个新文件。
  2. 定义工具的参数和模式。
  3. 实现对 IGN API 的调用逻辑。
  4. src/index.ts 中注册该工具。
  5. 在本 README 中记录该工具。

📄 许可证

本项目采用 MIT 许可证。有关详细信息,请参阅 LICENSE 文件。

IGN 数据

IGN 数据受 开放许可证 v2.0 约束。


为法国地理空间社区用心开发 ❤️

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client