PostNL快递服务MCP服务器

一个为PostNL API构建的Model Context Protocol (MCP)服务器,支持通过自然语言创建快递、生成条形码、跟踪包裹、计算交付日期和查找取件点。

  • by BartWaardenburg
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 BartWaardenburg/postnl-mcp

使用说明

postnl-mcp

一个 模型上下文协议 (MCP)服务器 PostNL API创建货件、生成条形码、跟踪包裹、计算交货日期和查找取货点——所有这些都是通过人工智能应用程序中的自然语言。

让我们来: 这是一个非官方的,由社区维护的项目,不与PostNL相关或批准。

社区建设 模型上下文协议 (MCP)服务器 PostNL API.创建货物、生成条形码、跟踪包裹、计算交货日期和查找取货地点——所有这些都可以通过任何兼容MCP的AI客户端使用自然语言完成。

注: 这是一个非官方的、由社区维护的项目,与PostNL无关或不受其认可。

快速启动

你不需要克隆这个仓库。

  1. 确保安装了 Node.js 20+(您的 AI 应用程序正在运行) npx op-je机器)
  2. 获取PostNL API数据(见 API密钥设置)
  3. 将服务器添加为 AI 应用程序中的 MCP 服务器(复制下面的配置)
  4. 用简单的荷兰语提问(见 例子)

快速入门(非开发人员)

您不需要克隆此仓库。

  1. 确保已安装Node.js 20+(您的AI应用程序将运行 npx 在您的机器上)
  2. 获取PostNL凭据(请参阅 API密钥设置)
  3. 将此添加为AI应用程序中的MCP服务器(复制/粘贴下面的配置)
  4. 提出简单的运输/跟踪问题(请参阅 示例用法)

添加到Claude桌面(也适用于协作)

Cowork在Claude Desktop内部运行,并使用相同的连接MCP服务器和权限。

  1. 打开您的Claude Desktop MCP配置文件:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\\Claude\\claude_desktop_config.json
  2. 添加此服务器条目(或合并到现有条目中 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"
      }
    }
  }
}
  1. 重新启动克劳德桌面

添加到其他AI应用程序

大多数MCP应用程序都有一个“添加MCP服务器”屏幕,您可以在其中填写:

  • 命令: npx
  • Args: -y postnl-mcp
  • 环境: POSTNL_API_KEY=..., POSTNL_CUSTOMER_CODE=..., POSTNL_CUSTOMER_NUMBER=...

如果您的应用程序需要JSON,请粘贴此内容并将顶级密钥名称调整到您的客户端(常见密钥为 mcpServers, servers,或 context_servers):

{
  "<servers-key>": {
    "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 或空的业务数据。

特性

  • 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(使顶级密钥适应您的主机):

{
  "<servers-key>": {
    "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-mcp

Codex 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 命令服务器)
  • 此服务器公开的工具名称和工具模式

什么是特定于主机/供应商的(不可移植):

安全说明

  • 信任模型: 允许调用此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密钥

  1. 注册a PostNL开发者门户 账户
  2. 订阅您需要的API(发货、条形码、交货日期等)
  3. 为应用程序生成API密钥
  4. 找到你的 客户代码 和 客户编号 在您的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凭证的业务帐户

许可证

麻省理工学院-见 许可证 了解详情。