Documentation Index
Fetch the complete documentation index at: https://terminal49.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
MCP Server Quickstart
This guide covers everything you need to connect Claude or Cursor to Terminal49’s container tracking data via MCP.Just want to get started fast? See MCP Overview for a 5-minute setup.
Prerequisites
Before you begin, make sure you have:Terminal49 Account
A Terminal49 account with API access
API Token
A
T49_API_TOKEN from the dashboardNode.js 18+
Required if running the MCP server locally
MCP Client
Claude Desktop or Cursor IDE
- MCP SDK:
@modelcontextprotocol/sdk ^1.26.0 - TypeScript SDK:
@terminal49/sdk - Runtime: Node.js 18+
Transports
| Transport | Endpoint | Best For |
|---|---|---|
| HTTP (streamable) | POST /api/mcp or POST /mcp | Serverless, short-lived requests |
Pass
Authorization: Bearer <T49_API_TOKEN> or Authorization: Token <T49_API_TOKEN>.Server falls back to
T49_API_TOKEN environment variable.
Configure your MCP client
Claude Desktop
- macOS
- Windows
- Linux
Edit
~/Library/Application Support/Claude/claude_desktop_config.json:Cursor IDE
Add to your Cursor settings:Local stdio (development)
For local development without a hosted server:Contributor mode: switch SDK source
Contributor mode: switch SDK source
Use published SDK by default:Use local SDK build during development:
Test your setup
Once configured, verify everything works:Ask Claude to list tools
“List the tools available in the Terminal49 MCP server.”Claude should respond with a list of 10 tools including
search_container, track_container, and list tools.Search for a test container
“Using the Terminal49 MCP server, search for container TCLU1234567 and summarize its status.”If configured correctly, Claude will call
search_container and return container details.Need test container numbers? See Test Numbers for containers you can use during development.
Troubleshooting
| Symptom | Likely Cause | How to Fix |
|---|---|---|
| ”Cannot connect to MCP server” | Wrong URL or config path | Confirm URL is https://mcp.terminal49.com/mcp and config file path matches your OS |
401 Unauthorized | Missing or invalid token | Create a new API token in dashboard; ensure Authorization: Bearer <token> header is set |
429 Too Many Requests | Rate limit exceeded | See Rate Limiting; use webhooks instead of polling |
| Tools list is empty | Config not loaded | Restart Claude/Cursor; check MCP inspector for errors |
| ”Tool not found” | Typo in tool name | Use exact names: search_container, get_container, etc. |
| Slow responses | Large data requests | Use include parameter to load only what you need |
Check MCP server logs
Check MCP server logs
If using the hosted server, check your Terminal49 dashboard for API logs.If running locally:
MCP capabilities
Tools
| Tool | Description | Parameters |
|---|---|---|
search_container | Find containers by number, BL, booking, or ref | query: string |
track_container | Start tracking a container | number, numberType?, scac?, refNumbers? |
get_container | Get container with optional includes | id: uuid, include?: ['shipment', 'pod_terminal', 'transport_events'] |
get_shipment_details | Get shipment and containers | id: uuid, include_containers?: boolean |
get_container_transport_events | Get event timeline | id: uuid |
get_supported_shipping_lines | List carriers with SCAC codes | search?: string |
get_container_route | Get multi-leg routing (paid feature) | id: uuid |
list_shipments | List shipments with filters + pagination | status?, port?, carrier?, updated_after?, include_containers?, page?, page_size? |
list_containers | List containers with filters + pagination | status?, port?, carrier?, updated_after?, include?, page?, page_size? |
list_tracking_requests | List tracking requests with filters | filters?, status?, request_type?, page?, page_size? |
Prompts
| Prompt | Description | Arguments |
|---|---|---|
track-shipment | Quick tracking workflow | container_number, carrier? |
check-demurrage | Demurrage risk analysis | container_id |
analyze-delays | Journey delay analysis | container_id |
Resources
| URI | Description |
|---|---|
terminal49://container/{id} | Container data as resource |
terminal49://docs/milestone-glossary | Event/milestone reference |
SDK usage
The TypeScript SDK provides the same capabilities as MCP tools, plus additional APIs not yet exposed via MCP.Response formats
| Format | Description |
|---|---|
raw | JSON:API response with data, attributes, relationships |
mapped | Simplified, camelCase objects with IDs resolved |
both | { raw, mapped } for debugging |
Raw vs Mapped example
Raw vs Mapped example
Raw format:Mapped format:
Deployment
Vercel (production)
Thevercel.json configures the MCP server:
Environment variables
| Variable | Required | Description |
|---|---|---|
T49_API_TOKEN | Yes | Terminal49 API token |
T49_API_BASE_URL | No | Override API URL (default: https://api.terminal49.com/v2) |
T49_MCP_ALLOWED_HOSTS | No | Comma-separated host allowlist for request Host validation |
T49_MCP_ALLOWED_ORIGINS | No | Comma-separated origin allowlist for request Origin validation |
Testing locally
Related guides
- MCP Overview – Quick start and tools reference
- Rate Limiting – API limits (same for MCP)
- Test Numbers – Containers for testing
- Webhooks – Real-time updates
- API Data Sources – Data freshness and coverage