Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added assets/maptec-maps/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
43 changes: 43 additions & 0 deletions external_plugins/maptec-maps/.zcode-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{
"name": "maptec-maps",
"description": "Maptec MCP integration and skill for place search, geocoding, route planning, distance matrix, map matching, and IP geolocation.",
"description_i18n": {
"en": "Maptec MCP integration and skill for place search, geocoding, route planning, distance matrix, map matching, and IP geolocation.",
"zh-CN": "Maptec MCP 与技能:地点与周边搜索、地理编码、路线规划、距离矩阵、轨迹绑路与 IP 定位。"
},
"version": "0.1.3",
"author": {
"name": "Maptec (云图知行)",
"url": "https://github.com/maptec-api/agent-plugins"
},
"homepage": "https://lbs.maptec.com/docs/en-US/mcp/introduction",
"repository": "https://github.com/maptec-api/agent-plugins",
"license": "MIT",
"keywords": [
"maptec",
"maps",
"geocoding",
"routing",
"places",
"mcp"
],
"skills": "./skills/",
"userConfig": {
"maptec_api_key": {
"type": "string",
"title": "Maptec API Key",
"description": "Application API key from https://lbs.maptec.com/console/ . Enter the key itself, without Bearer.",
"required": true,
"sensitive": false
}
},
"mcpServers": {
"maptec": {
"type": "http",
"url": "https://mcp.maptec.com/mcp",
"headers": {
"Authorization": "${user_config.maptec_api_key}"
}
}
}
}
21 changes: 21 additions & 0 deletions external_plugins/maptec-maps/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 kyle ni

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
47 changes: 47 additions & 0 deletions external_plugins/maptec-maps/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# maptec-maps

[中文文档](./README_CN.md)

Connect ZCode to **Maptec MCP** for place search, geocoding, routing, distance matrix, map matching, and IP geolocation. The plugin registers a remote HTTP MCP server and the `maptec-maps` skill so the agent discovers tools and follows Maptec usage guidance.

