mcpField
A
AtlasFetch

AtlasFetch

本地服务
atlasfetch.xyz地图与出行0今天更新

关于 AtlasFetch

AtlasFetch 是用于地点查询、南非地址地理编码、路线规划和自定义地理围栏的 MCP 服务。它可从坐标返回行政区和街道信息,并根据用户边界规划路线或计算路线与边界的重合情况。

主要功能

  1. 01坐标查询行政区域
  2. 02可选的最近街道信息
  3. 03含精度说明的南非地址地理编码
  4. 04支持汽车、自行车、步行和卡车的路线规划
  5. 05创建和查询自定义边界集

适用场景

  1. 01识别坐标所属市政区及区域代码
  2. 02检查地点是否落入配送或服务区域
  3. 03地理编码南非配送地址
  4. 04规划避开自定义区域或统计穿行距离的路线

MCP 相关

向 MCP 客户端提供 AtlasFetch 的地点查询、地理编码、路线规划和边界管理工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"xyz-atlasfetch-atlasfetch": {
"command": "npx",
"args": [
"-y",
"atlasfetch-mcp"
],
"env": {
"ATLASFETCH_API_KEY": "<ATLASFETCH_API_KEY>"
}
}
}
}
启动命令npx -y atlasfetch-mcp
需要配置的环境变量
ATLASFETCH_API_KEY密钥Your API key from https://atlasfetch.xyz/dashboard. Without it, the shared public demo key is used.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmatlasfetch-mcp0.4.3

工具

5

收录的工具列表 · 更新于 1 周前

参数类型必填说明
latnumber是纬度,范围为 -90 至 90。
lngnumber是经度,范围为 -180 至 180。
basearray否要解析的参考图层。默认解析 country、region 和 municipal。"street" 为可选项:显式添加后才会获取最近街道。
setsarray否此账户中要进行匹配的边界集合名称。默认不匹配任何集合。
h3resinteger否H3 分辨率为 0-15。9 的边长约为 400 m。
encodearray否同时将该点作为 H3 单元格索引和/或 Google Plus Code 返回。仅用于输出——两者都不能用作位置,因为它们表示的是区域而非点。
pluslenany否Plus Code 长度。9 不是有效长度。10 约为 14 m。

详细介绍

atlasfetch-mcp

**无需注册即可试用:**没有密钥时,会回退到共享的公共演示密钥,所有使用者每月合计最多可查询 1,000 次。前往 atlasfetch.xyz 免费注册,即可获得专属额度。

这是一个用于 AtlasFetch 的 MCP 服务,提供逆地理编码到行政区划和街道,以及地理围栏功能,作为工具供 AI 助手直接调用。

询问“坐标 -33.9249, 18.4241 位于哪个市镇?”,即可通过真实的点在多边形内查询,而不是依赖模型的记忆,获得带有 ISO 3166 代码的南非西开普省开普敦。

country: United Kingdom (GB) · region: England (GB-ENG) · municipal: City of Westminster (GB-WSM)

功能

工具功能
lookup_location将坐标解析为包含该坐标的国家、地区和市镇,并提供 ISO 3166-1 / 3166-2 代码,以及与你自己的边界集匹配的结果。还可选择返回最近的街道(请求 street 图层),以及以 H3 单元格或 Google Plus Code 表示的点位。
geocode_address将地址解析为一个点位,目前仅支持南非,并提供精度,说明找到的是房屋、街道,还是仅有郊区,以及接下来该怎么做。
get_route计算 2 到 25 个坐标之间的驾车、骑行、步行或卡车路线,并提供逐向导航步骤;还可选择绕开你自己的区域,或测量路线在这些区域内的长度。
list_boundary_sets列出你的边界集、各自的数量,以及哪些 API 密钥可以查询它们。
create_boundary_set为你自己的多边形创建一个空边界集。
add_boundary添加一个 GeoJSON 多边形,并在每次匹配时返回其属性。
update_boundary移动或调整一个边界的形状,同时保留其 ID、名称和属性。

**适用场景:**逆地理编码到行政区域、查找点位所在的街道、针对你自己的配送区或服务区进行地理围栏检查、辖区和区域核查、为位置数据添加区域代码、对南非的配送地址进行地理编码,以及规划避开指定区域的路线。

**不适用场景:**南非以外的地理编码(暂不支持)、按名称搜索地点、考虑实时交通的预计到达时间、距离矩阵、等时圈、地图切片或下载边界几何数据。

路线规划

