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.22.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 |
| SSE (stateful) | GET /sse?sessionId=<id> then POST /sse?sessionId=<id> | Long-running sessions, streaming |
Authorization: Bearer <T49_API_TOKEN> header. 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: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 7 tools including
search_container, track_container, etc.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 (7)
| Tool | Description | Parameters |
|---|---|---|
search_container | Find containers by number, BL, booking, or ref | query: string |
track_container | Start tracking a container | containerNumber, scac?, bookingNumber?, 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 |
Prompts (3)
| 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 (2)
| 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) |
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