Claude Media
ClaudeとTravis CIを連携する — 非公式MCPサーバーmcp-travisの使い方

ClaudeとTravis CIを連携する — 非公式MCPサーバーmcp-travisの使い方

Travis CIに公式MCPサーバーはありません。API v3を使う非公式サーバーmcp-travisで、ビルドのトリガーからログ比較・最適化提案までClaude Codeから頼む方法をまとめます。

Travis CIには、AnthropicやTravis CI GmbHが提供する公式のMCPサーバーが存在しません。ここで扱うmcp-travisは個人開発者が公開している非公式プロジェクトで、Travis CI API v3をMCPのツールとして包み、Claude Codeから自然文でビルドを操作できるようにします。トリガー・再実行・ログ取得といった基本操作に加えて、2つのビルドを突き合わせて差分を出す機能や、ログを解析してキャッシュ設定を提案する機能まで実装されている点が、単純なAPIラッパーとは違います。

接続先はTravis CI API v3の.com

Travis CIのAPIにはv2とv3があります。公式のAPIリファレンスは「新しく使うならv3」と案内していて、v2のページには「2018年中に廃止予定」という記述が今も残っています。mcp-travisはリクエストごとにTravis-API-Version: 3ヘッダーを付け、既定のエンドポイントをhttps://api.travis-ci.comにしています。

古い情報を検索するとapi.travis-ci.orgというホスト名が出てきます。travis-ci.orgについて、公式の移行ガイドは「2021年6月からtravis-ci.orgは無効化され、サポートされない」と書いています。環境変数に.orgを入れても動かないため、TRAVIS_API_URLは.comのままにします。

10個のツールのうち、ビルドを動かすのは3つ

サーバーが公開しているツールは10個です。名前を並べると多く見えますが、Travis CI上の状態を変えるのは3つだけで、残りの7つは読み取りです。

くらべる

ツールの2グループ

状態を変えない

読み取りだけ(7つ)

travis_getBuildJobs(ジョブのIDと状態)、travis_getBuildLogs(全ジョブのログを結合)、travis_getOwnerStats(ユーザー・組織の統計)、travis_getServiceStatus(Travis CIの稼働状況)、travis_compareBuilds(2ビルドの差分)、travis_getBuildInsights(成功率などの集計)、travis_getOptimizationRecommendations(キャッシュ・並列化の提案)

状態を変える

ビルドを動かす(3つ)

travis_triggerBuild(リポジトリとブランチを指定して新規ビルド)、travis_restartBuild(ビルドIDで再実行)、travis_cancelBuild(実行中のビルドを停止)

ツールとは別に、READMEには@で参照できるリソースが3つ載っています。travis:recent-builds?repo=owner/name&limit=20は直近のビルド一覧(limitを省くと20件)、travis:build-log?jobId=...は特定ジョブのログ、travis:env-vars?repo=owner/nameはリポジトリの環境変数の一覧です。ただし、ソースの読み取り処理はURLのホスト名部分でリソースを振り分けています。//を含まないこの書式では、Unknown resourceのエラーになる場合があります。確実に動くのはツールのほうなので、この記事の手順はツールで組みます。env-varsは設定値に触れるリソースなので、CIの秘密情報を会話に引き込みたくない場面では使わない選択肢があります。

travis_triggerBuildには、必須のrepoとbranchのほかに、任意のmessage(既定はTriggered via MCP)とconfigがあります。configはオブジェクト形式の.travis.ymlの上書きで、「このビルドだけNodeのバージョンを変える」といった依頼に使えます。リクエストは、Travis CI公式のビルド起動APIと同じ/repo/{slug}/requestsに送られます。

Claude Codeに接続する

動かすにはNode.js 18以上が必要です(package.jsonのenginesは>=18.18)。設定する環境変数は3つあります。

