CostAffective-MCP について
CostAffective-MCP(CostWise)は、AI コーディングアシスタントにコード検索、シンボル検索、呼び出し関係、参照追跡を提供するローカル MCP サーバーです。ローカルインデックスと stash、recall、remember ツールにより、長いセッションでのコンテキスト消費とプロンプトキャッシュのコストを抑えます。
主な機能
- 01Tree-sitter と SQLite によるローカルシンボルインデックス
- 02コード検索、シンボル検索、関数本体の取得
- 03事前計算された参照と呼び出し元の検索
- 04stash_context による大容量出力の短いハンドルへの退避
- 05remember と recall による重要事項の保存と取得
- 0611 種類のプログラミング言語に対応
活用シーン
- 01大規模リポジトリで定義と呼び出しチェーンを素早く特定する
- 02長いビルドログを退避させ、必要な行だけを取り出す
- 03長時間のコーディングセッションでアーキテクチャ上の決定事項を保持する
MCP 対応
本プロジェクトは MCP サーバーであり、search_code、find_symbol、read_symbol、remember、stash_context、recall などのツールを MCP クライアントに公開し、instructions フィールドでセッションの指針を伝えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CostWise — MCP
探索を減らし、記憶を増やし、コンテキストの持ち運びを減らすコーディングエージェント。
curl -fsSL https://raw.githubusercontent.com/okyashgajjar/costwise-mcp/main/install.sh | bash
Linux、macOS、またはWindows(WSL経由)で実行するコマンドは1つだけです。OSを検出し、必要に応じてGoをインストールして、ソースからビルドし、AIコーディングクライアントに接続します。
このリポジトリにスターを付けてください — CostWiseをより多くの人に見つけてもらう助けになります。
CostWise なし ▶ 動画を見る |
CostWise あり ▶ 動画を見る |
コーディングエージェントは経験豊富なエンジニアのように振る舞うべきです
経験豊富なエンジニアは、コードベースに取り組むとき、次のようなことはしません。
- 質問に答えるたびに、同じファイルを読み直す。
- 10分前に見つけたシンボルを、もう一度探し直す。
- 後で必要になるかもしれないからと、5,000行のビルドログを頭の中に抱え込む。
- あらゆる会話の細部をいつまでも持ち続ける。
何がどこにあるかを覚え、必要なものだけを開きます。ファイルではなく、事実を頭に留めます。
ほとんどのAIコーディングエージェントは、逆のことをします。同じリポジトリを何度も調べ直し、ファイル全体をコンテキストに流し込みます。会話ウィンドウは膨らみ続け、ターンのたびにコストが高くなります。答えが難しいからではなく、ウィンドウ内のそれ以外のすべてを読み直してキャッシュし直す必要があるからです。
CostWiseは、コーディングエージェントを経験豊富なエンジニアのように振る舞わせるローカルのMCPサーバーです。リポジトリに高速かつトークン予算を考慮してアクセスできるようにし、小さな事実を見つけるためにファイル全体を読まなくて済むようにします。
CostWiseの解決方法
MCP経由で接続するツールは、クライアントがキャッシュする方法やタイミングを制御できません。キャッシュのブレークポイントやTTLはクライアントが決めます。サーバーが制御できるのは、ただ1つです。
最初に常駐コンテキストウィンドウに入るトークン数をどれだけ抑えられるか。
これを小さくすれば、コストはどちらも下がります。ウィンドウが小さいほど各ターンでの読み取りコストが下がり、キャッシュが無効になったときの書き換えコストも下がります。CostWiseはこの目標のために4つのことを行います。
1. ファイルではなく、ローカルインデックスから回答する
CostWise は Tree-sitter を使ってリポジトリを一度解析し、シンボル、参照、呼び出しエッジをローカルの SQLite インデックスに保存します。「これはどこで定義されているか」「これは誰が呼び出しているか」「これは何から参照されているか」といったナビゲーションに関する質問には、ソースファイルを大量に出力するのではなく、わずかなトークン数でインデックスから回答します。
結果は、質問の種類に合ったサイズに圧縮されたスコープです。モデルにはファイル全体ではなく場所を、モジュール全体ではなく実装本体を、grep の出力ではなく呼び出し元の一覧を渡します。
2. 事実を繰り返すのではなく、記憶する
remember ツールは、判断、エントリーポイント、注意点などの小さく永続的な事実を、リポジトリごとのストアに保存します。recall ツールは、後でその事実を取得します。モデルが各ターンで再導出したり再貼り付けしたりする事実を一度だけ書き留め、関連する場合にのみ読み戻します。
3. 大きな出力をインラインで貼り付けず、退避させる
stash_context ツールは、ファイル、コマンド出力、テストログなどの大きなデータを会話の外に退避させ、短いハンドルを返します。すべての内容はディスク上に残り、復元できます。recall ツールは、トークン予算内で、クエリに一致する部分だけを取り出します。
5,000 行のビルドログをインラインで貼り付けると、セッションの残りの各ターンで再読込され、キャッシュに再書き込みされる可能性があります。退避させれば、約 20 トークン(ハンドル)のコストで済み、必要な部分だけが取り出されます。
4. モデルに上記のすべてを使わせる、セッションを認識するスキル
小さなガイダンス(約 275 トークン)が、MCP プロトコルの instructions フィールドを通じて、接続されたすべてのエディターに配信されます。セッションごとに一度、効率的なワークフローをモデルに教えます。大きな出力は stash_context に回し、永続的な事実は remember で保存し、ファイルを読み込むよりも対象を絞った取得を優先します。
また、ネイティブの Claude Code スキル、AGENTS.md エントリー、またはそれらを読み取る任意のエディター用のルールファイルとしてインストールすることもできます。すべての配信方法は、同じ正規ソースを使用します。
サポート対象言語
CostWise は Tree-sitter AST パーサーを使って11 言語をインデックス化します。シンボル定義、参照、呼び出しエッジはすべて事前計算され、ローカルの SQLite インデックスに保存されます。
| 言語 | ファイル拡張子 | パーサー |
|---|---|---|
| Go | .go | ネイティブ(専用) |
| Python | .py | ネイティブ(専用) |
| JavaScript | .js、.jsx、.mjs | ネイティブ(専用) |
| TypeScript | .ts、.tsx | ネイティブ(専用) |
| Rust | .rs | Tree-sitter |
| Java | .java | Tree-sitter |
| C | .c、.h | Tree-sitter |
| C++ | .cpp、.cc、.cxx、.hpp、.hh | Tree-sitter |
| C# | .cs | Tree-sitter |
| Ruby | .rb | Tree-sitter |
| PHP | .php | Tree-sitter |
Go、Python、JavaScript、TypeScript では、より詳細な解析ができる専用の抽出器を使用します。残りの 7 言語では、Tree-sitter の共通規約に基づく、汎用の仕様駆動型抽出器を使用します。すべての言語で、シンボル、参照、呼び出しエッジ、全文検索を利用できます。
インストール
インストール
プラットフォーム別の手順を含む完全なインストールガイド:costwise-mcp.vercel.app/docs/install
クイックインストール(Linux/macOS/WSL 経由の Windows)
推奨方法は、次のコマンドを 1 つ実行するだけです。
curl -fsSL https://raw.githubusercontent.com/okyashgajjar/costwise-mcp/main/install.sh | bash
スクリプトがすべて自動で行います。
- Windows では Git Bash/MSYS を検出し、自動的に WSL 経由で実行します
- Go を確認し、インストールされていない場合はインストールします
- C コンパイラー(CGO の依存関係)を確認し、インストールされていない場合はインストールします
- リポジトリをクローンし、ソースからビルドします
/usr/local/bin/costwiseにインストールします- AI コーディングクライアントを検出し、接続するクライアントを確認します
- 選択したクライアント向けに MCP を設定します(
--no-skillを指定しない場合はセッションスキルもインストールします)
Windows(ネイティブ PowerShell)
すでに Go と gcc をお持ちの場合を除き、推奨しません。手動でビルドしてください。
git clone https://github.com/okyashgajjar/costwise-mcp.git
cd costwise-mcp
$env:CGO_ENABLED=1
go build -o costwise.exe ./cmd/costwise/
または、推奨方法である WSL をインストールしてください(Windows 10 2004 以降/Windows 11)。
# In PowerShell as Administrator:
wsl --install
# Then in WSL:
curl -fsSL https://raw.githubusercontent.com/okyashgajjar/costwise-mcp/main/install.sh | bash
macOS/Linux(手動ビルド)
Go 1.25 以降と C コンパイラーが必要です(CGO は必須です。以下のビルドに関する注意事項を参照してください)。
git clone https://github.com/okyashgajjar/costwise-mcp.git
cd costwise-mcp
CGO_ENABLED=1 go build -o costwise ./cmd/costwise/
sudo mv costwise /usr/local/bin/
costwise --version
利用できる機能
CostWise は 10 個の MCP ツールを提供しており、次の 3 つのカテゴリに分類されます。
検索ツールは、ファイルを読み取る代わりに、事前構築されたインデックスから質問に回答します。
search_code— 自然言語の質問によるセマンティック検索。find_symbol— シンボルの定義箇所を特定します。read_symbol— シンボルの実装全体を返します。find_references— 事前計算されたシンボルのすべての使用箇所を返します。find_callers— 指定した関数を呼び出す関数を特定します。
メンテナンスツールは、インデックスを最新の状態に保ちます。
get_repository_summary— トークン予算に合わせたリポジトリの概要を返します。モジュール単位で詳細を確認できます。index_repository— 手動で再インデックスを実行します(通常は自動ウォッチャーが処理します)。
コンテキスト制御ツールは、大きなコンテンツや長期的に保持する情報がコンテキストウィンドウを圧迫しないようにします。
remember— 事実を繰り返しインラインで記述する代わりに、一度だけ保存します。stash_context— 大きなデータを小さなハンドルの背後にあるコンテキスト外へ退避します。recall— 予算の範囲内で、クエリに一致する部分だけを取り出します。
ツール一覧 — 各ツールの目的と使い方
スキーマと使用例を含むインタラクティブなツール一覧:costwise-mcp.vercel.app/tools
検索ツール
search_code
ネイティブの Bluge 逆引きインデックスと Tree-sitter を利用した、リポジトリのセマンティック検索です。
理由:「キャッシュはどこに実装されていますか?」という自然言語の質問には、モデルがファイルを 1 つずつ開くためのファイル一覧ではなく、関連するスコープを直接返すべきです。新しい Bluge インデックスは、AI による処理負荷なしで、高速な BM25/TF-IDF スコアリング、あいまい一致、同義語の展開をネイティブに提供します。
例:
Where is caching implemented?
find_symbol
シンボルの定義箇所を検索します。
理由:「X はどこで定義されていますか?」は、最もよくあるナビゲーションの質問です。必要なのはファイルではなく、定義箇所です。
例:
Find UserService
read_symbol
名前を指定して、シンボルの実装全体を返します。
理由:「X の仕組みを見せてください」という依頼には、ファイル全体のダンプや、エージェントが検索を繰り返して実装を再構築するのではなく、インデックスから行範囲を 1 回読み取って回答するべきです。
例:
Show the body of GetOrCreateRepoSession
find_references
シンボルのすべての使用箇所を検索します。
*理由:*影響分析(「この変更で何が壊れますか?」)には、ツリー全体をその場で grep せず、事前計算されたすべての使用箇所が必要です。CostWise は、標準の LSIF(dump.lsif)の取り込みに対応し、コンパイラーで検証された参照を 100% の精度で提供します。LSIF が利用できない場合は、Tree-Sitter による正規表現の近似検索に適切にフォールバックします。
例:
Where is UserService used?
find_callers
別の関数を呼び出す関数を検索します。
*理由:*呼び出しチェーンを理解するには、呼び出し元のファイルを読んでモデルが再構築するのではなく、保存済みの呼び出しエッジを読み取るべきです。
例:
What calls processPayment()?
注:search_code はすでに完全一致/全文検索の戦略を内部で使い分けているため、リテラル一致に別のツールは必要ありません。ファイルに対する生の正規表現検索には、ホストのネイティブなファイル検索を使用してください。
メンテナンスツール
get_repository_summary
リポジトリの概要をトークン予算内で表示します。言語、シンボル数の多い上位モジュール、主要なシンボルを確認できます。特定のディレクトリを詳しく調べるには module を、出力を制限するには budget(small/medium/large)を指定します。
理由: 通常、これはセッションで最初に呼び出されるため、キャッシュされたコンテキストに最初に取り込まれ、その後も保持される情報でもあります。以前のバージョンでは、ディレクトリごとに1行と、各ディレクトリの詳細な階層全体を制限なしで出力していました。大規模なモノレポでは数万トークンに達し、セッション全体でキャッシュされていました。現在は出力に厳しい上限を設けているため、リポジトリの規模にかかわらず出力は小さく保たれ、詳細は module で必要に応じて取得できます。
index_repository
リポジトリのインデックスを手動で更新または再構築します。通常、ウォッチドッグが自動でインデックスを再作成するため、必要ありません。
コンテキスト制御ツール(V2)
上記のキャッシュコストを抑えるためのツールです。大きなコンテンツや長期間保持する情報を、損失なく常駐ウィンドウの外に置けます。
remember
決定事項、エントリーポイント、注意点など、少量の長期間保持する情報をリポジトリごとのストアに保存します。関連するたびに会話内で繰り返す必要がなくなります。
理由: モデルがターンごとに再導出したり再貼り付けしたりする情報は、純粋なキャッシュのオーバーヘッドです。一度書き留め、必要なときに読み戻してください。
stash_context
ファイル全体、長いコマンドやテスト出力、生成されたレポートなど、大きなデータを会話の外に退避し、短いハンドルを取得します。データが失われることはありません。内容全体がディスクに書き込まれ、後から再取得できます。
理由: これはウィンドウサイズを抑える最も直接的な方法です。5,000行のログを会話に貼り付けると、セッション中の各ターンで再読され、キャッシュに再書き込みされる可能性があります。退避すれば、コストは約20トークン(ハンドル)で、必要な部分だけを取得できます。
例:5,000行のログを退避し、コンテキスト内には約20トークンだけを保持します。
recall
必要な分だけ取り出します。ハンドルで指定した保存済みデータの予算内の一部、または条件に一致する記憶済みの事実を取得します。全体を読み直す必要はありません。
理由:「必要なクエリで出力を取得する」ことが、このループの読み取り側です。stash_context と組み合わせると、巨大なデータを保存してから、トークン予算内でクエリに一致する行だけを recall できます。
ループ: stash_context(保存する)→ recall(必要な部分だけ取り出す)→ remember(長期的に役立つ結論を保持する)。内容はいつでも復元でき、コンテキストウィンドウは小さく保てます。
エンドツーエンドのワークフロー:CostWise の実際のセッション
最初のコマンドから最終回答まで、一般的なセッションの流れと、コンテキストウィンドウに取り込まれずに済むトークン数を確認しましょう。
ステップ 1 — インストールとインデックス作成
curl -fsSL https://raw.githubusercontent.com/okyashgajjar/costwise-mcp/main/install.sh | bash
# Script detects OS, installs Go + C compiler if needed,
# builds binary, detects AI coding clients, and writes MCP config.
# The server auto-indexes your repo on first connection.
ステップ 2 — コーディングセッションを開始する
AI エージェントが MCP 経由で CostWise に接続します。接続すると、エージェントは約 275 トークンのセッションスキルを受け取り、インラインで貼り付ける代わりに stash/recall/remember を使う方法を把握します。
ステップ 3 — ナビゲーションに関する質問をする
ファイル全体を出力する代わりに、エージェントは次を呼び出します。
find_symbol("UserService")
→ user_service.go:142
read_symbol("UserService")
→ func (s *UserService) Create(ctx context.Context, req *CreateRequest) (*User, error) {
// full body returned, not the whole file
}
コスト:約 50 トークンです。CostWise がない場合、エージェントは user_service.go(500 行以上になる可能性があります)をコンテキストウィンドウに読み込みます。
ステップ 4 — 影響範囲を追跡する
「validateInput を呼び出しているのはどれですか?」と尋ねると、エージェントは次を呼び出します。
find_callers("validateInput")
→ processPayment (payment.go:310)
→ validateOrder (order.go:88)
→ validateInput (validator.go:45)
コスト:約 30 トークンです。CostWise がない場合、エージェントは各ファイルを開き、呼び出し元を読み、呼び出しの連鎖を再構築します。数百トークンがコンテキストウィンドウに入ります。
ステップ 5 — テストを実行して失敗を確認する
テストが失敗し、2,000 行のログが出力されます。全体をインラインで貼り付ける代わりに、次を実行します。
stash_context(label="test-failure-output", content=<full 2000-line log>)
→ Stashed → abc123 (~28,000 tokens kept out of context)
ハンドルのコストはコンテキスト内で約 20 トークンです。ログ全体はディスク上に保存されます。
ステップ 6 — 失敗を調査する
recall(source="abc123", query="FAIL|panic|error")
→ test_service_test.go:42: TestCreateUser FAILED
expected: 201, got: 500
error: database connection refused
コスト:約 40 トークン(一致した行のみ)です。CostWise がない場合、エージェントは 2,000 行のログ全体を再読込するか、再度貼り付けます。
ステップ 7 — 見つけたことを記憶する
remember(key="db-conn-fix", fact="Database connection refused in tests — check DB_HOST env var in .env.test")
→ Remembered "db-conn-fix"
コストは約 20 トークンで、セッションの残りの期間と今後のセッションにわたって保持されます。
ステップ 8 — 後で事実を呼び出す
recall(query="db fix")
→ db-conn-fix: Database connection refused in tests — check DB_HOST env var in .env.test
修正方法を再導出する必要はありません。コストは約 15 トークンです。
まとめ
| ステップ | CostWise なし | CostWise あり |
|---|---|---|
UserService を探す | 500+ トークン(ファイル全体) | 約 15 トークン(場所) |
| 実装を読む | 500+ トークン(ファイル全体) | 約 40 トークン(本体のみ) |
| 呼び出しの連鎖を追跡する | 300+ トークン(複数のファイル) | 約 30 トークン(事前計算されたエッジ) |
| テストログを調査する | 2,000+ トークン(インラインで貼り付け) | 約 20 トークン(ハンドル)+約 40 トークン(recall) |
| 修正方法を記憶する | 次回に再導出 | 約 20 トークン(保持) |
| コンテキストウィンドウの合計コスト | 約 3,300+ トークン | 約 165 トークン |
セッション全体では、これらの節約が積み重なり、常駐コンテキストウィンドウ内のトークンを 80% 以上削減できます。さらに、その後の各ターンでキャッシュ読み取りのコストも減少します。
トークン効率のベンチマーク
サイズの異なるリポジトリで、CostWise サーバーの「正直で生の」トークンフットプリントをテストします。
小規模リポジトリ(約 50 ファイル)
- リポジトリ全体を単純に読み込む場合のコンテキストコスト:約 12,500 トークン
- get_repository_summary (small):286 トークン(0.01s)
- search_code (exact match):4 トークン(0.31s)
- read_symbol:24 トークン(0.01s)
- 単純な読み込みと比較した平均トークン節約率:99.16%
中規模リポジトリ(約 250 ファイル)
- リポジトリ全体を単純に読み込む場合のコンテキストコスト:約 62,500 トークン
- get_repository_summary (small):528 トークン(0.04s)
- search_code (exact match):4 トークン(0.60s)
- read_symbol:24 トークン(0.03s)
- 単純な読み込みと比較した平均トークン節約率:99.70%
大規模リポジトリ(約 1000 ファイル)
- リポジトリ全体を単純に読み込む場合のコンテキストコスト:約 250,000 トークン
- get_repository_summary (small):517 トークン(0.18s)
- search_code (exact match):4 トークン(4.38s)
- read_symbol:24 トークン(0.37s)
- 単純な読み込みと比較した平均トークン節約率:99.93%
最適なケース: コンテキストの上限(例:200k トークン)により、ファイル全体をそのまま読み込むことが不可能、または非常にコストがかかる、大規模なコードベース(500 ファイル超)です。CostWise は、リポジトリのサイズにかかわらず、構造の理解を 500 トークン未満に圧縮します。
適さないケース: 小さなスクリプトや 1〜3 ファイルのプロジェクトです。コードベース全体が 2,000 トークン以内に余裕で収まる場合、Tree-Sitter によるインデックス作成や SQLite データベースの作成にかかるオーバーヘッドはまったく不要です。その場合は、ファイルを直接読んでください。
セッションスキルによって、モデルがこれらすべてを自動的に使う仕組み
導入の理由: 上記のコンテキスト制御ツールは、モデルが実際に使わなければ役に立ちません。デフォルトのままでは、モデルはファイル全体をそのまま貼り付けてしまいます。costwise-session スキルは、セッションごとに一度だけ、無駄のないワークフローをモデルに教える小さなセッション認識ガイダンスです。その後は自動的に適用され、大きな出力は stash_context / recall を通して扱い、長期保存する事実は remember で保存し、ファイル全体を読むよりも対象を絞った取得を優先します。
意図的に非常に小さく(約 275 トークン)作られています。これはセッションごとに一度だけ発生する固定コストであり、大きなデータの塊がコンテキストウィンドウに入るのを一度でも防げば、十分に元が取れます。
継続的な手間をかけず、どこでも使えるよう、次の 2 つの方法で提供されます。
-
すべてのエディターで自動的に適用されます。 MCP サーバーは、プロトコルの
instructionsフィールドを通してガイダンスを通知します。接続時にすべての MCP クライアントが読み込みます。Claude Code、Cursor、Codex、OpenCode、Antigravity など、MCP 互換のクライアントすべてが対象です。設定は不要で、エディターごとのファイルも必要ありません。 -
ネイティブの Claude Code スキルとして利用できます。
costwise installを実行すると、~/.claude/skills/costwise-session/SKILL.mdも書き込まれます(--no-skillで無効にできます)。直接管理することもできます。costwise skill install # write the skill (global) costwise skill install --local # write it into the current project only costwise skill uninstall # remove it costwise skill print # print the guidance for manual placement in any tool
独自のルールファイルや指示ファイルを読み込むエディター向けには、costwise skill print を実行すると、貼り付け用のガイダンスが出力されます。どちらの提供方法も、同じ単一の信頼できる情報源を使用します。
アーキテクチャ
コンポーネントの詳細を掘り下げられるインタラクティブなアーキテクチャ図:costwise-mcp.vercel.app/architecture
エンタープライズ対応機能:
- コールドスタート時のレイテンシーゼロ: GitHub Action(
costwise-action)と連携して、CI/CD 上で SQLite のcache.dbを事前計算します。ローカルで起動すると、CostWise は事前計算されたアーティファクトを即座にダウンロードします。 - チームで共有するキャッシュ:
COSTWISE_PG_URLを設定して、ローカルの SQLite の代わりに Postgres バックエンドに接続します。開発者 A が一時保存した内容や記憶させた事実を、開発者 B もすぐに利用できます。 - ポリシーエンジン: 一元管理された
costwise-architecture.yaml設定に対して、costwise validateによる AST ベースの厳格なアーキテクチャ境界チェックを実施します。
AI Client (MCP Host)
│
├── stdio transport ──► costwise serve (MCP Server)
│ │ advertises session guidance via the MCP instructions field
│ │
│ ├── Session Manager (per-repo, persistent across tool calls)
│ ├── Repository State Manager
│ ├── Watchdog
│ ├── Shared Indexer
│ │
│ ├── Tree-sitter Parser
│ ├── Symbol Index
│ ├── Reference Index
│ ├── Call Graph Index
│ │
│ ├── search_code ───────────► tree-sitter AST match
│ ├── find_symbol ───────────► SymbolDB lookup
│ ├── read_symbol ───────────► SymbolDB body read
│ ├── find_references ───────► SymbolDB reference search
│ ├── find_callers ──────────► SymbolDB call graph
│ ├── get_repository_summary ► KnowledgeStore (token-budgeted)
│ ├── index_repository ──────► SharedIndexer
│ ├── remember ──────────────► per-repo durable facts
│ ├── stash_context ─────────► large blobs parked out of context
│ └── recall ────────────────► query-scoped read-back
リポジトリごとの状態(インデックス、一時保存データ、事実)はすべて、そのリポジトリのローカルインデックスディレクトリに保存されるため、別々のリポジトリが互いのデータを上書きすることはありません。
コマンド
| コマンド | 説明 | | -------------------------------- | ---------------------------------------- | | `costwise install` | 対話形式でインストールします | | `costwise install --all` | 検出されたすべてのクライアントを設定します | | `costwise install --target` | 特定のクライアントを設定します | | `costwise install --build` | インストール前にソースからビルドします | | `costwise install --repair` | インストールを修復します | | `costwise install --no-skill` | セッションスキルを使わずにインストールします | | `costwise skill install` | costwise-session スキルをインストールします | | `costwise skill uninstall` | セッションスキルを削除します | | `costwise skill print` | 手動設定用のガイダンスを表示します | | `costwise doctor` | インストールを検証します | | `costwise serve` | MCP サーバーを起動します | | `costwise validate` | リポジトリのアーキテクチャがポリシーに適合するか検証します| | `costwise uninstall` | MCP の設定を削除します |
アンインストール
- MCP クライアントの設定を削除します(これによりセッションスキルも削除されます)。
costwise uninstall --all
- バイナリを削除します。
Linux / macOS:
rm -f "$(command -v costwise)"
Windows:
Remove-Item (Get-Command costwise).Source -Force
保存場所 — ディスク上の各データの場所
CostWise のデータはすべて 2 か所に保存されます。必要に応じて、場所の確認や削除を行ってください。
リポジトリごとの保存場所(.mycli-fts/)
インデックス化された各リポジトリのルートに作成されます。そのリポジトリ固有のデータがすべて格納されます。
| パス | 保存されるデータ | 削除しても安全ですか? |
|---|---|---|
.mycli-fts/stash/ | stash_context で退避した blob と manifest.json | はい。保存した退避データが失われます。 |
.mycli-fts/session_facts.json | remember ツールで保存した永続的な事実 | はい。保存した事実が失われます。 |
.mycli-fts/symbols_*.db | Tree-sitter のシンボルインデックス(定義、参照、呼び出し) | はい。次のセッションで再インデックスが行われます。 |
.mycli-fts/fts_*.db | 全文検索インデックス | はい。次のセッションで再インデックスが行われます。 |
.mycli-fts/cache*.db | 最近の検索結果の LRU キャッシュ | はい。一時的なパフォーマンスキャッシュです。 |
リポジトリのすべてのデータを消去するには、次を実行します。
rm -rf /path/to/your/repo/.mycli-fts
インデックスは次のセッションで自動的に再構築されます。
グローバルな保存場所(/tmp/)
すべてのリポジトリで共有されます。既知の落とし穴です。リポジトリごとに分離されていないため、互いに上書きする可能性があります。
| パス | 保存されるデータ | 削除しても安全ですか? |
|---|---|---|
/tmp/repo_memory.db | セッションをまたいで保持される長期的なシンボルメモリ | はい。学習済みのシンボルが失われます。 |
/tmp/discovery_memory.db | セッションをまたいで保持される発見パターン | はい。学習済みのパターンが失われます。 |
rm -f /tmp/repo_memory.db /tmp/discovery_memory.db
貢献
バグ修正、新しい言語パーサー、より優れたリトリーバー、ドキュメント、ベンチマークなど、あらゆる貢献を歓迎します。
詳細はCONTRIBUTING.mdをご覧ください。
貢献者向けの主要ドキュメント:
- 信頼度と精度のスコアリング — 各検索ツールがスコアを付け、順位付けし、信頼度のしきい値を適用する方法を網羅した完全なガイドです。FTS、Tree-sitter、Grep、Reference、Call Graph、Architecture、Flow Graph、および Query/Answer Type 分類器の正確な数式、信頼度の上限、品質ゲート、判断ロジックを記載しています。
クイックスタート:
git clone https://github.com/okyashgajjar/costwise-mcp.git
cd costwise-mcp
CGO_ENABLED=1 go build ./...
CGO_ENABLED=1 go test ./...
取り組みやすい課題:
- 新しい言語用の Tree-sitter 文法を追加する
- 共有されている
/tmp/DB パスの上書き問題を修正する(リポジトリごとのパスが必要です) - 特定の回答タイプの圧縮を改善する
- リモートデプロイ用の SSE/HTTP トランスポートを追加する
- より優れたベンチマークを作成する
何から始めればよいかわからない場合は、ガイダンスを求める課題を作成してください。
開発
CGO は必須です。このプロジェクトは `go-sqlite3` と `go-tree-sitter` に依存しており、どちらも C バインディングを使用します。`CGO_ENABLED=0` でビルドすると失敗します。
git clone https://github.com/okyashgajjar/costwise-mcp.git
cd costwise-mcp
CGO_ENABLED=1 go build ./...
CGO_ENABLED=1 go test ./...
Ubuntu/Debian の場合:sudo apt install gcc libsqlite3-dev。macOS の場合:Xcode Command Line Tools。Windows の場合:MinGW-w64。
対応クライアントと設定方法
| クライアント | 設定場所 |
|---|---|
| Claude Code | ~/.claude.json、.mcp.json、または設定ファイル |
| Cursor | ~/.cursor/mcp.json またはワークスペースの MCP 設定 |
| OpenCode | opencode.json |
| Codex CLI | ~/.codex/config.toml |
| Antigravity | ~/.gemini/config/mcp_config.json |
| MCP 対応 | stdio トランスポート |
リポジトリの状態
存在する理由: モデルは、クエリ対象のインデックスが信頼できるかどうかを把握する必要があります。CostWise は 3 つの状態を追跡し、それに応じて動作します。
| 状態 | 意味 |
|---|---|
unindexed | 利用可能なインデックスがまだありません |
stale | 前回のインデックス作成後にファイルが変更されました |
ready | インデックスが作業ツリーと同期しています |
エージェントモードでは必要に応じて自動でインデックスを作成できます。対話モードでは、最初に確認を求めます。
ユースケース
詳細なユースケースの事例をご覧ください:costwise-mcp.vercel.app/use-cases
- AI コーディングエージェント — スコープ単位の圧縮された検索でトークン消費を抑え、大きなコンテンツをコンテキスト外に退避させることで、長時間のセッションも低コストに保ちます。
- 大規模なモノレポ — ディスクをスキャンする代わりに、SQLite インデックスをマイクロ秒単位で高速にクエリできます。また、リポジトリのサイズにかかわらず小さく保たれる、予算に応じた要約を利用できます。
- コードレビュー — 呼び出し元の階層をたどり、変更が及ぼす影響を監査します。
- リポジトリ監査 — ファイルの分布、言語の内訳、構造の要約を生成します。
- MCP 開発 — stdio プロトコル、fsnotify ウォッチャー、tree-sitter マッピング、MCP instructions フィールドのリファレンス実装です。
Doctor
costwise doctor で次の項目を確認できます。
- バイナリの存在と権限
- PATH からの参照可否
- 各クライアントの MCP 設定
- サーバーの起動
- リポジトリの状態
トラブルシューティング
| 症状 | 原因 | 対処方法 |
|---|---|---|
costwise: command not found | バイナリが PATH にありません | ~/.local/bin または /usr/local/bin を PATH に追加するか、絶対パスを使用します |
| サーバーが「disconnected」と表示される | バイナリがクラッシュしたか、見つかりません | costwise serve を直接実行して、エラー出力を確認します |
| クライアントにツールが表示されない | 設定の構文エラー | JSON を検証します:python3 -m json.tool ~/.claude.json |
CGO_ENABLED=0 でのビルド失敗 | go-sqlite3 と tree-sitter が CGO を必要とします | 常に CGO_ENABLED=1 を使用します |
| アクセスが拒否される | バイナリに実行権限がありません | chmod +x $(which costwise) |
| インデックスが古いようです | 前回のインデックス作成後にファイルが変更されました | index_repository を呼び出すか、自動ウォッチドッグを待ちます |
| スタッシュした blob が見つかりません | .mycli-fts/stash/ が削除されました | コンテンツを再度スタッシュします。古いハンドルは使えません |
| セッションスキルが動作しません | 古いクライアントでは MCP instructions フィールドがサポートされていません | 最新版のクライアントにアップグレードするか、costwise skill install でスキルを手動でインストールします |
まだ解決しない場合は、costwise doctor を実行し、その出力を添えて issue を作成してください。
対応プラットフォーム
Go 1.25 以降と C コンパイラーを備えたすべてのプラットフォームに対応しています。インストールスクリプト(install.sh)がツールチェーンのセットアップを自動的に行います。
- Linux amd64 / arm64
- macOS amd64 / arm64(Intel および Apple Silicon)
- Windows amd64
Linux amd64 および Windows amd64 向けのビルド済みリリースバイナリを利用できます。それ以外のプラットフォームは、インストールスクリプトによってソースからビルドされます。
詳細を見る
| リソース | リンク |
|---|---|
| ウェブサイトとインタラクティブツール | costwise-mcp.vercel.app |
| ベンチマークスイート全体 | costwise-mcp.vercel.app/benchmarks |
| 開発者向けドキュメント | costwise-mcp.vercel.app/docs/install |
| MCP ツールカタログ | costwise-mcp.vercel.app/tools |
| アーキテクチャガイド | costwise-mcp.vercel.app/architecture |
| よくある質問 | costwise-mcp.vercel.app/faq |
| ブログと研究 | costwise-mcp.vercel.app/blog |
| 代替製品との比較 | costwise-mcp.vercel.app/compare/codegraph |
コントリビューター
CostWise に貢献してくださった皆さん、ありがとうございます。
ライセンス
MIT
トークンを節約して、コーヒーを買いましょう。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。