Mcp Wsdot について
Mcp Wsdotは、MCPクライアントをWashington State Department of Transportation APIに接続します。ツールを通じて、現在時刻やフェリーの航路・運航時刻を取得できます。
主な機能
- 01太平洋時間の現在時刻を取得
- 02利用可能なフェリー航路とIDを一覧表示
- 03航路別に当日の便を取得
活用シーン
- 01フェリー航路とIDを調べる
- 02航路別の当日の運航時刻を確認
- 03次に出発するフェリーについて尋ねる
MCP 対応
Mcp Wsdotは、時刻とフェリー運航時刻のツールをMCPクライアントに提供するMCPサーバーです。streamable HTTP、stdio、旧式のSSEトランスポートに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Washington State Department of Transportation API と連携するための Model Context Protocol サーバー
開発
前提条件
- 最適な開発環境を利用するには、MCP Inspector を起動できるように bun をインストールしてください(
make mcpを使用)。
ビルド
- アプリケーションをローカルで実行するには、
docker composeを使用してください。- Docker Compose の手順:
docker compose up -d --build && docker compose logs -f -t
- Docker Compose の手順:
docker-compose で実行し、Grafana の http://localhost:3000 でメトリクス/トレースを確認してください。
トランスポート
トランスポートは TRANSPORT 環境変数で選択します。
TRANSPORT | 説明 |
|---|---|
streamablehttp | デフォルト。 現在の MCP HTTP トランスポートです。サーバーをリモートでホストする場合(例:Kubernetes)はこれを使用してください。 |
stdio | バイナリを直接起動するローカルクライアント(Claude Desktop、MCP Inspector)向けです。 |
sse | レガシーな HTTP+SSE トランスポートです。MCP 仕様では streamablehttp が推奨されており、非推奨になっています。古いクライアント向けにのみ残されています。 |
streamablehttp と sse では、次の追加設定を使用できます。
| 変数 | デフォルト | 説明 |
|---|---|---|
HTTP_PORT | 8080 | リッスンするポートです。(後方互換性のため、HTTP_PORT が未設定の場合は SSE_PORT も引き続き使用されます。) |
HTTP_PATH | /mcp | MCP エンドポイントを提供するパスです(streamablehttp のみ)。 |
MCP_AUTH_TOKEN | (未設定) | 設定すると、すべての MCP リクエストで Authorization: Bearer <token> を送信する必要があります。未設定の場合、認証は無効になります。 |
MCP_STATELESS | false | セッション追跡を無効にし、スティッキーセッションなしでリクエストをレプリカ間で負荷分散できるようにします。 |
MCP_HEARTBEAT_INTERVAL | 30s | アイドル状態のストリームを維持するための間隔です(プロキシ/Ingress 経由での接続維持に役立ちます)。ゼロにすると無効になります。 |
SHUTDOWN_TIMEOUT | 15s | SIGTERM の受信時に、処理中のリクエストを完了させるための猶予期間です。 |
HTTP トランスポートでは、Kubernetes のプローブ用に、認証不要のヘルスエンドポイントも
2 つ公開されます。GET /healthz(ライブネス)と GET /readyz(レディネス)です。
リモートでのホスティング(Kubernetes)
リモートクライアントが利用できるように、このサーバーをクラスター内でホストするには、
TRANSPORT=streamablehttp(デフォルト)とベアラートークンを指定してコンテナを実行します。
docker run -p 8080:8080 \
-e WSDOT_API_KEY=<your-key> \
-e TRANSPORT=streamablehttp \
-e MCP_AUTH_TOKEN=<a-long-random-token> \
ghcr.io/michaelpeterswa/mcp-wsdot:latest
クライアントは streamable HTTP トランスポートを介して http://<host>:8080/mcp に接続し、
Authorization: Bearer ヘッダーでトークンを送信します。例として、OpenClaw のリモート MCP サーバー設定を示します。
{
"mcpServers": {
"wsdot": {
"transport": "streamable-http",
"url": "https://wsdot.example.com/mcp",
"headers": { "Authorization": "Bearer <a-long-random-token>" }
}
}
}
デプロイに関するガイダンス(プローブのパス、ポート、環境変数の全リファレンス)については、上記の表を参照してください。コンテナは :8080(MCP)と :8081(METRICS_ENABLED=true の場合の Prometheus メトリクス)でリッスンし、非 root ユーザーとして実行され、SIGTERM 時には処理を正常に終了します。
現在のツール
| ツール | 説明 |
|---|---|
get_current_time | PDT/PST タイムゾーンの現在時刻を取得します |
get_route_schedules | 利用可能なフェリールートの名前とルート ID を取得します |
get_schedules_today_by_route_id | ルート ID を指定して、そのルートの運航時刻を取得します |
MacOS バイナリに関する注意事項
MacOS でリリースページからバイナリをダウンロードした場合、隔離に関するセキュリティ警告を解除する必要があります。解除するには、次のコマンドを実行してください。
xattr -rd com.apple.quarantine <path-to-binary>
質問の例
シアトルからブレマートンへのフェリールートの次の3便は何時ですか?また、今夜戻れる最終便は何時ですか?
Claude Desktop 3.7 Sonnet への質問
シアトルからブレマートンへの次の3便と、今夜の最終の帰りの便をお調べします。現在のフェリーの運航スケジュールを検索します。
ルート情報が分かったので、シアトルからブレマートンへのフェリールートの具体的な運航スケジュールを確認します。
運航スケジュールの情報に基づくと、ご希望の情報は次のとおりです。
シアトル発、ブレマートン行きの次の3便:
- 本日(2025年4月20日)午後12時20分 - 船舶:Walla Walla
- 本日(2025年4月20日)午後2時50分 - 船舶:Walla Walla
- 本日(2025年4月20日)午後5時30分 - 船舶:Walla Walla
今夜のブレマートン発、シアトル行きの最終便:
今夜のブレマートン発、シアトル行きの最終便は午後11時40分(23:40)です - 船舶:Walla Walla
すべての便は、車いすで利用可能な船舶 Walla Walla で運航されます。このスケジュールは、2025年3月23日から6月14日までの春季2025年運航サービスの一部です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。