Upstream: [maptec-api/agent-plugins](https://github.com/maptec-api/agent-plugins).

## Security and side effects

Enabling this plugin grants network access to Maptec’s hosted MCP service and sends location, address, route, and IP data that you ask the agent to query.

- **Network**: HTTPS requests to `https://mcp.maptec.com/mcp` (Streamable HTTP MCP).
- **Credentials**: A Maptec application API key is required. Configure `maptec_api_key` in the plugin settings (ZCode treats this field as non-sensitive). Do not paste keys into chat or commit them to the repository.
- **Authorization header**: Send the **raw API key** as the `Authorization` value. Do not prepend `Bearer` unless Maptec documentation changes.
- **No local command execution**: The plugin does not ship shell hooks or local MCP stdio servers; only the declared remote MCP and skill files are included.
- **Billing / quotas**: Maptec API usage is subject to your Maptec account and product terms.

Create keys at the [Maptec console](https://lbs.maptec.com/console/).

## Install

1. In ZCode, open **Settings → Plugins** and install **maptec-maps** from the official marketplace (after this plugin is published).
2. Enable the plugin.
3. Open the plugin details → **Advanced → Configuration** and save **Maptec API Key**. Alternatively, configure a separate authenticated Maptec MCP connection and rely on the skill for tool selection guidance.

## Verify

1. Confirm **Settings → MCP** lists a **Plugin MCP server** for Maptec and that it connects successfully.
2. In a workspace, ask: “Search for cafes within 1000 m of 1.2868,103.8545 in Singapore.”
3. Confirm the agent calls Maptec search tools and returns results without asking you to paste an API key in chat.

## Components

| Component | Purpose |
| --- | --- |
| Skill `maptec-maps` | Tool selection, parameter hygiene, and response interpretation for Maptec MCP |
| MCP `maptec` | Remote Maptec MCP over HTTP with API key in `Authorization` |

## Documentation

- [Maptec MCP introduction](https://lbs.maptec.com/docs/en-US/mcp/introduction)
- [Maptec MCP connection overview](https://lbs.maptec.com/docs/en-US/mcp/overview)

## License

MIT — see [LICENSE](./LICENSE).
47 changes: 47 additions & 0 deletions external_plugins/maptec-maps/README_CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# maptec-maps

[English](./README.md)

为 ZCode 接入 **Maptec MCP**,支持地点与周边搜索、地理编码、路线规划、距离矩阵、轨迹绑路与 IP 定位。插件注册远程 HTTP MCP 服务,并提供 `maptec-maps` 技能,便于 Agent 发现工具并按 Maptec 规范调用。

上游仓库:[maptec-api/agent-plugins](https://github.com/maptec-api/agent-plugins)。

## 安全与副作用

启用本插件即允许 Agent 通过 HTTPS 访问 Maptec 托管的 MCP 服务;你发起的地图相关请求(地点、地址、路线、IP 等)会发送到 Maptec。

- **网络**:向 `https://mcp.maptec.com/mcp` 发起 HTTPS 请求(Streamable HTTP MCP)。
- **凭据**:需要 Maptec 应用 API Key,在插件设置中配置 `maptec_api_key`(ZCode 将该字段视为非敏感项);勿在对话或仓库中明文保存密钥。
- **Authorization**:请求头使用**原始 API Key**,不要自行添加 `Bearer` 前缀(除非 Maptec 文档另有要求)。
- **本地执行**:不包含 Hook 或本地 stdio MCP,仅包含远程 MCP 声明与技能文件。
- **计费与配额**:按 Maptec 账户与产品条款计费。

在 [Maptec 控制台](https://lbs.maptec.com/console/) 创建 API Key。

## 安装

1. 在 ZCode **设置 → 插件** 中,从官方市场安装 **maptec-maps**(收录后可用)。
2. 启用插件。
3. 在插件详情 **高级信息 → 配置** 中保存 **Maptec API Key**。也可单独配置已鉴权的 Maptec MCP,并依赖技能完成工具选择。

## 验证

1. 在 **设置 → MCP** 中确认出现 Maptec 的 **Plugin MCP 服务器** 且连接成功。
2. 在工作区提问:「搜索新加坡坐标 1.2868,103.8545 周围 1000 米内的咖啡馆。」
3. 确认 Agent 调用 Maptec 工具返回结果,且未要求在对话中粘贴 API Key。

## 组件

| 组件 | 作用 |
| --- | --- |
| 技能 `maptec-maps` | Maptec MCP 工具选择、参数与结果解读指引 |
| MCP `maptec` | 远程 HTTP Maptec MCP,`Authorization` 携带 API Key |

## 文档

- [Maptec MCP 介绍](https://lbs.maptec.com/docs/en-US/mcp/introduction)
- [Maptec MCP 接入说明](https://lbs.maptec.com/docs/en-US/mcp/overview)

## 许可证

MIT — 见 [LICENSE](./LICENSE)。
9 changes: 9 additions & 0 deletions external_plugins/maptec-maps/UPSTREAM.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Upstream

This plugin is maintained by **Maptec (云图知行)**. The canonical source tree lives in the upstream repository; this directory is the ZCode marketplace packaging.

- Upstream repository: https://github.com/maptec-api/agent-plugins
- Upstream version at import: `0.1.3`
- License: MIT (see `LICENSE`)

The ZCode packaging adds `.zcode-plugin/plugin.json` with bilingual `description_i18n`, HTTP Maptec MCP registration, and the shared `maptec-maps` skill. Sync skill and manifest changes from upstream when releasing new marketplace versions.
Binary file added external_plugins/maptec-maps/assets/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added external_plugins/maptec-maps/assets/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
44 changes: 44 additions & 0 deletions external_plugins/maptec-maps/skills/maptec-maps/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
name: maptec-maps
description: Search places and nearby businesses, resolve addresses or coordinates, plan routes, compare travel distances, match road tracks, and locate IP addresses using Maptec MCP. Use when Maptec is requested or is the connected map provider, including mapping requests that do not mention Maptec by name.
description_zh: 使用 Maptec MCP 进行地点与周边搜索、地理编码、路线规划、距离计算、轨迹绑路与 IP 定位;当用户需要地图、路线、地址或坐标查询时使用。
description_en: Search places, geocode, plan routes, and related map tasks with Maptec MCP; use for map, routing, address, or coordinate requests.
version: 0.1.3
author: 云图知行
---

Use the connected Maptec MCP server and discover its actual tools and parameter schemas before calling them. Answer in the user's language.

If the connection needs credentials, direct the user to the host's secure connection flow. Maptec application API keys are created at https://lbs.maptec.com/console/ . The official remote endpoint is https://mcp.maptec.com/mcp and expects the API key itself in the Authorization header. Do not prepend Bearer unless the provider changes its documented requirements. Never request keys in chat or store them in files.

Ask only for information needed for the requested operation. Use locations and coordinates already supplied in the conversation. Clarify an ambiguous city or place only when it would materially change the result. Ask for a search center when a nearby request lacks one, and obtain missing origin or destination for routing; never assume the user's current location. Place search and geocoding do not require a route starting point or travel mode. For routing, clarify the mode when necessary; if using a documented default, state the mode used.

Choose tools by the user's goal. The following names are examples; the current connection's discovered tools and schemas are authoritative.

| User goal | Tool choice |
|---|---|
| Find a place or business by name or keyword | Prefer text search, such as `map_search_text`; use `map_search_suggest` for incomplete names or search suggestions |
| Convert a street address to coordinates | Geocoding, such as `map_search_geocode` |
| Find an address for supplied coordinates | Reverse geocoding, such as `map_search_reverse` |
| Find businesses around a location | Nearby search, such as `map_search_nearby`; resolve a named search center to coordinates first if needed |
| Get more information about a returned place | Place details, such as `map_search_places`, using an actual returned place ID |
| Plan a route between locations | Directions, such as `map_routes_directions`; resolve named endpoints to suitable coordinates if needed |
| Compare travel distances or times across origins and destinations | Distance matrix, such as `map_matrix_distance` |
| Align supplied track points to roads | Map matching, such as `map_track_snap_to_roads`, preserving the supplied point order |
| Look up the approximate location of a supplied IP address | IP geolocation, such as `map_location_ip`; do not present it as an exact device or live GPS location |

Preserve the coordinate order, coordinate system, and units defined by each tool; do not silently swap latitude and longitude or convert coordinate systems. Distinguish route distance from straight-line distance. Include duration or traffic timing only when returned by the service. Do not invent tools, parameters, ratings, opening hours, results, or routes.

For combined searches, reuse place IDs and coordinates already returned during the task. Request only enough candidates to answer the question, and fetch place details only when the requested information is missing. Apply supported location and language parameters from the user's context; a search bias or relevance ranking alone does not establish a strict radius or travel-time boundary.

- To find the closest place by driving or walking, search for candidates, then compare routed distances or durations with a matrix using the requested mode. Keep matrix rows and columns associated with their original locations, and exclude unreachable or failed pairs from the ranking. Request detailed directions for the selected destination when needed. Describe it as the best among the evaluated candidates, rather than the globally nearest place.
- For a request such as "cafes within a ten-minute walk," retrieve a reasonable candidate set and filter using returned walking durations. Do not convert the time threshold to an assumed search radius or infer walking duration from driving results. If the needed routing tools or mode are unavailable, explain that the travel-time condition could not be verified. A finite candidate search is not a complete reachable-area calculation.
- Prefer a supported matrix call for comparing multiple journeys over repeated directions calls, respecting the discovered batch limits. Reuse results for unchanged inputs within the task; refresh time-sensitive data when the user's timing or route conditions change.

Check the service response status even when the MCP call itself reports no transport error. A response with status ERROR is a failed query. When geocoding returns isDegraded or isPartial, or only a country-level match for a specific address or place, describe that precision limit. Do not present a degraded match as an exact location or use it as a precise routing endpoint. Where a place-name search can resolve the request using information already supplied, try it before asking for more details. Ask for a more specific address or coordinate if the result remains ambiguous or too coarse. Verify the returned place and coordinates before planning a route.

Use locations and other data within the scope of the user's request. Do not send unrelated private data to the map service. If a tool fails or authentication is incomplete, explain the specific missing step and avoid presenting estimated outputs as service results.

Official documentation:
- Overview: https://lbs.maptec.com/docs/en-US/mcp/introduction
- Connection setup: https://lbs.maptec.com/docs/en-US/mcp/overview
39 changes: 39 additions & 0 deletions marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,45 @@
"mcp"
]
},
{
"name": "maptec-maps",
"source": "./external_plugins/maptec-maps",
"displayName": "Maptec Maps",
"displayName_i18n": {
"en": "Maptec Maps",
"zh-CN": "Maptec 地图"
},
"description": "Maptec MCP integration and skill for place search, geocoding, route planning, distance matrix, map matching, and IP geolocation.",
"description_i18n": {
"en": "Maptec MCP integration and skill for place search, geocoding, route planning, distance matrix, map matching, and IP geolocation.",
"zh-CN": "Maptec MCP 与技能:地点与周边搜索、地理编码、路线规划、距离矩阵、轨迹绑路与 IP 定位。"
},
"version": "0.1.3",
"author": {
"name": "Maptec (云图知行)",
"url": "https://github.com/maptec-api/agent-plugins"
},
"icon": "https://cdn-zcode.z.ai/zcode/official-plugin/assets/maptec-maps/icon.png",
"category": "developer-tools",
"keywords": [
"maptec",
"maps",
"geocoding",
"routing",
"places",
"mcp"
],
"examplePrompts": [
"Find cafes within a 10-minute walk of Marina Bay Sands",
"Plan a driving route from 1.2868,103.8545 to 1.2834,103.8607"
],
"examplePrompts_i18n": {
"zh-CN": [
"查找滨海湾金沙步行 10 分钟内能到的咖啡馆",
"规划从 1.2868,103.8545 到 1.2834,103.8607 的驾车路线"
]
}
},
{
"name": "mimosa",
"source": "./plugins/mimosa",
Expand Down