変数内容
TRAVIS_API_URL内容接続先のAPIエンドポイント(https://api.travis-ci.com)
TRAVIS_API_TOKEN内容Travis CIのAPIトークン
TRAVIS_USER_AGENT内容APIリクエストに載せるUser-Agent文字列

まずリポジトリを取得してビルドします。

git clone https://github.com/Montana/mcp-travis.git
cd mcp-travis
npm install
npm run build

次にAPIトークンを用意します。Travis CIのドキュメントには、トークンはTravis CIの設定ページから取得するか、コマンドラインクライアントで取得すると書かれています。このトークンはビルドのトリガーや停止まで操作できる強い権限を持つため、他のシークレットと同じ扱いで保管してください。

トークンを取得したら、Claude CodeにMCPサーバーとして登録します。標準入出力(stdio)で動くローカルサーバーなので、ビルド済みのdist/index.jsを直接起動する形になります。

claude mcp add --transport stdio travis \
  --env TRAVIS_API_URL=https://api.travis-ci.com \
  --env TRAVIS_API_TOKEN=your_travis_token_here \
  --env TRAVIS_USER_AGENT=mcp-travis/0.1 \
  -- node /path/to/mcp-travis/dist/index.js

/path/to/mcp-travisはビルドしたリポジトリの絶対パスに置き換えます。サーバー自身のコマンドは--の後ろに置き、--envは名前の後ろ・--の前に並べます。リポジトリ付属のsetup.shは依存関係のインストールまで自動化しますが、書き込み先はClaude Desktop向けのclaude_desktop_config.jsonに固定です。Claude Code CLIの設定は書き換えないので、CLIでは上のコマンドで直接登録し、登録後は/mcpでサーバーの接続状態を見ます。

トークンはどこに書き込まれるか

v2.1.289のclaude mcp add --helpでは、--scopeの既定はlocalと表示されます。-s projectを付けるとどうなるかを、空の一時ディレクトリで試すと、.mcp.jsonが次の内容で作られました。

{
  "mcpServers": {
    "travis": {
      "type": "stdio",
      "command": "node",
      "args": ["/path/to/mcp-travis/dist/index.js"],
      "env": {
        "TRAVIS_API_URL": "https://api.travis-ci.com",
        "TRAVIS_API_TOKEN": "your_travis_token_here",
        "TRAVIS_USER_AGENT": "mcp-travis/0.1"
      }
    }
  }
}

トークンが平文のまま.mcp.jsonに入ります。チームのリポジトリにコミットされるファイルなので、共有する場合は値を${TRAVIS_API_TOKEN}の形に書き換えます。Claude Codeの公式ドキュメントでは、.mcp.jsonのcommand・args・envなどで${VAR}と${VAR:-default}を展開できます。

くらべる

スコープごとのトークンの置き場所

自分だけ

local(既定)

~/.claude.jsonに、そのプロジェクト用のエントリとして保存されます。個人のトークンで試すだけなら、このままで足ります。

チームで共有

project(-s project)

リポジトリ直下の.mcp.jsonに書かれ、バージョン管理に入るため、トークンは環境変数の参照にしておきます。

TRAVIS_API_TOKENが空のままだと、サーバーは起動直後に標準エラーへMissing TRAVIS_API_TOKEN in environment.と出して終了します(ソースの先頭でprocess.exit(1))。/mcpで接続状態が正常にならないときは、まず環境変数が渡っているかを疑います。

ビルドが落ちた日の調べ方

「CIが赤い」という報告を受けたとき、どの順にツールを呼ぶかで読むログの量が変わります。

手順

失敗したビルドを絞り込む流れ

  1. 1

    Travis CI自体が落ちていないか見る

    「Travis CIは今落ちている?」と頼むとtravis_getServiceStatusが動きます。障害中なら、自分のコードを調べる前に待つ判断ができます。

  2. 2

    ジョブごとの状態を取る

    travis_getBuildJobsにビルドIDを渡し、各ジョブのIDと状態(passed / failed)、言語やNodeのバージョンといったconfigを見ます。

  3. 3

    失敗したビルドのログを読む

    travis_getBuildLogsにビルドIDを渡すと、全ジョブのログが1回で結合されて返ります。ジョブ単位で取り出すツールは無いため、マトリクスビルドで一部の言語バージョンだけ落ちているときは、ステップ2で特定したジョブの部分に絞って読みます。

  4. 4

    直前に通ったビルドと比べる

    原因の見当が付かなければtravis_compareBuildsに2つのビルドIDを渡し、コミットとジョブの合否の差を並べます。

ビルド276783990のログを全部見せて
travis-ci/travis-webのdeploy_2026.09.10ブランチでビルドをトリガーして

ビルドIDとジョブIDは別の採番です。travis_getBuildLogsとtravis_getBuildJobsに渡すのはビルドIDで、ジョブIDはtravis_getBuildJobsの出力で各ジョブを見分けるために使います。

ビルドを比較して原因を絞り込む

単なるログ取得より価値が出るのはtravis_compareBuildsです。2つのビルドIDを渡すと、状態・所要時間・コミット差分・ジョブ単位の合否をまとめて返します。

ビルド276783990と276783991を比較して、何が変わって落ちたのか教えて

「昨日まで通っていたのに今日から落ちる」という相談では、コミットの差分と、どのジョブが落ちたかが同じ出力に並びます。マトリクスのうちNode 20だけが落ちているような場合に、原因の当たりを付けるまでが短くなります。

travis_getBuildInsightsは広い範囲を見る機能です。直近50件(既定値、最大100件)のビルドを集計し、合格率の推移やブランチ別の安定度を出します。「最近このリポジトリのビルドが不安定な気がする」という感覚を、トレンドとして裏付けたいときに向いています。

travis_getOptimizationRecommendationsはビルドログを解析し、パッケージインストールやテスト実行のパターンからキャッシュ化・並列化を提案します。提案には.travis.ymlに足す具体的な設定例も含まれます。

cache:
  directories:
    - node_modules
    - ~/.npm

提案はログのパターンマッチングによるヒューリスティックで、Travis CI側が保証する最適化ではありません。効果は自分の.travis.ymlに当てはめて、ビルド時間の前後で測ります。

組織の状況を一覧する

travis_getOwnerStatsは、ユーザーや組織単位の状況を俯瞰するツールです。

railsオーガニゼーションのTravis CI統計を見せて

対象がユーザーか組織か、GitHub上のID、リポジトリの総数と稼働中の数、直近アクティブなリポジトリごとの最終ビルド状況(合格・失敗・ビルド未実行)が返ります。複数リポジトリを横断で見たいとき、リポジトリごとにtravis_getBuildInsightsを呼ぶより早く全体像がつかめます。

travis_getServiceStatusは、APIやビルド処理、通知など各コンポーネントの稼働状況、進行中のインシデント、予定されているメンテナンスの有無を返します。

ビルドを動かす3ツールに確認を挟む

読み取りの7つは何度呼んでも害がありませんが、travis_triggerBuild・travis_restartBuild・travis_cancelBuildは実際にCIの時間を使い、動いているビルドを止めます。Claude Codeの権限ルールは、MCPツールをmcp__<サーバー名>__<ツール名>の形で指定できます。上の手順でサーバー名をtravisにしているなら、次のようにaskに入れると、この3つだけ呼ぶたびに確認が出ます。

{
  "permissions": {
    "ask": [
      "mcp__travis__travis_triggerBuild",
      "mcp__travis__travis_restartBuild",
      "mcp__travis__travis_cancelBuild"
    ]
  }
}

これは.claude/settings.jsonなどの設定ファイルに書きます。別のサーバー名で登録した場合は、mcp__の後ろを合わせます。サーバーのツール全部を対象にするなら、mcp__travisだけの指定でも一致します。

導入前に確認しておきたいこと

mcp-travisはTravis CI GmbHが提供するものではなく、個人開発者が公開しているオープンソースプロジェクトです。リポジトリにはLICENSEファイルが無く、package.jsonにもライセンスの指定がありません。明示的なOSSライセンスが無い状態は、再配布や改変が許されるとは限らないことを意味します。社内で複製して使う、フォークして手を加えるといった運用を考えている場合は、先に作者へ問い合わせます。

package.jsonのバージョンは0.1.0です。ビルドのトリガーや停止まで操作できるトークンを渡すサーバーなので、実行前にソースを一読する価値があります。継続的なメンテナンス体制を前提にした公式サーバーとは性質が違います。

Travis CIそのものの課金にも触れておきます。公式のBilling FAQには、オープンソースを作っている場合、公開リポジトリのビルド専用の特別なOSSクレジットが月ごとに付与されることがあり、詳細はサポートチームへの問い合わせとあります。

よくあるつまずき

  • .org宛のURLを設定してしまう: 古いブログ記事や社内Wikiにはapi.travis-ci.orgが残っていることがありますが、廃止済みです。TRAVIS_API_URLは必ずhttps://api.travis-ci.comにします
  • トークンが通らない: 認証エラーになるときは、.comの設定ページで取得したトークンかどうかを確かめます
  • setup.shを実行したのにClaude Codeで使えない: スクリプトが書き換えるのはClaude Desktopの設定ファイルです。Claude Code CLIには前述のclaude mcp addを別途実行します
  • dist/index.jsが無いエラーになる: 登録するコマンドはビルド済みのファイルを直接起動します。登録前にnpm run buildを済ませます
  • /mcpで接続に失敗する: TRAVIS_API_TOKENが空だとサーバーが起動直後に終了します。登録時の--envにトークンを渡したかを見直します

まとめ

mcp-travisの持ち味は、ビルドの比較と最適化提案までClaude Codeに任せられる点です。個人メンテナンスでLICENSEも無いため、まず読み取りの7ツールで試し、書き込みの3ツールにaskを掛けてから広げる順があります。

MCPサーバーの追加構文やスコープの使い分けはClaude Code MCP設定ガイドにあります。Jenkinsを使っている場合はJenkinsのMCP連携、他のCIサービスとの機能差はCircleCI/Buildkite/Jenkins MCP比較で確認できます。

この記事を共有:XはてブLinkedIn