返回市场
地理上下文

地理上下文

作者:ignfab2 星标更新:2025-11-03

项目介绍

geocontext

一个提供空间上下文的实验性MCP服务器,供LLM使用。

动机

LLM强化了计算机可以实现“魔法”的观念。实际上并非如此。例如,为了让助手能够知道日期和时间,需要将其与MCP time接口连接。同样,为了使其能够读取页面,需要将其与MCP fetch接口连接。

在地理数据方面,如果用户提出一个问题,要求助手能够识别地址的位置,那么答案可能是合理的但不准确

虽然从技术上讲,可以接入像APICARTO这样的REST/GeoJSON API,但这些API的设计并不适合(默认返回5000个结果,响应中包含大量几何数据,复杂的几何形状等)。

这里的想法是实验设计一个MCP服务器,使地理平台的数据和服务对LLM可用

警告

  • 这个开发是一个正在IgnFab孵化的POC(正在进行中的mborne/geocontext存档)
  • 如果证明有必要进行工业化,仓库将迁移至IGN责任下,并重新命名工具(如:IGNF/mcp-gpf-server
  • 已经识别出几个问题和改进点,并正在进行缓解/解决(参见issues)。
  • 这个工具不是万能的(参见功能以了解其能力)

设计原则

  • 不复制地理平台的数据(目标:识别服务上的改进可能性而不是复制它们)
  • 尽可能限制响应大小(目标:优化令牌数量/避免幻觉/能够使用本地模型)
  • ...

使用方法

使用已发布的版本

例如,通过“Cursor Settings / MCP / Add server”:

{
  "mcpServers": {
    "geocontext": {
      "command": "npx",
      "args": ["-y", "@ignfab/geocontext"]
    }
  }
}

使用Docker

docker compose build
docker compose up -d

然后:

{
  "mcpServers": {
    "geocontext": {
      "url": "http://localhost:3000/mcp"
    }
  }
}

开发

构建本地版本

git clone https://github.com/ignfab/geocontext
cd geocontext
npm install
npm run build

使用本地版本

{
  "mcpServers": {
    "mcp-helloworld": {
      "command": "node",
      "args":["/绝对路径/到/geocontext/dist/index.js"]
    }
  }
}

调试本地版本

npx -y @modelcontextprotocol/inspector node dist/index.js

配置

对于高级用法:

名称描述默认值
TRANSPORT_TYPE传输 允许选择 "stdio" 或 "http""stdio"

功能

使用空间服务

一些地理平台的服务:

示例:Vincennes市政厅的位置(经度,纬度)是什么?

示例:Loray市政厅(25)的海拔是多少?

为特定地点检索信息

这里的目的是通过处理WFS服务调用来回答具体问题:

示例:Vincennes市政厅的行政信息是什么?

示例:Vincennes市政厅的土地登记信息是什么?

示例:马赛港现行的PLU文件是什么?

探索矢量数据

探索表

  • 地理平台上有哪些ADMINEXPRESS年份?
  • BDTOPO中对应建筑物的表是什么?
  • 在BDTOPO的哪个表中可以找到桥梁?

探索表结构

  • 使用ADMINEXPRESS-COG.LATEST时,关于市镇的信息有哪些?
  • 比较ADMINEXPRESS-COG:2024和ADMINEXPRESS-COG.LATEST之间的市镇模型

探索表数据

  • Doubs(25)人口最多的五个市镇是什么?
  • 距离埃菲尔铁塔不到5公里的建筑物有多少?

贡献

报告问题和请求改进

如果您遇到问题,请不要犹豫,创建一个issue! 请提供:

  • 使用的助手和模型
  • 向助手提出的请求(例如:“塞纳河上有多少座桥?”)

提交新功能

请不要犹豫:

  • 分叉仓库
  • 创建一个新的工具
  • 自行测试
  • 提交pull request

致谢

# 例如,为了公开WMTS图层列表
mcp add tool gpf_wmts_layers

许可证

MIT