get_route 会计算 2 到 25 个坐标之间的路线,并返回距离、耗时和逐向导航步骤,支持 car、bike、foot 或 truck。

car: 3.5 km · 5 min · 11 steps · a location moved 62 m to reach a road — free-flow, no traffic

接入前有三点值得了解:

  • 每条路线消耗 10 次查询,而不是 1 次。返回的所有信息都包含在其中,但费用是单次查询的 10 倍。
  • 耗时按畅通路况计算——按路网自身的限速行驶,不考虑实时或历史交通。这不是预计到达时间。如需此类信息,请使用支持交通状况的服务。
  • 默认不返回路线线条(routeGeometry: "none")。编码后的折线长达数千个字符,助手无法阅读;只有在需要绘制路线时,才请求 polyline6 或 geojson。

让路线避开或经过你自己的区域。 avoidSets 指定需要绕行的边界集;exposureSets 指定要进行测量的边界集,路线保持不变,同时报告路线在各区域内行驶的米数。如果某个区域包含你提供的位置,则无法让该路线避开此区域;系统会跳过该区域,并在结果中说明。

额度限制适用:免费套餐最多支持 2 个位置,Pro 最多支持 25 个位置;卡车路线仅限 Pro,备选路线必须恰好提供 2 个位置。超过上限时,结果会返回 403,且不会扣费;如果某个位置附近没有道路,则会返回 422,并且会扣费,因为系统已尝试规划路线。

地理编码

geocode_address 可将一个地址转换为一个点:在一行中传入 q,或传入已拆分为各部分的 address。目前支持南非。

address · confidence 0.96 · 25 Adderley Street, Cape Town, ZA-WC — dispatch
street · confidence 0.47 · ambiguous · Long Street, Cape Town, ZA-WC — ask the customer before dispatching

使用这个点之前,请先查看精度。 address 表示门牌地址;interpolated 表示根据前后门牌号估算的位置;intersection 表示街道拐角(“Cnr Main Rd and Belmont Rd”);site 表示有名称的地点,例如购物中心、商务园区或医院(请将商店或单元号告知司机);street 表示街道正确,但未精确到门牌;locality 仅表示郊区。结果行会根据 API 自身的建议处理配送:只有在结果精确到门牌、街角或地点且没有歧义时才派送;若结果仅精确到街道,请收件人提供定位;若结果有歧义,请联系客户。南非的大多数结果都只精确到街道,因为 OpenStreetMap 中只有约 13% 的街道名称包含门牌号。

每次调用只查询一个地址,每次查询计 1 次,无论是否找到结果。这是刻意设计的:配送清单会逐行处理,方便你查看用量。需要处理数千行的程序应直接调用 API 的 POST /geocode/batch。

街道

添加 street 图层后,结果会包含最近的街道,以及有地图数据时的门牌号。此功能覆盖全球,且需主动启用,不属于默认的 country, region, municipal 图层。

你始终会获得三个结果:分别对应 5 m、20 m 和不限距离,因为“最近的街道”取决于你愿意搜索多远:

"street": [
  { "radiusMeters": 5,    "streetNumber": null, "streetName": "Adderley Street", "postcode": null,   "distanceMeters": 2.7 },
  { "radiusMeters": 20,   "streetNumber": "25", "streetName": "Adderley Street", "postcode": "8001", "distanceMeters": 9.6 },
  { "radiusMeters": null, "streetNumber": "25", "streetName": "Adderley Street", "postcode": "8001", "distanceMeters": 9.6 }
]

两个含义不同的 null: "street": null 表示该国家没有街道数据;某个字段均为 null 的条目则表示在该距离范围内没有结果。streetNumber 和 postcode 是字符串(44A、12-14、0181);在地图数据不完善的地区以外,门牌号很少见。设置 streetGeometry 后,每个结果还会包含街道线条,截取长度约为 250 m。除非有东西要绘制,否则请勿启用。

安装

Claude Code
claude mcp add atlasfetch -- npx -y atlasfetch-mcp
Claude Desktop、Cursor、VS Code 和其他客户端

将以下内容添加到 MCP 配置中(claude_desktop_config.json、.cursor/mcp.json 或客户端对应的配置文件):

{
  "mcpServers": {
    "atlasfetch": {
      "command": "npx",
      "args": ["-y", "atlasfetch-mcp"],
      "env": {
        "ATLASFETCH_API_KEY": "your-key-here"
      }
    }
  }
}

需要 Node 20 或更高版本。

获取密钥

