发货跟踪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
cd shipment-tracker-mcp-server2.为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的传输,允许它作为共享服务部署,并由多个客户端访问,而无需本地安装。
