postnl-mcp
](https://www.npmjs.com/package/postnl-mcp)  ](https://nodejs.org/)   
一个 模型上下文协议 (MCP)服务器 PostNL API创建货件、生成条形码、跟踪包裹、计算交货日期和查找取货点——所有这些都是通过人工智能应用程序中的自然语言。
让我们来: 这是一个非官方的,由社区维护的项目,不与PostNL相关或批准。
社区建设 模型上下文协议 (MCP)服务器 PostNL API.创建货物、生成条形码、跟踪包裹、计算交货日期和查找取货地点——所有这些都可以通过任何兼容MCP的AI客户端使用自然语言完成。
注: 这是一个非官方的、由社区维护的项目,与PostNL无关或不受其认可。
快速启动
你不需要克隆这个仓库。
- 确保安装了 Node.js 20+(您的 AI 应用程序正在运行)
npxop-je机器) - 获取PostNL API数据(见 API密钥设置)
- 将服务器添加为 AI 应用程序中的 MCP 服务器(复制下面的配置)
- 用简单的荷兰语提问(见 例子)
快速入门(非开发人员)
您不需要克隆此仓库。
- 确保已安装Node.js 20+(您的AI应用程序将运行
npx在您的机器上) - 获取PostNL凭据(请参阅 API密钥设置)
- 将此添加为AI应用程序中的MCP服务器(复制/粘贴下面的配置)
- 提出简单的运输/跟踪问题(请参阅 示例用法)
添加到Claude桌面(也适用于协作)
Cowork在Claude Desktop内部运行,并使用相同的连接MCP服务器和权限。
- 打开您的Claude Desktop MCP配置文件:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 窗户: %APPDATA%\\Claude\\claude_desktop_config.json
- 添加此服务器条目(或合并到现有条目中
mcpServers):
{
"mcpServers": {
"postnl-mcp": {
"command": "npx",
"args": ["-y", "postnl-mcp"],
"env": {
"POSTNL_API_KEY": "your-api-key",
"POSTNL_CUSTOMER_CODE": "your-customer-code",
"POSTNL_CUSTOMER_NUMBER": "your-customer-number"
}
}
}
}- 重新启动克劳德桌面
添加到其他AI应用程序
大多数MCP应用程序都有一个“添加MCP服务器”屏幕,您可以在其中填写:
- 命令:
npx - Args:
-y postnl-mcp - 环境:
POSTNL_API_KEY=...,POSTNL_CUSTOMER_CODE=...,POSTNL_CUSTOMER_NUMBER=...
如果您的应用程序需要JSON,请粘贴此内容并将顶级密钥名称调整到您的客户端(常见密钥为 mcpServers, servers,或 context_servers):
{
"": {
"postnl-mcp": {
"command": "npx",
"args": ["-y", "postnl-mcp"],
"env": {
"POSTNL_API_KEY": "your-api-key",
"POSTNL_CUSTOMER_CODE": "your-customer-code",
"POSTNL_CUSTOMER_NUMBER": "your-customer-number"
}
}
}
}故障排除
- 错误:
Missing required env vars或启动验证错误。
- 修复:添加 POSTNL_API_KEY, POSTNL_CUSTOMER_CODE,以及 POSTNL_CUSTOMER_NUMBER 到服务器 env 并重新启动您的应用程序。
- 错误:
npx: command not found或者服务器无法启动。
- 修复:安装Node.js 20+并重新启动应用程序。
- 已连接但API调用失败
401/403或空的业务数据。
- 修复:验证您使用的工具的PostNL API订阅(请参阅 必需的API订阅).
特性
- 7工具 涵盖PostNL航运API的4个类别
- 条形码生成 适用于国内(3S)、邮箱(2S)、欧盟(CC/CP/CD/CF)和国际(LA/RI/UE)运输
- 发货创建 带有运输标签生成功能(PDF或ZPL格式)
- 包裹追踪 具有完整的状态历史和事件时间线
- 交货日期计算 支持原产国和邮政编码
- 交货时间表 提供晚间配送和周日分拣选项
- 定位仪 --按邮政编码、城市或坐标搜索PostNL上下车点
- 输入验证 通过每个工具上的Zod模式实现安全、可预测的操作
- 响应缓存 具有可配置的TTL和写入时自动失效功能
- 费率限制处理 具有指数回退和
Retry-After标头支持 - 工具集过滤 仅公开所需的工具类别
- Docker支持 通过GHCR进行集装箱化部署
- 可操作的错误消息 具有上下文感知的恢复建议
支持的客户
Advanced setup and supported clients (expand)
此MCP服务器未绑定到一个编码代理。它适用于任何可以启动stdio MCP服务器的MCP兼容客户端或代理运行时。
| 客户端/运行时 | 文档 |
|---|---|
| 克劳德代码 | 克劳德代码中的MCP |
| 人类API(信息API) | 远程MCP服务器 |
| Codex CLI(OpenAI) | Codex CLI文档 |
| Gemini CLI(谷歌) | Gemini CLI MCP服务器文档 |
| VS代码(副本) | 在VS代码中使用MCP服务器 |
| 克劳德桌面 | Claude Desktop中的MCP |
| 光标 | 光标文档 |
| 风帆冲浪 | Windsurf MCP文件 |
| 克莱恩 | 临床MCP文档 |
| Zed | Zed上下文服务器文档 |
| 任何其他MCP主机 | 使用命令/args/env 通用MCP服务器配置 |
克劳德生态系统笔记
Claude目前有多个易于混淆的MCP相关概念:
- 本地MCP服务器(克劳德桌面): 定义于
claude_desktop_config.json然后在你的机器上开始(文档). - 合作: 重用Claude Desktop中连接的MCP服务器(文档).
- 连接器: 在Claude中管理远程MCP集成(文档).
- 协作插件: Claude特定的工作流打包(说明+工具/数据集成)(文档).在Claude中很有用,但不能作为其他代理客户端的通用MCP服务器配置进行移植。
根据供应商文件验证 2026-03-05.
设置(高级用户)
如果快速入门在您的客户中有效,您可以跳过此部分。这些是额外的每个客户端设置选项和CLI单行程序。
通用MCP服务器配置
在任何主机中使用此作为基线:
- 命令:
npx - Args:
["-y", "postnl-mcp"] - 必需的环境变量:
POSTNL_API_KEY,POSTNL_CUSTOMER_CODE,POSTNL_CUSTOMER_NUMBER - 可选环境变量:
POSTNL_CACHE_TTL,POSTNL_MAX_RETRIES,POSTNL_TOOLSETS(参见 配置)
最小JSON(使顶级密钥适应您的主机):
{
"": {
"postnl-mcp": {
"command": "npx",
"args": ["-y", "postnl-mcp"],
"env": {
"POSTNL_API_KEY": "your-api-key",
"POSTNL_CUSTOMER_CODE": "your-customer-code",
"POSTNL_CUSTOMER_NUMBER": "your-customer-number"
}
}
}
}主机密钥映射:
| 主持人 | 顶级密钥 | 备注 |
|---|---|---|
| VS代码 | servers | 添加 "type": "stdio" 在服务器对象上 |
| 克劳德桌面/光标/风帆/克莱恩 | mcpServers | 相同的命令/args/env块 |
| Zed | context_servers | 相同的命令/args/env块 |
| 食品法典委员会CLI(TOML) | mcp_servers | 使用TOML,如下所示 |
克劳德代码
claude mcp add --scope user postnl-mcp \
--env POSTNL_API_KEY=your-api-key \
--env POSTNL_CUSTOMER_CODE=your-customer-code \
--env POSTNL_CUSTOMER_NUMBER=your-customer-number \
-- npx -y postnl-mcpCodex CLI(OpenAI)
codex mcp add postnl-mcp \
--env POSTNL_API_KEY=your-api-key \
--env POSTNL_CUSTOMER_CODE=your-customer-code \
--env POSTNL_CUSTOMER_NUMBER=your-customer-number \
-- npx -y postnl-mcp~/.codex/config.toml 备选方案:
[mcp_servers.postnl-mcp]
command = "npx"
args = ["-y", "postnl-mcp"]
env = { "POSTNL_API_KEY" = "your-api-key", "POSTNL_CUSTOMER_CODE" = "your-customer-code", "POSTNL_CUSTOMER_NUMBER" = "your-customer-number" }Gemini CLI(谷歌)
gemini mcp add postnl-mcp -- npx -y postnl-mcp集 POSTNL_API_KEY, POSTNL_CUSTOMER_CODE,以及 POSTNL_CUSTOMER_NUMBER 在 ~/.gemini/settings.json.
VS代码(副本)
打开命令选项板(Cmd+Shift+P / Ctrl+Shift+P) > MCP: Add Server > 命令(stdio),或使用 .vscode/mcp.json 使用顶级密钥 servers 以及来自的规范命令/args/env块 通用MCP服务器配置.
克劳德桌面+协作/光标/风帆/克莱恩/泽德
Cowork在Claude Desktop内部运行,并使用相同的连接MCP服务器和权限。在Claude Desktop中配置一次,服务器就可以在Cowork中使用。
使用规范配置块,并将其与匹配的顶级密钥一起放置在下面的主机文件中。
| 客户端 | 配置位置 | 顶级密钥 |
|---|---|---|
| 克劳德桌面(macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json | mcpServers |
| 克劳德桌面(Windows) | %APPDATA%\\Claude\\claude_desktop_config.json | mcpServers |
| 光标(项目) | .cursor/mcp.json | mcpServers |
| 光标(全局) | ~/.cursor/mcp.json | mcpServers |
| 风帆冲浪 | ~/.codeium/windsurf/mcp_config.json | mcpServers |
| 临床 | MCP设置UI | mcpServers |
| Zed(macOS/Linux) | ~/.zed/settings.json 或 ~/.config/zed/settings.json | context_servers |
码头工人
docker run -i --rm \
-e POSTNL_API_KEY=your-api-key \
-e POSTNL_CUSTOMER_CODE=your-customer-code \
-e POSTNL_CUSTOMER_NUMBER=your-customer-number \
ghcr.io/bartwaardenburg/postnl-mcp其他MCP客户端
使用以下值 通用MCP服务器配置.
术语
什么是可跨主机移植的:
- MCP服务器运行时设置(
command,args,env) - 运输模型(
stdio命令服务器) - 此服务器公开的工具名称和工具模式
什么是特定于主机/供应商的(不可移植):
- 主机配置密钥名称(
servers,mcpServers,context_servers,mcp_servers) - 主机UX/添加服务器的工作流(CLI命令、UI菜单、设置路径)
- 人类特有的概念,如 Claude Desktop本地MCP服务器, Claude连接器通过远程MCP,以及 Claude代码插件 用于联合工作流程
安全说明
- 信任模型: 允许调用此MCP服务器的任何提示或代理都可以使用配置的凭据执行PostNL API操作。
- 最低权限凭据: 每个环境/团队/用例使用单独的PostNL凭据,并且仅使用必需的API订阅。
- 书面行动批准: 为变异工具(装运创建和其他写入操作)启用主机端批准。
- 团队配置治理: 将共享MCP配置保留在版本控制中,要求检查命令/args/env/toolset过滤的更改,并将机密保存在vault或主机机密管理器中(而不是纯文本仓库文件中)。
配置
必需的
| 变量 | 描述 |
|---|---|
POSTNL_API_KEY | 您的PostNL API密钥 |
POSTNL_CUSTOMER_CODE | 您的PostNL客户代码(用于条形码生成和发货) |
POSTNL_CUSTOMER_NUMBER | 您的PostNL客户编号(用于装运请求) |
从获取您的API证书 PostNL开发者门户您的客户代码和客户编号可以在您的PostNL商业账户中找到。
可选的
| 变量 | 描述 | 默认值 |
|---|---|---|
POSTNL_CACHE_TTL | 响应缓存生存期(秒)。设置为 0 禁用缓存。 | 120 |
POSTNL_MAX_RETRIES | 具有指数回退的速率限制(429)请求的最大重试尝试次数。 | 3 |
POSTNL_TOOLSETS | 要启用的工具类别的逗号分隔列表(请参见 工具集筛选). | 所有工具集 |
API密钥设置
创建API密钥
- 注册a PostNL开发者门户 账户
- 订阅您需要的API(发货、条形码、交货日期等)
- 为应用程序生成API密钥
- 找到你的 客户代码 和 客户编号 在您的PostNL商业合同或门户中
必需的API订阅
根据您使用的工具,订阅:
| API订阅 | 工具 |
|---|---|
| 条形码API | generate_barcode |
| API标签 (装运v2) | create_shipment |
| 状态API (装运v2) | get_shipment_status |
| API交付日期 | get_delivery_date |
| API时间表 | get_delivery_options |
| 地点API | find_locations, get_location |
可用工具
运输
| 工具 | 说明 |
|---|---|
generate_barcode | 生成用于运输的PostNL条形码(类型:2S邮箱、3S国内、CC/CP/CD/CF EU、LA/RI/UE国际) |
create_shipment | 创建带有标签生成的装运——提供发件人/收件人地址,获取PDF或ZPL装运标签 |
追踪
| 工具 | 说明 |
|---|---|
get_shipment_status | 通过条形码跟踪包裹--返回当前状态、时间戳和完整的事件历史记录 |
交付
| 工具 | 说明 |
|---|---|
get_delivery_date | 根据邮政编码、装运日期和产品代码计算装运的预期交货日期 |
get_delivery_options | 获取地址的可用交付时间表(上午、下午、晚上窗口) |
位置
| 工具 | 说明 |
|---|---|
find_locations | 通过邮政编码、城市或GPS坐标查找附近的PostNL上下车点 |
get_location | 通过位置代码获取特定PostNL位置的详细信息 |
工具集筛选
通过仅启用所需的工具类别来减少上下文窗口的使用。设置 POSTNL_TOOLSETS 将环境变量转换为逗号分隔的列表:
POSTNL_TOOLSETS=shipping,tracking| 工具集 | 包含的工具 |
|---|---|
shipping | 条形码生成和装运创建 |
tracking | 通过条形码跟踪包裹 |
delivery | 交货日期计算和时间范围选项 |
locations | PostNL定位仪和详细信息 |
如果未设置,则启用所有工具集。无效名称将被忽略;如果所有名称都无效,则启用所有工具集作为回退。
条形码类型
PostNL根据货物使用不同的条形码类型:
| 类型 | 描述 | 系列格式 |
|---|---|---|
2S | 邮箱包裹 | 000000000-999999999 |
3S | 标准国内包裹 | 000000000-999999999 |
CC | 欧盟消费者包裹 | 000000000-999999999 |
CP | 欧盟紧凑型包裹 | 000000000-999999999 |
CD | 欧盟标准包裹 | 000000000-999999999 |
CF | 欧盟散装包裹 | 000000000-999999999 |
LA | 国际挂号信 | 000000000-999999999 |
RI | 国际注册装运 | 000000000-999999999 |
UE | 国际EMS | 000000000-999999999 |
常见产品代码
| 代码 | 描述 |
|---|---|
3085 | 标准装运 |
3385 | 仅递送至指定地址 |
3090 | 送货到邻居+不在家时退货 |
3087 | 额外保险 |
3089 | 交付时签名+仅交付至指定地址 |
3189 | 交货时签字 |
3533 | 提货+交货时签名 |
3534 | 提货+额外保险 |
3543 | 提货+交货时签名+通知 |
3438 | 年龄检查(18+) |
2928 | 邮箱包裹(brievenbuspakje) |
晚间配送不是单独的产品代码——使用任何兼容的产品代码(例如。 3085)带产品选项 {Characteristic: "118", Option: "006"} 和一个 DeliveryDate.
例子
一旦连接,您可以用简单的荷兰语提问:
- “为国内包裹生成条形码”
- “从我位于阿姆斯特丹Hoofdstraat 1的仓库发货到鹿特丹Kerkstraat 42”
- “按照包3STBJG123456789”
- “如果我今天发货,邮政编码1234AB的预期交货日期是多少?”
- “显示2511 BT Den Haag的交货时间”
- “查找邮政编码3011 AA的PostNL取款点”
- “提供PostNL位置176227的详细信息”
示例用法
连接后,您可以使用自然语言与PostNL API进行交互:
- “为国内包裹生成条形码”
- “创建从我位于阿姆斯特丹Hoofdstraat 1的仓库到鹿特丹Kerkstraat 42的货物”
- “轨道包裹3STBJG123456789”
- “如果我今天发货,邮政编码1234AB的预计交货日期是什么时候?”
- “显示2511 BT Den Haag的交货时间表”
- “查找邮政编码3011 AA附近的PostNL取件点”
- “获取PostNL位置176227的详细信息”
社区
发展
# Install dependencies
pnpm install
# Run in development mode
pnpm dev
# Build for production
pnpm build
# Run tests
pnpm test
# Type check
pnpm typecheck项目结构
src/
index.ts # Entry point (stdio transport)
server.ts # MCP server setup and toolset filtering
postnl-client.ts # PostNL API HTTP client with caching and retry
cache.ts # TTL-based in-memory response cache
types.ts # TypeScript interfaces for PostNL API
tool-result.ts # Error formatting with recovery suggestions
update-checker.ts # NPM update notifications
tools/
shipping.ts # Barcode generation and shipment creation
tracking.ts # Parcel tracking by barcode
delivery.ts # Delivery date and timeframe calculation
locations.ts # PostNL location finder需求
- Node.js>=20
- A. 邮政公司 具有API凭证的业务帐户
许可证
麻省理工学院-见 许可证 了解详情。
