usitc-tariffs-mcp-server について
usitc-tariffs-mcp-serverは、USITC公表の米国関税率表を貿易調査や品目分類のワークフロー向けに提供します。品目検索、階層確認、基本税率照会、部分的なChapter 99の根拠調査を行い、出典と不確実性も保持します。
主な機能
- 01品目説明とコード接頭辞の検索
- 02見出しの親子階層の確認
- 03公表済み基本税率欄の照会
- 04部分的なChapter 99根拠の調査
- 05関税識別子と参照データの解読
活用シーン
- 01品目説明から関税項目を検索
- 02分類階層に沿ったコードの確認
- 03正確なコードの公表基本税率を確認
- 04追加関税の可能性を示す根拠を確認
MCP 対応
HTS検索、階層閲覧、税率照会、参照情報の解読など6種類の関税調査ツールをMCPクライアントに提供します。stdioとStreamable HTTPに対応します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://usitc-tariffs.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-usitc-tariffs https://usitc-tariffs.caseyjhand.com/mcp{"mcpServers":{"cyanheads-usitc-tariffs":{"type":"http","url":"https://usitc-tariffs.caseyjhand.com/mcp"}}}Cursor で開く{"servers":{"cyanheads-usitc-tariffs":{"type":"http","url":"https://usitc-tariffs.caseyjhand.com/mcp"}}}VS Code で開く{"mcpServers":{"cyanheads-usitc-tariffs":{"type":"http","url":"https://usitc-tariffs.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-usitc-tariffs":{"serverUrl":"https://usitc-tariffs.caseyjhand.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
6| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | 要求する項目数は正の安全な整数である必要があります。effectiveLimit には最大 100 までに制限された値が示され、ページはバイト数によって制限される場合があります。続行時も同じ要求数を指定してください。 |
| query | string | はい | 空でない商品テキストまたは HTS コード接頭辞。先頭のゼロを保持してください。 |
| cursor | string | いいえ | 同じ引数でこのツールから返された不透明な nextCursor です。 |
詳細
@cyanheads/usitc-tariffs-mcp-server
MCP 経由で USITC 関税率表を検索し、見出しツリーを確認して、公表されている関税率を調べます。STDIO または Streamable HTTP に対応しています。
概要
USITC の米国調和関税率表です。品目の説明を検索し、分類の系統を確認し、公表されている基本関税率の欄を参照して、第 99 章の一部の情報を調査できます。stdio プロセスまたはローカルの Streamable HTTP サーバーとして動作し、上流サービスのアカウントや API キーは必要ありません。
ツール
| ツール | 説明 |
|---|---|
usitc_search_hts | 品目の説明やコードの接頭辞を検索し、公表されている一致項目をフラット形式で返します |
usitc_get_heading | 分類の系統、子孫項目、継承された税率の出典を確認します |
usitc_browse_chapter | 税率行と統計行の件数とともに、章の見出しを閲覧します |
usitc_lookup_duty_rate | 正確な税率行または統計行について、公表されている基本関税率のすべての欄を取得します |
usitc_check_additional_duties | 第 99 章の候補、根拠、裏付けとなる全文を調査します |
usitc_list_reference | 識別子、プログラム記号、章、単位、版のメタデータを解読します |
機能リファレンス
usitc_search_hts ツール
- 必須の
query:品目のテキストまたはコードの接頭辞です。limitの既定値は 25 で、1 ページあたり最大 100 項目です。ページを続けるには、同じ引数でpage.nextCursorを使用してください。 context: "flat_search_matches"とratesResolved: falseの行を返します。系統の確認には見出し検索を、解決済みの基本関税率の取得には関税率検索を使用してください。一致項目がない場合も正常な空の結果です。
usitc_get_heading ツール
- 必須の
code:4、6、または8桁。区切りなし、または一般的なドット区切りの形式で指定します。返されたnodeIdは任意で、正確なノードを選択します。limitの既定値は25で、1ページあたり最大100件です。 parentId、実行可能なparentFollowUp、およびpublished、inherited、not_publishedのいずれかの状態を持つresolvedRatesを含む、ソース順のフラットなnodesを返します。番号のない上位行も階層の一部です。分類が見つからない場合はfound: falseを返します。
usitc_browse_chapter ツール
- 必須の
chapter:01~99。1桁または2桁を指定できます。limitの既定値は25で、1ページあたり最大100件です。 - 公開されている各サブツリーの完全な
rateLineCountとstatisticalLineCountを返します。第98章と第99章では実際の番号付き項目を保持します。検証済みの対応表がない場合、サブチャプターによるグループ化は行われません。また、予約章では空のコレクションが返される場合があります。
usitc_lookup_duty_rate ツール
- 必須の
code:正確な8桁または10桁のコード。ISO 3166-1 alpha-2 のcountryCodeは任意です。識別子では先頭のゼロが保持され、一般的なドット区切りの形式も使用できます。 - 料率の出典情報を含む General、Special、Column 2 の各セル、または
found: falseを返します。空白の統計セルは、対応する8桁の法的祖先からのみ継承されます。空白はゼロやFreeを意味しません。 specialProgramsは一致しないテキストとparseCoverageを保持します。countryAssessmentでは、加盟状況をunknown、適格性と列の選択をnot_determinedのまま保持します。国の入力によって料率が選択されたり、特恵適用資格が確立されたりすることはありません。
usitc_check_additional_duties ツール
- 必須の
code:第99章を除く、基本貨物の正確な8桁または10桁のコード。countryCodeは任意です。viewはcandidates(既定値)、evidence(返されたcandidateCodeが必要)、またはunmappedを指定します。limitの既定値は25で、1ページあたり最大100件です。 coverage.statusは常にpartialです。supportedGrammar、limitations、および未解決の根拠を確認してください。候補のlegalStatusはnot_determinedです。不明な根拠や別の国に関する根拠も表示されます。候補リストが空でも、追加関税が適用されないことの確認にはなりません。- 返された
nextCallと根拠のfollowUpオブジェクトに従ってください。条文については、元のコードと国のセレクターとともにnoteIdと任意のnoteCursorを指定し、view、candidateCode、コレクションのcursorは省略します。すべてのページのnotesPage.fragmentsを連結し、適用される文脈を確認してください。
usitc_list_reference ツール
- 必須の
topic:identifiers、spi、chapters、units、またはreleases。limitの既定値は25で、1ページあたり最大100件です。 - プログラムと単位のデコーダーには、検証に使用したエディションと引用情報が含まれます。SPI の国別加盟状況は不明のままです。リリースレコードは公開済みエディションを示しますが、過去の関税率の検索には対応しません。
特長
@cyanheads/mcp-ts-core を基盤としており、stdio および Streamable HTTP トランスポート、プラグイン可能な認証(none / jwt / oauth)、切り替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレーシングに対応した構造化ログを備えています。
USITC 固有の特長:
- HTS アプリケーションの文書化されていないインターフェースに、キーなしでアクセスできます。リクエストは間隔を空けて送信し、再試行回数にも上限を設けています。
- 公表されている説明、税率文字列、単位、疎なフィールド、脚注を、法的な由来とともに保持します。
- 版を固定した特別プログラム指標のデコードと、第99類に関する部分的な根拠調査に対応しています。
- 最終的な分類、特恵適用資格、関税の積み上げ、合算関税の計算、現時点での執行可能性の判断は行いません。法的な適用可能性は、法的注記および最新の CBP/Federal Register のガイダンスに照らして確認してください。
エージェントに適した出力:
- 出所情報 — すべての結果に
release、source、noticesが含まれます。版のチェックにより、検出された異なる版の混在を防ぎますが、公開が原子的に行われたことや現行法であることを証明するものではありません。 - 完全な継続取得 — 各ページには
total、returned、effectiveLimit、nextCursorが含まれます。完全な応答の予算は24,000バイトで、ページサイズを縮小する場合はbudgetLimited: trueが設定されます。カーソルは元の引数とソースのスナップショットに紐付けられ、有効期限は15分以内です。追い出しや再起動によって、それより早く期限切れになることがあります。 - 不確実性の明示 —
found、税率の状態、部分的なカバレッジ、型付きエラー理由により、推測せずに処理を分岐できます。cursor_expiredの場合はカーソルを使わずに元の呼び出しを再実行してください。invalid_cursorまたはinvalid_selectorの場合はセレクターを修正してください。 - 応答サーフェスの一致 —
content[]とstructuredContentには、選択された同じデータが含まれます。公表されたソーステキストは、指示ではなくデータとして扱われます。
はじめに
以下を MCP クライアントの設定ファイルに追加してください。
{
"mcpServers": {
"usitc-tariffs-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/usitc-tariffs-mcp-server@latest"],
"env": { "MCP_TRANSPORT_TYPE": "stdio", "MCP_LOG_LEVEL": "info" }
}
}
}
または、npx を使用する場合(Bun は不要です):
{
"mcpServers": {
"usitc-tariffs-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/usitc-tariffs-mcp-server@latest"],
"env": { "MCP_TRANSPORT_TYPE": "stdio", "MCP_LOG_LEVEL": "info" }
}
}
}
または、Docker を使用する場合:
{
"mcpServers": {
"usitc-tariffs-mcp-server": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/usitc-tariffs-mcp-server:latest"]
}
}
}
Streamable HTTP を使用する場合は、トランスポートを設定して、ビルド済みサーバーを起動します。
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
前提条件
- Bun v1.4.0 以上(または、公開済みパッケージを使用する場合は Node.js v24 以降)。
hts.usitc.govへのネットワークアクセス。
インストール
git clone https://github.com/cyanheads/usitc-tariffs-mcp-server.git
cd usitc-tariffs-mcp-server
bun install
cp .env.example .env
bun run rebuild
設定
| 変数 | 説明 | デフォルト |
|---|---|---|
MCP_TRANSPORT_TYPE | トランスポート:stdio または http。 | stdio |
MCP_HTTP_HOST | HTTP バインドアドレス。 | 127.0.0.1 |
MCP_HTTP_PORT | HTTP サーバーポート。 | 3010 |
MCP_HTTP_ENDPOINT_PATH | MCP エンドポイントのパス。 | /mcp |
MCP_SESSION_MODE | HTTP セッションモード:stateless、stateful、または auto。 | stateless |
MCP_AUTH_MODE | 認証:none、jwt、または oauth。 | none |
MCP_LOG_LEVEL | ログレベル(debug、info、warning、error など)。 | info |
LOGS_DIR | ログファイルのディレクトリ(Node.js のみ)。 | <app-root>/logs |
STORAGE_PROVIDER_TYPE | フレームワークのストレージバックエンド。ドメインのスナップショットはプロセス内に保持されます。 | in-memory |
OTEL_ENABLED | OpenTelemetry を有効にします。 | false |
サーバー固有の環境変数は不要です。フレームワークの一般的なオーバーライドについては、.env.example を参照してください。
サーバーの実行
ローカル開発
bun run rebuild
bun run start:http
# or
bun run start:stdio
チェックとテストを実行します。
bun run devcheck
bun run test
Docker
docker run --rm -p 3010:3010 ghcr.io/cyanheads/usitc-tariffs-mcp-server:latest
このイメージはポート3010で HTTP を提供します。一般公開する前に、認証を設定してください。
プロジェクト構成
| ディレクトリ | 用途 |
|---|---|
src/mcp-server/tools/ | 6 つの定義、共有出力スキーマ、ロスレスなレスポンス形式 |
src/services/usitc/ | 固定オリジンの HTTP クライアント、エディション確認、リクエスト間隔の調整、派生スナップショット |
src/services/tariffs/ | 階層構造、基本税率の解決、引数に基づくページネーション |
src/services/reference/ | 識別子の検証、エディションに固定された参照デコーダー |
src/services/chapter99/ | 部分的な根拠のインデックス作成、セレクター、抜粋フラグメント |
tests/ | src/ に対応するテストと公開ソースのフィクスチャ |
docs/ | 設計コントラクトとディレクトリツリー |
開発ガイド
開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は次のとおりです。
- ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジックで
try/catchは使用しません。 - ロギングには
ctx.logを使用し、上流の処理にはctx.signalを渡します。 src/index.tsのcreateApp()配列にツールを登録します。- 生のレスポンスを検証し、欠損値を保持して、両方の出力サーフェスを同一に保ちます。
- 根拠の文法を拡張する場合は、部分的なカバレッジと国ごとの適用条件に関する制限を維持します。
コントリビューション
イシューを歓迎します。提出前にチェックとテストを実行してください。
bun run devcheck
bun run test
ライセンス
このプロジェクトは Apache 2.0 License の下でライセンスされています。詳細については、LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。