Carrick について
Carrickは、AIエージェントやIDE向けのTypeScriptコードベース分析ツールです。モノレポや複数リポジトリのサービスを索引化し、MCP、LSP、CIを通じてコード検索や契約確認、変更影響の検査を提供します。
主な機能
- 01複数のTypeScriptリポジトリとサービスを索引化
- 02関数の意図から既存実装を検索
- 03サービス間の呼び出しとAPI契約を追跡
- 04利用側と提供側の型の互換性を確認
- 05CIとIDEで変更リスクを報告
活用シーン
- 01API変更前に影響を受ける呼び出し元を特定
- 02再利用できる既存関数をエージェントに探させる
- 03プルリクエストでサービス契約の不一致を検出
MCP 対応
Carrickは、意図検索、呼び出し元の検索、サービスグラフ、型互換性の確認などを行う構造化ツールとして、索引をMCPエージェントに公開します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://api.carrick.tools/mcpclaude mcp add --transport http carrick-tools-carrick https://api.carrick.tools/mcp{"mcpServers":{"carrick-tools-carrick":{"type":"http","url":"https://api.carrick.tools/mcp"}}}Cursor で開く{"servers":{"carrick-tools-carrick":{"type":"http","url":"https://api.carrick.tools/mcp"}}}VS Code で開く{"mcpServers":{"carrick-tools-carrick":{"type":"http","url":"https://api.carrick.tools/mcp"}}}{"mcpServers":{"carrick-tools-carrick":{"serverUrl":"https://api.carrick.tools/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Carrick
AI エージェントと IDE 向けの TypeScript コードベースインテリジェンス。
フルスタックや複数のサービスにまたがるコードベースで作業するコーディングエージェントは、既存のヘルパーを日常的に作り直し、古い型定義を信用し、誰が利用しているかを知らずに API コントラクトを変更してしまいます。
Carrick は、モノレポ内にあるか複数のリポジトリに分散しているかを問わず、フロントエンドアプリからバックエンドサービスまで、TypeScript エコシステム全体をインデックス化することでこの問題を解決します。TypeScript コンパイラーと深く連携し、すべてのルート、型、サービス間呼び出しを追跡しながら、関数の振る舞いを記録します。これにより、エージェントは名前ではなく意図で検索し、実際のアーキテクチャに基づいて作業できます。
AI エージェントには MCP、IDE には LSP を通じて提供される Carrick により、モデルは新しいコードを生成する前に、既存のエンドポイントやユーティリティを確認できます。スキャナーはソースコードを公開しており、CLI または CI パイプラインから実行できます。Free プランも含まれているため、すぐに安全性の高いエージェントワークフローを構築できます。
はじめに
npm install -g carrick
carrick init
carrick init でサインインし、インデックス化するリポジトリを選択して、エージェントを接続します。次に、エージェントが各リポジトリの carrick.json を作成し、初回スキャンを実行します。詳しくはクイックスタートをご覧ください(Node 24 以降が必要です)。
1 つのインデックス、3 つの利用方法
エージェントから既存のコードを検索し、エディターでライブコントラクトを確認し、プルリクエストで破壊的変更を検出できます。
エージェントで
すでにあるもの、エンドポイントの構造、変更によって影響を受ける利用者について、AI アシスタントに完全なコンテキストを提供します。Carrick は各関数を実際の動作に基づいてマッピングするため、エージェントは既存の実装を見つけて活用できます。ローカルにチェックアウトしていないリポジトリでも利用できます。エンドポイントの型は、それを公開するサービスの TypeScript コンパイラーから直接取得されます。
Claude Code、Cursor、Windsurf、Codex を含む、MCP 互換のあらゆるエージェントで動作します。
エディターで
IDE を離れることなく、サービス間のコントラクトを確認し、関連するファイル間を移動できます。コードがディスク上にある場合、「定義へ移動」でサービス呼び出しからハンドラーへ直接移動できます。また、Code Lens にはローカルインデックス内のすべての呼び出し元がインラインで表示されます。フロントエンドの呼び出しとバックエンドのハンドラーに不整合が生じると、Carrick は型の不一致をエディターのネイティブ診断として表示します。
Visual Studio Marketplace と Open VSX から入手できるほか、標準の LSP サーバーとして実行することもできます。
プルリクエストで
同じインデックスを CI に導入して、コントラクトのリスク、重複作業、気づきにくいバージョンのずれを検出します。プロデューサーとコンシューマーに不整合が生じると、プロトコルを問わず、マージ前に Carrick が不一致箇所をプルリクエスト上に直接示します。また、サービス間の依存関係のバージョンも確認し、競合するパッケージ更新を早期に検出します。
スキル
Carrick には、エージェントでよくある4つの失敗、つまり別のサービスの呼び出し元を壊してしまうこと、既存のコードを再実装してしまうこと、別のサービスの古い型のコピーを信頼してしまうこと、コードベース全体に及ぶ変更箇所を見落としてしまうことに対処するスキルが用意されています。それぞれのスキルは Carrick のインデックスから回答を得ます。carrick init を実行すると、.claude/skills/ と .agents/skills/ にインストールされます。
| スキル | 使用するタイミング | 返される内容 |
|---|---|---|
carrick-impact | ルート、ハンドラー、レスポンスの形状、イベント、共有関数を変更または削除する前や、「これを呼び出しているのは誰?」と尋ねるとき | 変更しようとしているコードに依存するものをすべて、それぞれのファイルと行、および各コンシューマーの型判定とともに返します |
carrick-reuse | 関数を追加または変更したタスクの最後や、「これはすでに存在する?」と尋ねるとき | 新しい関数を関数インデックス全体と比較し、プロジェクト内で同じものが二重に作られている箇所を返します |
carrick-drift | リクエストまたはレスポンスの型を変更する前や、互換性判定で示された問題の場所がわからないとき | プロデューサーの型、各コンシューマーの呼び出し箇所で期待される型、保存された判定を、操作ごとに並べて返します |
carrick-census | 「X を行う箇所をすべて探して」という質問をするとき | 1つの概念を表す2種類の表現で一致した箇所をすべて、最後までページをめくって探し、受領記録とともに1つのリストにまとめます |
エージェントに質問する
- 「各サービスで webhook の署名を処理している関数はどれですか?」
- 「メールアドレスでユーザーを重複排除している箇所はどこですか?」
- 「
/api/usersを呼び出しているのは何で、各呼び出し元はどのレスポンスの形状を期待していますか?」 - 「レート制限エラー時に再試行する関数をすべて表示してください。」
MCP ツール
MCP エンドポイントは、エージェントが直接呼び出せる構造化ツールとしてインデックスを公開します。MCP tools リファレンスでは、各ツールのパラメーターとレスポンスを説明しています。
| ツール | 目的 |
|---|---|
search_by_intent | 各関数の意図と平易な英語のクエリを照合して、関数を検索します |
find_similar | これから書くコードや、プロジェクト内ですでに重複しているコードに類似する関数を探します |
list_function_intents | サービスまたはファイルごとに、インデックス化された関数と意図を1ページずつ閲覧します |
get_project_map | サービス、コントラクト、未照合の呼び出しを簡潔にまとめたプロジェクトマップを表示します |
list_projects | ワークスペースのプロジェクトと、それぞれに接続されたリポジトリを一覧表示します |
list_services | プロジェクトのサービスを、エンドポイント、呼び出し、関数の件数とともに一覧表示します |
get_service_graph | 未照合の呼び出しと孤立したエンドポイントを含む、サービス間の呼び出しグラフを表示します |
get_operation | メソッドとパスを指定して、ある操作を提供する側と呼び出す側を探します |
get_callers | プロジェクト内のあらゆる場所から関数を呼び出す側を探します |
get_api_endpoints | HTTP、GraphQL、WebSockets、pub/sub にわたるサービスの操作を一覧表示します |
get_endpoint_types | TypeScript コンパイラーによる解決結果として、エンドポイントのリクエスト型とレスポンス型を読み取ります |
get_type_definition | 名前付きの型定義を解決し、展開された TypeScript を返します |
check_compatibility | コンシューマーとプロデューサーの互換性を確認し、各呼び出しの型判定を返します |
get_service_dependencies | 1つのサービスまたはプロジェクト全体について、npm 依存関係とバージョンの競合を読み取ります |
list_external_calls | SDK 呼び出し、外部ドメイン、環境変数の URL など、外部ターゲットへの送信呼び出しを一覧表示します |
get_contract_pair | 操作ごとに、コンシューマーとプロデューサーの型を比較します |
scaffold | Carrick のセットアップファイル(ワークフロー、Carrick スキル、carrick.json、Claude Code フック)を生成します |
インデックスを最新の状態に保つ
GitHub Action は、main へのプッシュごとに各リポジトリのインデックス部分を更新します。CI で読み取り専用として実行されるため、保存が必要な API キーはありません。
name: Carrick
on:
push:
branches: [main]
pull_request:
branches: [main]
permissions:
id-token: write
contents: read
jobs:
carrick:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: carrick-tools/carrick@v1
インデックスの構築では、オンデマンドの再スキャン、依存関係のインストール、モノレポのセットアップを含むワークフロー全体を説明しています。
ドキュメント
ライセンス
Carrick には無料プランがあり、有料プランは料金ページでご確認いただけます。このリポジトリのスキャナーは、Elastic License 2.0に基づいてソースを利用できます。Copyright (c) 2026 Far Harbour B.V.
開発
ビルド、テスト、コントリビューションの規約については、AGENTS.mdをご覧ください。
cargo test
cargo fmt
cargo clippy
各コミットの前にフォーマットとテストを実行するには、任意の pre-commit フックをインストールしてください。
./scripts/install-hooks.sh
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
