ShipSmart-MCP
ShipSmart-MCP
独立的 MCP (Model Context Protocol) 服务器,通过简单的 HTTP 契约公开 ShipSmart 的物流工具(validate_address、get_quote_preview 等)。
它是平台中工具行为的唯一事实来源。ShipSmart-API(Python / FastAPI — RAG 和 LLM)和 ShipSmart-Orchestrator(Java / Spring Boot — 即将推出的 AI 功能)都会调用此服务器,而不是在进程内实现工具。
HTTP 契约
方法 | 路径 | 用途 |
GET |
| 服务发现(名称、版本、工具数量、端点)。 |
GET |
| Render 使用的存活探针。 |
POST |
| 返回所有已注册工具的架构。 |
POST |
| 使用提供的参数按名称执行工具。 |
GET |
| Swagger UI(仅限非生产环境)。 |
GET |
| ReDoc(仅限非生产环境)。 |
与 MCP tools/list 和 tools/call 语义兼容:每次调用返回 { success, content: [...], error? },其中 content 是适合 LLM 使用的 {type, text} 块列表。
/docs 和 /redoc 仅在 APP_ENV != production 时挂载。
身份验证
如果服务器上设置了 MCP_API_KEY,则每个 POST /tools/* 请求都必须在 X-MCP-Api-Key 中发送匹配的值。如果 MCP_API_KEY 为空,则禁用身份验证(仅限本地开发)。GET / 和 GET /health 始终无需身份验证,以便健康检查和服务发现可以在没有共享密钥的情况下工作。
错误响应
条件 | HTTP | 正文 |
缺少或无效的 | 401 |
|
未知的工具名称 | 404 |
|
输入验证失败或工具异常 | 200 |
|
验证和执行错误特意返回 HTTP 200 和 success=false,以便消费者可以将协议级故障 (4xx) 与工具级故障 (200 + success=false) 区分开来。
Related MCP server: DB2ST MCP
工具
名称 | 描述 |
| 通过配置的承运商验证并标准化邮寄地址。 |
| 包裹的非约束性运费预览。最终运费来自 Java API。 |
工具委托给由 SHIPPING_PROVIDER 选择的可插拔 ShippingProvider 实现。
提供程序 | 状态 |
| 完全可用。为本地开发和测试返回确定性的伪造数据。 |
| 存根 — 类存在但尚未准备好投入生产。 |
| 存根 — 类存在但尚未准备好投入生产。 |
| 存根 — 类存在但尚未准备好投入生产。 |
| 存根 — 类存在但尚未准备好投入生产。 |
添加工具只需将新类放入 app/tools/ 并在 app/main.py 中注册即可。
提供程序启动行为
SHIPPING_PROVIDER=mock(默认)在启动时会发出响亮的WARNING,以免操作员对伪造数据感到惊讶。在没有所有必需凭据的情况下选择真实承运商(
ups/fedex/dhl/usps)会在启动时引发ValueError。没有静默回退到 mock 的机制 — 错误配置会快速且明显地失败。
配置
所有设置均从环境变量(或本地开发的 .env)加载。有关完整列表和默认值,请参阅 .env.example。
变量 | 用途 |
|
|
| 绑定地址。默认为 |
| 标准日志级别(默认 |
| CORS 中间件允许的逗号分隔来源。 |
| 在 |
|
|
| 每个承运商的凭据和基础 URL。 |
本地运行
先决条件:Python 3.13+ 和 uv。
cp .env.example .env
# fill in credentials if you want real carrier integration; default is SHIPPING_PROVIDER=mock
uv sync
uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8001冒烟测试:
curl -s http://localhost:8001/health
curl -s -X POST http://localhost:8001/tools/list
curl -s -X POST http://localhost:8001/tools/call \
-H 'Content-Type: application/json' \
-d '{
"name": "validate_address",
"arguments": {
"street": "123 Main St",
"city": "San Francisco",
"state": "CA",
"zip_code": "94105"
}
}'测试
uv run pytest可观测性
RequestLoggingMiddleware (app/core/middleware.py) 处理每个请求的相关 ID:
从入站请求读取
X-Request-Id,如果不存在则生成一个 UUID 十六进制字符串。读取 W3C
traceparent,如果不存在或格式错误则生成一个新的。在响应中回显这两个标头,以便调用者可以跨服务按 ID 进行
grep。在
shipsmart_mcp.requests记录器上为每个请求发出一条日志行:
GET /health → 200 (1.4ms) [a1b2c3...]从上游服务传递 X-Request-Id,以将 ShipSmart-API → MCP → 承运商 API 的单个请求串联起来。
部署 (Render)
render.yaml 是定义已部署服务的 Render 蓝图:
Python Web 服务,通过
pip install uv && uv sync构建,通过uvicorn app.main:app --host 0.0.0.0 --port $PORT启动。/health处的健康检查。MCP_API_KEY设置为sync: false— 在 Render 仪表板中设置一次,并为每个消费者的SHIPSMART_MCP_API_KEY使用相同的值。默认
SHIPPING_PROVIDER=fedex指向https://apis-sandbox.fedex.com(FedEx 沙盒,非生产环境)。在提升到实时承运商流量时覆盖基础 URL。CORS 来源在蓝图中固定为已部署的消费者 URL。
通过将 Render 指向此存储库进行配置;所有 sync: false 环境变量必须在第一次部署成功之前填写。
消费者
ShipSmart-API(Python / FastAPI;在 Render 上部署为
shipsmart-api-python):将SHIPSMART_MCP_URL指向此服务器,并从其编排和顾问服务中调用/tools/list+/tools/call。ShipSmart-Orchestrator(Java / Spring Boot;在 Render 上部署为
shipsmart-api-java):将从其即将推出的 AI 辅助流程中调用相同的 HTTP 契约。Java 代码库中不包含任何工具逻辑。
这保持了工具层的集中化 — 添加一次工具,每个服务都可以使用它。
This server cannot be deployed
Maintenance
Related MCP Connectors
A paid remote MCP for ShipSwift, built to return verdicts, receipts, usage logs, and audit-ready JSO
MCP server for EasyPost — rate shipments, buy & refund labels, track packages, verify addresses.
A paid remote MCP for CLI tool MCP, built to return verdicts, receipts, usage logs, and audit-ready
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with ShipEngine's shipping API, allowing users to manage shipments, labels, carriers, and other shipping operations through natural language commands.-
- AlicenseNot gradedqualityDmaintenanceA horizontally scalable Model Context Protocol server for exposing shipment tracking (and other data sources) as authenticated MCP tools, starting with DB Schenker's public tracking endpoint.1MIT
- AlicenseBqualityDmaintenanceAn MCP server that wraps the ShipSaving logistics REST API, enabling AI assistants like Claude to perform shipping operations through natural language.3013 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server exposing Shopify commerce backend with ~22 typed tools for orders, inventory, logistics, and fulfillment, including read/write separation and structured errors.-