货运跟踪服务

一个基于MCP协议的货运跟踪服务器,用于跟踪DB Schenker的货运信息,返回结构化的货运数据。

  • by lanavirsen
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 lanavirsen/shipment-tracker-mcp-server

使用说明

发货跟踪MCP服务器

跟踪德铁信可货运的MCP(模型上下文协议)服务器。暴露单个 track_shipment 该工具接受德铁信可参考号并返回结构化装运数据,包括货物详细信息、跟踪历史和每个包裹事件。

实现

此存储库包含两个实现。这 main 这个分支使用剧作家。使用直接HTTP和工作量证明CAPTCHA求解器的替代实现可在 captcha-pow-direct-http 支。

剧作家(这个分支)

德铁信可跟踪网站使用浏览器端JavaScript生成的CAPTCHA令牌保护其内部API。直接HTTP调用被429拒绝。为了解决这个问题,服务器使用Playwright启动无头Chromium浏览器,导航到跟踪页面(让浏览器自动处理CAPTCHA),并直接拦截两个底层API响应-不涉及HTML抓取。

带工作量证明求解器的直接HTTP(captcha-pow-direct-http 分支)

这 captcha-pow-direct-http branch完全消除了浏览器依赖性。当API返回429时,响应包括 Captcha-Puzzle 包含工作量证明挑战的标题。服务器使用双SHA-256循环(从站点的JS反向工程)解决这些问题,然后使用 Captcha-Solution 头球这种方法没有Playwright开销,可以轻松扩展到并发调用,但由于它依赖于逆向工程算法,因此对站点更改更脆弱。

先决条件

  • .NET 9 SDK
  • Playwright的Chromium浏览器(一次性安装,见下文)

设置

1.克隆存储库

git clone <repo-url>
cd shipment-tracker-mcp-server

2.为Playwright安装Chromium

dotnet build --configuration Release src/ShipmentTrackerMcp
dotnet tool install --global Microsoft.Playwright.CLI
playwright install chromium

连接到MCP客户端

此服务器实现了标准的MCP协议,并与任何兼容MCP的客户端一起工作。下面是Claude Desktop的示例配置(claude_desktop_config.json):

{
  "mcpServers": {
    "shipment-tracker": {
      "command": "dotnet",
      "args": [
        "run",
        "--no-build",
        "--configuration", "Release",
        "--project", "C:\\path\\to\\shipment-tracker-mcp-server\\src\\ShipmentTrackerMcp"
      ]
    }
  }
}

替换 C:\\path\\to\\ 使用机器上的实际路径。请注意,JSON中的反斜杠必须加倍。

更新配置后,重新启动Claude Desktop。然后,您可以让Claude跟踪货物:

“追踪德铁信可1806290829号货物”

用实际货物进行测试

连接到MCP客户端后,尝试参考号 1806290829.

要测试错误处理,请使用无效的引用,例如 0000000000 -该工具应返回“未找到”错误,而不是超时。

运行测试

dotnet test

已知限制

  • 没有发件人/收件人姓名 -API仅返回位置数据(城市、邮政编码、国家)。名称不可用。
  • 延迟 -每次调用都会启动一个新的无头浏览器实例(大约2-3s的开销),让浏览器处理验证码。生产版本将保持持久的浏览器会话。
  • stdio传输 -服务器在主机上作为本地进程运行。生产版本将使用基于HTTP的传输,允许它作为共享服务部署,并由多个客户端访问,而无需本地安装。