地理环境
实验MCP服务器为LLM提供空间上下文,基于 IGN地理平台服务.
📋 Table des matières
- 动机 - Mises en garde - 概念原则 - 使用 - 使用公共版本 - 其他使用示例 - 发展 - 版本语言环境构建 - 版本区域设置的使用 - 与JSON兼容的MCP客户端 - - 调试版本区域设置 - 设置 - 测试 - 功能(工具) - 服务提供商 - 搜索位置信息 - 探索向量数据 - Explorer les表 - Explorer表结构 - 探索表数据 - 另见 - 贡献 - 问题和发展要求 - 提出新功能 - 信贷 - 许可证
动机
如果技术上可以连接REST/GeoJSON API 阿皮卡托 对于LLM,后者的设计不适用(默认情况下为5000个结果,响应中的大几何体,要提供的复杂几何体,…)。
这个想法就在这里试验MCP的设计,使地理平台数据和服务可由LLM访问.
Mises en garde
- 如果证明有助于工业化,该仓库将迁移到IGN主要组织 并且该工具将被重命名(例如:
IGNF/mcp-gpf-server) - 莱斯 问题 定期更新和处理
- 一 路线图 也定期喂食
- 🪄 该工具不是魔术:其功能在 功能.
概念原则
- 不要复制地理平台数据 (目标:集中精力改进现有服务,而不是重复)
- 使用Geoplatform原型化LLM的缺失功能 (目标:填补稳健集成所需的技术砖块)。该项目特别基于: gpf模式存储 用于图表的索引和描述。
- 控制响应量 (目标:降低代币成本,限制幻觉,并允许使用本地模型)。这在实践中转化为使用轻量级参考(
feature_ref)MCP响应和工具中的几何对象。
使用
使用公共版本
例如,使用“光标设置/mcp/add server”:
{
"mcpServers": {
"geocontext": {
"command": "npx",
"args": ["-y", "@ignfab/geocontext"]
}
}
}其他使用示例
发展
先决条件:
- Node.js
24.5.0或更高推荐(22.21.0支持的最小值) - NPM与使用的节点版本兼容
存款提供 .nvmrc 和 .node-version.如果你使用 nvm因此,您可以:
nvm install
nvm use版本语言环境构建
git clone https://github.com/ignfab/geocontext
cd geocontext
npm ci
npm run build版本区域设置的使用
与JSON兼容的MCP客户端
{
"mcpServers": {
"geocontext": {
"command": "node",
"args":["--use-env-proxy", "/chemin/absolu/vers/geocontext/dist/index.js"]
}
}
}L’option --use-env-proxy 可选:它启用Node.js对代理环境变量的支持。仅在网络环境需要时添加。另见本节 网络代理配置.
在本地使用Docker
docker compose build
docker compose up -d套房:
{
"mcpServers": {
"geocontext": {
"url": "http://localhost:3000/mcp"
}
}
}调试版本区域设置
此命令启动 MCP检查员,用于测试和调试本地服务器的MCP开发工具。
npm run inspect:mcp有关集成测试和E2E代理测试,请参阅 专用文档.
设置
对于高级使用:
| 名称 | 描述 | 默认值 |
|---|---|---|
TRANSPORT_TYPE | 运输 允许您在“stdio”和“http”之间进行选择 | “stdio” |
HTTP_HOST HTTP模式下的侦听地址。与Docker一起使用,通过公开服务 0.0.0.0. | "127.0.0.1" | |
HTTP_PORT | MCP监听端口 | 3000 |
HTTP_MCP_ENDPOINT HTTP中MCP的显示路径 | “/MCP” | |
HTTP_CORS_ALLOWED_ORIGINS | Permet la 配置AllowedOrigins以防止DNS重新绑定攻击例如: HTTP_CORS_ALLOWED_ORIGINS="http://localhost:3000,https://geollm.beta.ign.fr" | 奥村(警告) |
HTTP_TIMEOUT 向IGN上游服务发出HTTP调用的最大延迟(秒)。除此之外,请求将中断,工具将返回结构化超时错误。 | 15 | |
GPF_WFS_RATE_LIMIT | 地理平台WFS上每秒的最大请求数 | 30 |
GPF_WFS_MINISEARCH_OPTIONS | 可选JSON字符串,用于调整 gpf_wfs_search_types (fields, combineWith, fuzzy, boost.namespace, boost.name, boost.title, boost.description, boost.properties, boost.enums, boost.identifierTokens)的。 | 默认选项 @ignfab/gpf-schema-store |
LOG_FORMAT 日志的写入格式:“JSON”或“简单”。“简单” | ||
LOG_LEVEL | 日志写入级别: “错误”、“信息”、ou“调试” | “调试” |
示例:
export GPF_WFS_MINISEARCH_OPTIONS='{"fields":["title","identifierTokens"],"combineWith":"OR","fuzzy":0.05,"boost":{"title":4,"name":5}}'
export HTTP_TIMEOUT=15是 GPF_WFS_MINISEARCH_OPTIONS 缺少或为空,默认选项为 @ignfab/gpf-schema-store,包括默认行为 OR MiniSearch combineWith.
Configuration du proxy réseau
geocontext 基于Node.js的本机代理管理。
- 在本地运行时,服务器启动
node --use-env-proxy - 集成测试正在传播
NODE_USE_ENV_PROXY=1MCP子流程启动于stdio - E2E测试启动工人速度最快
--use-env-proxy
因此,只需根据您的上下文定义标准环境变量:
export HTTP_PROXY=http://proxy.example:3128
export HTTPS_PROXY=http://proxy.example:3128
export NO_PROXY=localhost,127.0.0.1测试
主要命令是:
npm run typecheck
npm run typecheck:test
npm test
npm run test:integration
npm run test:e2e
npm run test:coverage
npm run verify
npm run verify:fullnpm run verify:fast 包括构建和单元测试之前的应用程序类型检查和测试文件。
备注:
- 工具
gpf_wfs_search_types和gpf_wfs_describe_type基于由提供的嵌入式图表目录@ignfab/gpf-schema-store. - 工具
gpf_wfs_get_features和gpf_wfs_get_feature_by_id始终查询实时地理平台的WFS服务。 - 嵌入式目录改进了功能类型的描述,但可能与WFS的当前状态略有不同。
功能(工具)
👉 相当于方法详细程度的工具的高级描述 tools/list 可用 这里.\ 下面简要描述各种 tools MCP由 geocontext.
服务提供商
- 地理编码(文本) 依赖于 地理平台自动完成服务 倒 将地名转换为位置(lon,lat).
例:文森市政厅的位置(lon,lat)是什么?
- 海拔高度(经度、纬度) 依赖于 Geoplatform测高计算服务 倒 将位置转换为高度.
例:洛雷市政厅的高度是多少(25)?
搜索位置信息
这里的想法是通过处理服务器端对以下的调用来回答特定问题: WFS地理平台服务 :
- 行政快递(洛杉矶) 允许 检索行政信息(市、省、地区等) 对于由其位置给出的位置。
例:Vincennes市政厅的行政信息是什么?
- 地籍(经度、纬度) 允许 检索地籍信息(地块、纸张等).
例:Vincennes市政厅的地籍信息是什么?
- 城市主义 允许 检索城市规划信息(PLU、POS、CC、PSMV)
例:马赛港最有效的文件是什么?
- assiette_sup(lon,lat) 允许 收回公用事业地役权(SUP)
例:Vincennes市政厅周围有哪些SUP板?
面向对象的WFS工具(adminexpress, cadastre, urbanisme, assiette_sup)展示一个 feature_ref { typename, feature_id } 当源对象在后续调用中可重用时 gpf_wfs_get_feature_by_id 哦 gpf_wfs_get_features (例如: spatial_operator="intersects_feature").
探索向量数据
Explorer les表
- gpf_wfs_search_types(关键字,max_results=10) 倒 从关键字中搜索相关WFS类型并获取
typename无效.搜索是文本的,可以通过GPF_WFS_MINISEARCH_OPTIONS.
- 地理平台上有哪些Adminexpress年份? - 哪个BDTOPO表对应于建筑物? - 在BDTOPO的哪个表中可以找到桥梁?
Explorer表结构
- gpf_wfs_describe_type(类型名) 为了恢复 WFS类型的详细图 从嵌入式目录(
id,namespace,name,title,description,properties),特别是在打电话之前gpf_wfs_get_features
- Adminexpress Cog为市政当局提供了哪些信息。最新的? - 比较Adminexpress Cog:2024和Adminexpress Cog之间的市政模型。最新
探索表数据
- gpf_wfs_get_feature_by_id(类型名、feature_id等) 倒 精确检索由其标识的WFS对象
feature_id.
该工具接受结构化合同:
select选择要返回的属性result_type="request"要检索已编译的请求(POST+get_url可选)用于其他工具(如地图显示)result_type="results"返回一个FeatureCollection标准化,仅包含一个对象
示例:
typename="ADMINEXPRESS-COG.LATEST:commune", feature_id="commune.8952"
- gpf_wfs_get_features(类型名,…) 倒 从表中恢复数据 来自Geoplatform WFS服务,无需手动编写CQL。
该工具接受结构化合同:
select选择要返回的属性where要过滤对象:order_by要对结果进行排序:spatial_operator及其专用于空间的参数result_type="request"要检索编译为的请求:POST以及get_url当它在GET中保持合理便携时导出
例如:
where=[{ property: "code_insee", operator: "eq", value: "25000" }]spatial_operator="bbox"与bbox_west,bbox_south,bbox_east,bbox_northspatial_operator="dwithin_point"与dwithin_lon,dwithin_lat,dwithin_distance_mspatial_operator="intersects_feature"与intersects_feature_typename和intersects_feature_id来自feature_ref
- 杜布斯(25)人口最多的5个城市是什么? - 埃菲尔铁塔5公里范围内有多少栋建筑?
另见
- https://github.com/datagouv/datagouv-mcp:MCP数据.gouv.fr
- https://github.com/mapbox/mcp-server:MCP地图框
- https://git.tricoteuses.fr/logiciels/tricoteuses-api-parlement:MCP法国议会非官方
- https://github.com/datagouv/datagouv-skill:技能数据.gouv.fr
贡献
问题和发展要求
不要犹豫 创造一个问题 如果你有问题!感谢您提供:
- 助手(如GitHub副驾驶)和使用的模板(如Claude Sonnet 4.5)
- 你问助手的问题(例如:“塞纳河上有多少座桥?”)
提出新功能
不要犹豫:
- 分叉存款
- 创建新工具
- 在你身边测试
- 发出拉取请求
信贷
- mcp框架 提供 MCP发展框架
- @ignfab/gpf模式存储 为了 嵌入式图表目录 由WFS勘探工具使用。
- 迷你搜索 倒la 按关键字搜索 用于
@ignfab/gpf-schema-store. - jsts 倒les 几何处理 (例如:按搜索点的距离对响应进行排序)。
- turfjs/距离 倒les 距离计算 与 哈维辛公式.