演示密钥由互联网上所有匿名用户共享,共用一个配额和速率限制。适合初步体验,但不适用于实际用途。

在 atlasfetch.xyz/dashboard 创建自己的密钥,并设置 ATLASFETCH_API_KEY。免费 Personal 计划无需绑定银行卡。你可以随时在控制面板中复制密钥,因此请在那里将密钥限制为仅适用于自己的域名。2026 年 10 月 12 日之前创建的密钥已被撤销;如果你的密钥停止工作,请复制一个仍有效的密钥。

变量默认值用途
ATLASFETCH_API_KEY(演示密钥)你的 API 密钥。
ATLASFETCH_API_URLhttps://api.atlasfetch.xyz仅用于本地或预发布 API 的覆盖设置。

两件容易让人意外的事

municipal 是可用的最细级别,并非始终代表同一类区域。 洛杉矶会返回城市,堪萨斯州的乡村地区会返回县,有些地方则会返回行政区。若某个国家的精细级别数据不完整,系统会改用数据完整的较粗级别,因为在大多数用途中,县总比 null 好。不要假设该值一定是城市名称。

无法通过此服务让新的边界集变为可查询。 边界集创建后默认处于停用状态,且不会授予任何密钥;授权时需要 API 密钥 id,而只有已登录的浏览器会话才能列出该 ID。因此,此服务可以创建边界集并填充数据,但最后一步必须在控制面板中完成。create_boundary_set 会在响应中说明这一点,不会让你得到一个悄无声息地匹配不到任何内容的边界集。

计费

一次查询或一个地理编码地址计为一次查询;标准套餐中,一条路线计为 10 次查询。无论一次查询涉及多少图层、集合或网格代码,都只计为一次。计量发生在匹配之前,因此,即使查询没有匹配到任何内容,也会计费。被拒绝的无效请求或超出速率限制的请求不会计费。

约定

以下规则适用于全部七种工具,因此同一种输入在任何地方都表示相同的含义。

  • set 表示一个集合,sets 表示多个集合。 add_boundary 和 update_boundary 操作一个集合(set)。lookup_location 和 geocode_address 会与任意数量的集合(sets)进行匹配。

  • get_route 会展平两个 API 对象。 API 接受 avoid: { sets: [...] } 和 exposure: { sets: [...] }。工具使用 avoidSets 和 exposureSets,因为模型容易弄错只有一个键的包装对象。

  • …Geometry 始终表示你要求返回的线,并且默认关闭。 get_route 中的 routeGeometry,以及 lookup_location 和 geocode_address 中的 streetGeometry。普通的 geometry 输入则是你传入的多边形,适用于 add_boundary 和 update_boundary。(get_route 仍接受 geometry 作为 routeGeometry 的旧名称;该名称将在 1.0 中移除。)

  • 如果默认值与 API 不同,那是有意为之:

    工具输入此服务API原因
    get_routestepstruefalse用户向助手询问路线时,通常需要逐向导航
    lookup_locationstreetGeometry将 street 添加到 base没有 street 时返回 400请求街道的线形几何,就表示需要这条街道
  • 每个回答的第一行是写给人的,不构成接口约定。 它会概括回答并说明如何使用(— dispatch、— ask the customer),其措辞也会持续改进。下方的 JSON 是 API 原样返回的回答,应以此为准进行解析。

稳定性

在 1.0 之前,次版本(0.3 → 0.4)可能会重命名或移除输入项,就像 0.4.0 所做的那样;但始终会先提供已弃用的别名。

从 1.0 起:

  • **冻结:**工具名称、输入名称、输入类型和默认值。
  • **次版本发布中可能变更:**新增工具、新增可选输入、新增输出可取值(例如 precision 新增了 intersection 和 site),以及描述和每个回答第一行的措辞。
  • **破坏性变更会通过弃用流程处理。**旧形式至少会继续有效一个次版本,其描述会说明替代形式,并且只会在下一个主版本中移除。
  • 每个回答中的 JSON 都遵循 AtlasFetch API;该 API 会在自己的 OpenAPI 规范 中对接口约定进行版本管理。

每个版本的变更都记录在 CHANGELOG.md 中。

开发

npm install
npm run build
node scripts/smoke.mjs   # drives the built server with a real MCP client, against the live API

链接

许可证

此服务采用 MIT 许可证。参考边界数据源自 OpenStreetMap,受 ODbL 许可;署名和相同方式共享义务也适用于你。你查询的坐标不会被存储。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。