Terminal49
概要
作者による説明(英語の原文)
Live ocean container and shipment tracking with ETAs, holds, fees, and last free days.
PopNx MCPの3つの柱
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
- 利用者の声iレビューはまだありませんレビューは今後のステップで、アカウント機能と一緒に始まります
- 私たちの基本チェックi4項目中4項目に合格公開情報からチェック。コードはまだスキャンしていません
- 利用状況i初期★ 2
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: クラウドで動く
- トランスポート: Streamable HTTP
- カテゴリ: 開発者ツール
インストール
使っているAIアプリを選んで、設定をコピーしてください。
インストールの前に
- 基本チェック:4項目中4項目に合格
- 作者のサーバーで動きます。あなたが頼んだ内容は、作者のサーバーを通ります。
- レジストリには、入力が必要なキーは載っていません。
必要なもの
- クラウドで動くインストール不要。インターネット経由でつながります
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルのClaudeで使えます:
- Settings → Connectors を開く
- Add custom connector を押す
- 下のアドレスを貼り付けて Add を押す
- サインインを求められたら、作者のサービスにサインインする
https://mcp.terminal49.comターミナルでこれを実行します
claude mcp add --transport http terminal49 https://mcp.terminal49.comまたは、設定を自分でコピーする
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"terminal49": {
"url": "https://mcp.terminal49.com"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
または、設定を自分でコピーする
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"terminal49": {
"type": "http",
"url": "https://mcp.terminal49.com"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ChatGPTがつなげるのは、インターネット上のサーバーだけです:
- ウェブ版のChatGPTを開き → Settings → Connectors (Apps)
- Create または Add を押す(プランによっては、先に Advanced で Developer mode をオンにする必要があります)
- 下のアドレスを貼り付け、名前を付けて保存する
- サインインを求められたら、作者のサービスにサインインする
https://mcp.terminal49.comメニューの名前は、プランや時期によって少し違うことがあります。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
使えるアプリ
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
インターネット経由でつなげるアプリ
ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
できること
このサーバーは、ツール一覧を表示する前にサインインを求めます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月11日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント Terminal49 で確認済みです
- ✓ 合格
今もメンテナンスされている
コードの最終更新:一昨日
- … 未チェック
ライセンスがある
このリポジトリはまだGitHubから読み取っていません
- ✓ 合格
エンドポイントが応答する
217ミリ秒で応答(HTTP 401)
- ✓ 合格
OAuthでサインイン
OAuthでのサインインに対応しているため、AIアプリがログイン画面へ案内してくれます
- … 未チェック
ツールの説明に隠れた指示がない
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
ユーザーレビュー
まだレビューはありません
開発者ツールのほかのサーバーとの比較i
- このカテゴリのほかの5742件のうち75%よりスターが多い
- このカテゴリのほかの5742件のうち67%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの5742件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Terminal49は安全ですか?
当てはまる基本チェック4項目のうち4項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
パソコンで動きますか、それともクラウドですか?
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は一昨日、最新バージョン(1.1.0)がレジストリに届いたのは11 日前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
代わりに使えるものは?
同じカテゴリには:REA, Netdata, Front-End Checklist
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Netdata
Real-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.
Front-End Checklist
Review frontend code and live pages against 386 quality-gated web development rules.
作者のREADME
READMEを開く
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Terminal49 MCP Server (TypeScript)
Vercel-native Model Context Protocol server for Terminal49's API, built with TypeScript and the official MCP SDK.
@terminal49/mcp is a private workspace in this repository. Connect a client to the hosted server at https://mcp.terminal49.com (Streamable HTTP). OAuth 2.1 needs no API key: the client discovers https://auth.terminal49.com and opens a browser sign-in. Clients that can't run that flow send Authorization: Token YOUR_API_KEY. Use the Token scheme for API keys. The Bearer scheme is used for OAuth access tokens. A local stdio process reads T49_API_TOKEN instead. Build steps are in Local Development.
🚀 Quick Deploy to Vercel
- Click "Deploy" above
- Add environment variable:
T49_API_TOKEN=your_token_here - Deploy!
- Your MCP server will be available at:
https://your-deployment.vercel.app/api/mcp
📦 What's Included
🛠️ Tools (30 Available)
| Tool | Description | Key Features |
|---|---|---|
| `search_container` | Search by container#, BL, booking, or reference | Fast fuzzy search |
| `track_container` | Create tracking request and get container data | SCAC autocomplete ✨ |
| `identify_tracking_number` | Predict a number's type and carrier and check whether it is already tracked | Creates nothing |
| `get_container` | Get detailed container info with flexible data loading | Optional custom fields and party roles |
| `get_shipment_details` | Get shipment routing, BOL, containers, ports | Optional custom fields and party roles |
| `get_container_transport_events` | Get full event timeline for a container | Milestone history |
| `get_supported_shipping_lines` | List 40+ major carriers with SCAC codes | Filterable by name/code |
| `get_container_route` | Get ports in route order with ETAs and the current vessel | Premium feature |
| `get_location` | Get a port, terminal, or metro area | FIRMS code, address, time zone |
| `get_vessel` | Get a vessel's position and, optionally, its projected track to a port | Projection is a premium feature |
| `list_shipments` | List shipments with filters and pagination | Fleet-level visibility |
| `list_containers` | List containers with filters and pagination | Returns ResourceLinks ✨ |
| `summarize_containers` | Count containers grouped by terminal, status, carrier, port, hold, or date | Same filters as list_containers |
| `list_parties` | Find parties by company name, or read one by ID | Feeds advanced_filters.customer_id and advanced_filters.parties |
| `list_custom_field_definitions` | List the account's custom fields, their types, and enum options | Needs a signed-in user |
| `list_tracking_requests` | List tracking requests and statuses | Audit and monitoring |
| `get_tracking_request` | Get one tracking request's status, failure reason, and shipment | Follow-up after tracking |
| `list_documents` | Find documents by file name, reference, or type | Never returns extracted data or file links |
| `get_document` | Get one document, with opt-in extracted data, source email, and download link | Untrusted content is labeled |
| `search_docs` | Search the public Terminal49 documentation | Returns links to cite |
| `whoami` | Identify the credential, its account, the features it can use, and the session's toolsets | Explains empty or unauthorized results |
| `set_party_role` | Attach, replace, or detach a party (such as the drayage carrier) on containers or shipments | Destructive write, only on request |
| `set_custom_field` | Set or clear one of the account's custom fields on containers or shipments | Destructive write, only on request |
| `search_importers` | Find US importers by name, by what they import, or both | Trade intelligence, per account |
| `get_importer_profile` | One importer's totals, monthly series, ports, origins, carriers, and products | Trade intelligence, per account |
| `search_commodities` | Turn a product description or HS prefix into four-digit HS codes | Trade intelligence, per account |
| `rank_importers` | Rank importers by containers for a product, US port, or origin country | Trade intelligence, per account |
| `get_trade_trends` | Time series of containers, TEUs, or estimated value | Trade intelligence, per account |
| `get_trade_breakdown` | Nested totals over one to three dimensions | Trade intelligence, per account |
| `get_trade_data_coverage` | Where trade data starts, the latest and last full month | Trade intelligence, per account |
🎯 Prompts (3 Workflows)
| Prompt | Description | Use Case |
|---|---|---|
| `track-shipment` | Track container with optional carrier | Quick tracking start (SCAC autocomplete ✨) |
| `check-demurrage` | Analyze demurrage/detention risk | LFD calculations |
| `analyze-delays` | Identify delays and root causes | Timeline analysis |
The track-shipment prompt's carrier argument supports MCP completions (completion/complete): suggestions are sourced live from get_supported_shipping_lines, filtered by what the user has typed, and returned as SCAC codes.
📚 Resources
- ✅ `terminal49://docs/milestone-glossary` - Complete milestone reference guide
- ✅ `terminal49://docs/mcp-query-guidance` - Internal tool-routing hints
- ✅ `terminal49://container/{id}` - Dynamic container data access (also the target of
list_containersResourceLinks)
🧭 Server Instructions
The server advertises MCP instructions (a server-level operating guide) at initialize time: it explains the ocean container/shipment tracking domain, key vocabulary (SCAC, BOL/booking, POL/POD, LFD, demurrage, holds), the read tools vs the single write tool (track_container), and the canonical tool-chaining order.
🔗 ResourceLinks (context reduction)
list_containers returns MCP resource_link content blocks — one per container row — that point at the registered terminal49://container/{id} resource. Clients can render the compact list and resolve full per-container detail on demand via resources/read, instead of paying for every container's full payload up front.
🙈 Content Audience Annotations
Tool results separate the human-readable answer from agent-steering metadata. The steering block (presentation guidance + suggested follow-up tools, derived from the _response_contract) is tagged with annotations: { audience: ['assistant'] } so spec-aware clients can hide it from end users, while the answer block stays user-visible.
✨ Current Features (v1.0.0 - Phase 1 & 2.1 Complete)
✅ Modern McpServer API
- High-level
registerTool(),registerPrompt(),registerResource()patterns - Type-safe Zod schemas for all tool inputs
- Cleaner, maintainable code (71% code reduction in HTTP handler)
- MCP SDK: @modelcontextprotocol/sdk ^1.29.0
- Terminal49 SDK: @terminal49/sdk 0.6.0
✅ Production Transport Support
- HTTP (streamable):
POST /api/mcp- stateless, JSON responses - SSE was removed from the hosted deployment path in favor of Streamable HTTP transport.
✅ Sentry MCP Monitoring
- Optional instrumentation with
@sentry/node^10.55.0 - Captures MCP connections, tool calls, resources, prompts, performance spans, and errors when
SENTRY_DSNis set - Tool input/output recording is disabled by default; enable it only after reviewing data handling requirements
✅ 3 Workflow Prompts
track-shipment: Quick container tracking with optional carriercheck-demurrage: Demurrage/detention risk analysisanalyze-delays: Journey delay identification and root cause
✅ MCP Spec Adherence
- Server instructions: server-level operating guide advertised at initialize
- SCAC code completions:
completion/completeon thetrack-shipmentprompt'scarrierarg, sourced fromget_supported_shipping_lines - ResourceLinks:
list_containersrows link to theterminal49://container/{id}resource - Content audience annotations: steering metadata tagged
audience: ['assistant']
🚧 Deferred (future RFC — needs a stateful transport)
- Resource subscriptions, progress notifications, server logging, elicitation, and sampling all require a stateful (non-stateless-HTTP) transport and are out of scope here.
- Shipment ResourceLinks await a dedicated
terminal49://shipment/{id}resource template (only the container template is currently registered).
🏗️ Architecture
/api/mcp.ts # Vercel serverless function (HTTP)
/packages/mcp/ ├── src/ │ ├── server.ts # MCP server (stdio) │ ├── index.ts # Stdio entry point │ ├── tools/ # MCP tools │ └── resources/ # MCP resources └── package.json
The MCP server depends on the workspace package @terminal49/sdk. Build that package before you build packages/mcp.
Transport:
- HTTP: Vercel serverless function at
/api/mcp(for hosted use) - stdio: Local process for Claude Desktop (
node packages/mcp/dist/index.jsafter the build in Local Development)
Store submission
The public connector URL is https://mcp.terminal49.com. Store assets and submission metadata are checked in at the repository root:
chatgpt-app-submission.json— locked ChatGPT listing copy and review casesclaude-connector-submission.json— values to enter in Claude's submission portalserver.json— official MCP Registry metadata used for Copilot discoverypublic/store-icons/terminal49-{light,dark}.png— 512×512 brand icons
Cline and other clients that read a marketplace install guide from the server subfolder use packages/mcp/llms-install.md.
Verify the domain for ChatGPT
OpenAI generates a unique domain-verification token during submission. Add that exact value to the existing MCP Vercel project:
vercel env add OPENAI_APPS_CHALLENGE
After the project redeploys, verify that the well-known endpoint returns only the token you pasted:
curl --fail --silent \
https://mcp.terminal49.com/.well-known/openai-apps-challenge
Do not commit the token. The endpoint returns an empty 404 response while OPENAI_APPS_CHALLENGE is unset. Submit the connector and the values in chatgpt-app-submission.json through the OpenAI plugin submission flow.
Submit to Claude
Use the Claude Connectors Directory portal and enter the values in claude-connector-submission.json. Upload the light icon from public/store-icons/terminal49-light.png; the dark variant is available for clients that support theme-specific assets.
Publish for Copilot discovery
GitHub's Copilot registry is a curated downstream discovery surface. The root server.json is the official MCP Registry entry (io.github.Terminal49/terminal49).
.github/workflows/publish-mcp.yml publishes that file to https://registry.modelcontextprotocol.io. It runs when a push to main changes server.json, and a maintainer can start it with workflow_dispatch on main. The job authenticates with GitHub OIDC (mcp-publisher login github-oidc) and then runs mcp-publisher publish. The io.github.Terminal49 namespace is authorized for OIDC from this organization repository, so the workflow needs no registry secret.
Bump version in server.json for each metadata change. The registry keeps published versions, and a second publish of the same version is rejected.
🛠️ Local Development
Prerequisites
- Node.js 24.22.1 or a newer Node 24 release (`.tool-versi